Vue3 support

Hey!
Are there plans for a Vue3 compatible version? I didn't try it. But as far as I can tell, I would have to change some bits of the vue-design-system to build Vue3 components in this system.
✌

Hey @dionysiusmarquis,
Thank you for your request, we are working on it as we speak.
vue-design-system is based on vue-styleguidist 3. Which is outdated.
There is a version of vue-styleguidist coming up that will be compatible with Vue 3.
You can have a look at our progress in this issue:
https://github.com/vue-styleguidist/vue-styleguidist/issues/997
It's going slow because we are forced to create a new major version.
Since major versions are always painful, we are packing a few features and optimisations into it.
It is taking a little time, but is going to be awesome!


Limit max. sleep duration per loop iteration

max. sleep duration should be based on timeout, as for shorter timeouts, we should loop more often (like for web/API) vs. some long timeouts (for CLI/crons)

Sorry, it is not really clear to me what you are trying to achieve. Can you elaborate in your initial comment?

@willemstuursma if you set timeout to some "interactive time" like 30 seconds, we should not wait between next retry too much. On the other side, this PR increases the retry time up to 25 seconds for long timeouts/processes.
In other words, this PR improves interactivity for interactive applications and save resources when lock takes a lot of time to aquire (and is allowed to - never more than timeout / 120).

@willemstuursma please review this PR with my explanation and either merge or concretize your feedback I can address, thanks

@willemstuursma please review this PR with my explanation and either merge or concretize your feedback I can address, thanks

Hi @mvorisek.
Thank you for explaining what your code does. However, I am missing any clear advantages backed up by numbers (or even anecdotes).
You change is highly arbitrary, I feel that the goals it aims to achieve are already achieved by the existing exponential back off.
I cannot really phantom a situation where you would have so many competing threads that a polling interval > 500ms is required. IMHO, the underlying storage engines (Redis, memcached) can easily handle existing situations.

Hi @mvorisek.
Thank you for explaining what your code does. However, I am missing any clear advantages backed up by numbers (or even anecdotes).
You change is highly arbitrary, I feel that the goals it aims to achieve are already achieved by the existing exponential back off.
I cannot really phantom a situation where you would have so many competing threads that a polling interval > 500ms is required. IMHO, the underlying storage engines (Redis, memcached) can easily handle existing situations.


SnapKit is unable to generate privacy reports

SnapKit is unable to generate privacy reports

[ ] I have looked at the Documentation
[ ] I have read the F.A.Q.
[x] I have filled out this issue template.

When generating privacy reports through Xcode ->Organizer, SnapKit information cannot be seen

Info                    | Value                               |
-------------------------|-------------------------------------|
Platform               ios
Platform Version        13.0
SnapKit Version         5.7.1
Integration Method     cocoapods

The Privacy Report only includes the collected data types the app and it's SDK's collect. The descriptions of use of required reason API's and tracking information that is included in the manifests is never included in the privacy report. So Snapkit won't be in it.


Updating ObjectID to match current spec

The ObjectID class was missing two functions:
isValid

Documentation
Source Code

generate

Documentation
Source Code

thanks mate!


[MapEditor] Unable to select a tile when the map is moved in the lower right corner.

When the map is moved in the lower right corner, below it's original position, it's then impossible to select a tile.

Example:


Send file extension while downloading/uploading it

@tshemsedinov @belochub @nechaido  is it OK to send file extension while downloading/uploading files? It can be a return value in downloadCode() API method and can be sent to server as an argument in endChatFileTransfer() method, for example.

@lidaamber, may you please specify whether you are talking about chat file transfer or about file uploading/downloading with code (outside of chat)?

@belochub both of them

@metarhia/mobile @metarhia/jstp I think we need to change API for both to include file extension

@tshemsedinov, and what about this https://github.com/metarhia/Metarhia/issues/9#issuecomment-300917465:

Files uploaded not in chat will be stored at hd and we will give user a code to download; no additional info, no filename or date/time, no even file type, absolute anonymity: no user;

Are we supposed to store original filename or file extension on server from now on?

@belochub I am not expert in mobile platforms, so I supposed that file type can be autodetected from the beginning but if we need to transmit it explicitly it is not an issue for anonymity.

@tshemsedinov it's needed to choose application to open downloaded file properly.

@tshemsedinov @belochub's question was: "Should we store origial filename or not?"

@lidaamber @tshemsedinov what about magic numbers, wouldn't it be better to use them instead?

@nechaido yes, we can encode ext in file codes (last letter, for example)

@nechaido I'm not against of magic numbers in such a way.

@lidaamber what do you mean?

@lidaamber @tshemsedinov so we do not need API change

@nechaido so will the file code format be changed?

@lidaamber we do not need to, both java and swift  should provide tools for detecting file extension based on it's first bits.

@nechaido OK we can use such tools, but IMHO providing file type is easier.

@nechaido @lidaamber

we will not detect file type based on file first bytes (signature)
on uploading server generates code and and we will put file type info into code
we will not change contract and code format
but we will add additional description how to generate code and how to get file type from code

I propose:

use last letter to encode file type, G=gif, J=jpeg, P=png, S=svg, Z=zip, R=rar, 7=7zip, T=txt, D=pdf, H=html, A=avi, M=mp3, U=other/unknown
When downloading all files marked with U will be saved as *.dat

@tshemsedinov can I state that, due to our agreement earlier today, we will detect filetype based on first bits of file or first symbols of base64? It it is ok - please approve and close the issue.

@nechaido @lidaamber, we do not need multiple extensions and I believe that comparing first bytes with 10 signatires is not difficult gif, jpeg, png, svg, zip, rar, 7zip, pdf, mp3, avi. This solution is equal to extract file type from downloading code. So mobile implementation will be easy, not using third party complex libraries. In addition, it requires no changes in server implementation. So, it seems to me, that it will be best choice for us. What do you think?

@tshemsedinov I suppose we should ask @GYFK and @GreatAndPowerfulKing about https://github.com/metarhia/server/issues/27#issuecomment-304396006 too.

@tshemsedinov If I understand you correctly we will extract file type from the beginning of base64 string (e. g. "IVBOR…" means that it's png)?
And I'm not sure, that it's very good to restrict supporting file types list, because iOS (and Android as well, I think) can open any file if there is an appropriate app installed on the device.

We don't restrict file types, not listed types after downloading will be without extension or with .dat so user can choose an app to open it. @GreatAndPowerfulKing is it ok?

@tshemsedinov I don't know an app for iOS which may properly handle generic .dat file. So the only options for user will be to transmit file somewhere or to save it to iCloud Drive, but not open. In my opinion, it's ok. But it's up to you.

@GreatAndPowerfulKing maybe notes may store everything?

@tshemsedinov Yeah, store, but not open.

Default system preview for files with unknown extension provides only such options (just sharing):

There is no possibility to view file content.

@GreatAndPowerfulKing that's ok as of now, for first version

@tshemsedinov Okay. Will we support some other extensions in addition to ones you have specified earlier (gif, jpeg, png, svg, zip, rar, 7zip, pdf, mp3, avi)?

@tshemsedinov @GreatAndPowerfulKing I agree with the idea we need to discuss this topic, yet it is not the subject of this issue, so I propose to create a new one named:"Supported file types" and move the discussion there.

Reopened due to https://github.com/metarhia/server/issues/28#issuecomment-306466129.
Although I don't like the idea to send redundant information over the network, I agree with @lidaamber to do so, if it is easier to implement necessary functionality this way.

@tshemsedinov ping

@belochub will detect extension on the server

@tshemsedinov ok
@nechaido @belochub could you update API, please?

Closed via https://github.com/metarhia/server/commit/06925882f1644af50efb3825f9525f28fb2e4758.


Provide a normalized algorithm for compute lexical similar score

Same sentences can always get a "1" simirlar score like dense way but not a score less than 1 and change with different sentence content.
Different sentences can get an more even similar score distribution.

Same sentences results:

Different sentences results:

Thanks for your contribution!
This method may change the ranking list, so we need some time to conduct experiments to evaluate its performance.

Thanks for your contribution! This method may change the ranking list, so we need some time to conduct experiments to evaluate its performance.

This approach might be more explainable for applications compared to the original method, therefore it could perhaps be considered as an additional method, but not a replacement for the original one (depending on the results of your experiments).


Make the way configurable how hosting is kept alive

I'm currently trying to host on Linux and integrated into systemd as init system. The fixed default of Console.ReadLine() to keep the hosting running does not work well and I would like to change this in my application so I can react properly to SIGTERM on Linux. This PR adds an interface and the current default implementation to Hosting.
Within a web application, this default can be overridden by
services.AddInstance<IHostingKeepAlive>(new MyHostingKeepAlive());

Another scenario is notifying systemd that the process finished starting up. The cleanest solution is to acquire a D-Bus name.

This is the exact issue that I wanted to address with https://github.com/aspnet/XRE/issues/494.
Seems to me that hosting indeed needs to be configurable as this is probably something that will differ for each hosting platform...

@Tragetaschen can you please get this rebased on top of the dev branch?

Sure

Thanks for rebasing! We have a bot that checks for CLAs on PRs. Since this PR is pretty old, the bot did not analyze it.
Can you please close this PR and recreate it?

He's good to go. He's a regular in these here parts

:+1: then I'll merge this today

Here is a sample implementation when being hosted on Linux using systemd.

I would rename Hold to WaitForSignal or Wait

Also /cc @lodejard on this to see if he likes the interface

I was thinking about turning this into a Task-returning *Async method and reworking the shutdown-logic in Program.cs to

Use more using
Stop relying on Task.Run (which will move into the fallback default implementation with Console.ReadLine)
Simplify the Registered action to just a TCS' Task

That way, the error handing during shutdown can also be simplified.
I'd guess with the exception of Console.ReadLine, most of the Hold implementations will—like the systemd example—benefit from a Task based API.
Regarding the name of the method, I'm not happy either. The problem is that the interface and the method describe the same thing, one as a noun and the other using a verb. A "logical" choice would be KeepAlive[Async](), but that's weird. With a Task return value, this could be SetupAsync with a documentation that completing the returned Task will initial the shutdown.

I really like this change but I don't think it needs to be an entirely new service. Let's see what it would be like if a property was added to IApplicationLifetime of public Action ApplicationStarted {get;set;}
The ApplicationStarted is more of an event than a blocking or async method. The default Action should be the lines:
            ApplicationStarted = () =>
            {
                var ignored = Task.Run(() =>
                {
                    Console.WriteLine("Started");
                    Console.ReadLine();
                    appShutdownService.RequestShutdown();
                });
            }

An assignable action looks weird. Event? Also how do I make sure the application exists if any signal is tripped

I have implemented my sketch and updated the sample.
I do understand the tendency to not make this an interface. It's just for one method and the cost of documenting is non-trivial. But I think the alternatives will look weird when applied in an actual application:

Assigning an action indeed looks weird
An event is counterintuitive, because programmers learned not to spend too much time in an event handler. Here, the event handler defines the entire lifetime of the application.
It's hard to provide an implementation from a library

In the end, how the application keeps running is an orthogonal concept to anything else and I think this justifies an interface on its own.

@lodejard , @davidfowl can we please close on this and get a final design/solution? It is blocking the Nano Server runs...

Maybe I'm crazy, or just getting used to Lou, but I think I like the assignable action better too...
Although it would be nice if we had some sugar/overloads to simplify it down to just the inner real Action?:
appLifetime.WhenStarted(() =>
     {
          Console.WriteLine("Started");
          Console.ReadLine();
          appShutdownService.RequestShutdown();
     });

@Tragetaschen, Thanks for signing the contribution license agreement so quickly! Actual humans will now validate the agreement and then evaluate the PR.
Thanks, DNFBOT;


Add SECURITY.md

https://github.com/BinaryNinjaCyberSamurai/Poseidon-s-Trident/blob/main/SECURITY.md


Support for apns-collapsed-id

It appears that this package does not support the APNS feature apns-collapse-id. The apns2 library includes support as a kwarg to send_notification or send_notification_batch but that kwarg cannot be set via this package's _apns_send().
I don't have a fix available, just documenting that this feature appears to be missing. Thanks.

Whoops, I was looking at the wrong client library. Updated issue description.

Any updates on this?

@roshanr95 The PR is working for me in production. If you can run the tests & review my work, that could help get it included in a future release. Thanks.

Will this fix be included in an upcoming release? Would be very useful

This is fixed on master and will be present in the next release.


Implement switches: r & x

-r (Recurse)
-x (Exclude)

and -i - include (-i) and exclude (-x) are only used in combination with recursive (-r)


MGDOBR-595: fix openapi generation for enums

MGDOBR-595
PR owner checklist
Please make sure that your PR meets the following requirements:

[ ] Your code is properly formatted according to this configuration.
Run mvn clean verify -DskipTests so that imports are correctly set.
[ ] Your commit messages are clear and reference the JIRA issue e.g: "[MGDOBR-1] - $clear_explanation_of_what_you_did"
[ ] All new functionality is tested
[ ] Pull Request title is properly formatted: MGDOBR-XYZ Subject
[ ] Pull Request contains link to the JIRA issue
[ ] Pull Request contains link to any dependent or related Pull Request
[ ] Pull Request contains description of the issue
[ ] Pull Request does not include fixes for issues other than the main ticket

PR reviewer(s) checklist

[ ] Check if code and Github action workflows have been modified and if the modification is safe
[ ] If the modification is safe, add the safe to test label

How to trigger pipelines and use the bots:

Run the end to end pipeline
Annotate the pull request with the label: safe to test. If you want to run the pipeline again, remove and add it again.

Rebase the pull request
Comment with: /rebase.

@jomarko
I agree that we should follow the approach of this PR for all Enums that we serialise so that we can follow Java guidelines and have a different value during the serialisation

@danielezonca how can I check what enum is serialized and what is used just internally please? Is that just if some @Json annotation is present?

@danielezonca how can I check what enum is serialized and what is used just internally please? Is that just if some @Json annotation is present?

I don't think there is a simple way to do this check. I expect DTO to be well isolated in infra / models packages/modules but this is not enough to guarantee it. I would start with Enum where we are not following Java guidelines
The Json annotation is not mandatory as far as I remember

@jomarko shall we merge this?

\rebase

/rebase

@r00ta @kelvah is desperate for this fix.. could you please let him know when this is merged :+1:

As sono as CI Is green..sure :)


[nitro-protocol | rps] Remove circular dependency in ganage/deployer

Currently, there is a circular dependency in nitro-protocol and RPS.
RPS depends on nitro-protocol.
nitro-protocol/ganache/deployer.ts depends on RPS contracts.
This causes problems during build time as nitro-protocol is build/linted/ran before RPS.
The fix is to move the ganache/ functionality into a different package

Currently nitro-protocol/ganache/** (which I will refer to as contract-deployer) is responsible for deploying contracts across all projects to a single ganache instance.
The contract-deployer currently depends on built contracts from nitro-protocol and rps.  However to start rps we need a started ganache instance with the rps and nitro-protocol contracts deployed.
This creates a kind of circular dependency where contract-deployer depends on rps building the contracts and rps depends on contract-deployer to deploy the contracts. This would not get solved by moving contract-deployer to it's own package.
One possible solution suggested by @andrewgordstewart is separating out the rps contracts into  a separate package.  (And possible nitro-protocol contracts, if the contract-deployer is needed by nitro-protcol to run contract tests?)


Introduce a primitive types crate

Create an crate that holds primitive types used by the rust-bitcoin ecosystem.
bitcoin-primitives already exists on crates.io, use rust-bitcoin-primitives instead.
Include the WitnessVersion type.

Got some more time to go over it.

Flagging that this needs the name to be agreed upon: https://github.com/rust-bitcoin/rust-bitcoin/pull/1809#discussion_r1178552685

rust-bitcoin-primitives

NACK this name (unless it's temporary). rust- is not recommended by crate guidelines and may become illegal (I guess unlikely but why make it worse?). Also it's hard to understand the difference between bitcoin-primitives and rust-bitcoin-primitives.

Just curious, what's the advantage of including this crate as another workspace member instead of part of the rust-bitcoin organization?

@yancyribbens mainly allows us to update the API and then immediately use the new API in downstream crate. This way we can start testing out the new API sooner. It also has its own problems though - see: #1553

@apoelstra if merging is an option I think I'm quite capable of dealing with "weird C crap, alignment issues and synchronization and FFI" as you put it if it helps. But I suspect the main obstacle is the other maintainers don't want all the notifications from bitcoin? (Which I totally understand. I'm subbed to LDK out of curiosity and it's crazy.)

@Kixunil hmm, good point. I was strongly considering bring rust-secp in because, as you say, I trust you (and the other rust-bitcoin maintainers) to be able to deal with the C crap ... or at least to avoid it when it's sufficiently obscure. But if merging the repos would cause a shitload of notifications for e.g. elichai or bluematt, which they could otherwise avoid, that's a harder burden to take.
Another observation is that rust-secp has a one-ACK policy while rust-bitcoin has a two-ACK policy, because of the lack of maintainers on rust-secp. I worry that if rust-secp were part of this repo, we'd need two ACKs for everything but often be in a position where there weren't two people available who were comfortable ACKing. Especially if this led to bluematt or elichai being even less active on the crate..

Not sure about the last part but the theoretical number of total maintainers increasing should improve with merging so two ACKs might improve quality without significantly degrading progress.

I'm happy to hear it, but I think everybody except you finds the conversation around https://github.com/rust-bitcoin/rust-secp256k1/pull/539#issuecomment-1328237989 pretty confusing :)
Kidding aside, I think you're probably right. 99% of what goes into rust-secp is pretty straightforward. Even the C vendoring stuff is nicely wrapped up so you can just use the vendoring scripts. You don't even need to know C.

Network would be nice too.

Not sure I agree Network is a primitive.
But yeah agree on the crate name being annoying. I contacted the bitcoin-rs guy to see if he'd be willing to discuss handing over crate names if we want them. His project seems stale.

@yancyribbens in general, I think life is easier in Rust-land if we have a monorepo, at least for the "core" crates. rust-secp is the only real exception because it has such a different review/maintainership model ... though we may wind up pulling it in nonetheless because of what a PITA it is to have it separate.
A similar strategy is taken by the num crates, tokio crates, etc.

Also because rust-secp256k1 is not bitcoin related.. I mean it's used in bitcoin but in principle it's way more general. (Subtle hint at hex crate :sweat_smile: )

Network would be nice too.

Not sure I agree Network is a primitive.
But yeah agree on the crate name being annoying. I contacted the bitcoin-rs guy to see if he'd be willing to discuss handing over crate names if we want them. His project seems stale.

greetings folks -- I am happy to transfer crate names where it is helpful to you.
I am currently bringing up a c++ to rust transpiler which will be able to expedite the rest of the translation.  (This is why the project seems stale.  It is not abandoned or stale, but awaiting the transpiler.)
When this bringup is done, we should be able to zip pretty quickly through any remaining translation work.
Are you open to the possibility of merging? For example, bitcoin-primitives crate name can be transferred (bitcoin-network etc, too, whatever you need), the contents merged, redundant functionality pruned away.
On my end, the transpiler is already good enough to do the remainder of both bitcoin-primitives and bitcoin-network from the workspace I provided without much trouble.  I could use it to finish these pieces relatively easily during a merge.  This way, all development tracks strengthen while the transpiler is being hardened.
I suppose that when it is finished, the transpiler may be helpful to you folks as well -- is this statement correct?  On my end, at least, it is one of the only remaining bottlenecks.

@klebs6 that sounds great! I'm not sure which parts can be meaningfully merged but I'd be happy to look into it. Especially for primitives that could be shared between projects.
Also transpiler sounds very interesting, you might get recognition in wider Rust community.

Agreed that this sounds great! Though I also agree that I'm unsure, specifically, where there's an opportunity for unification :).
In general this crate is trying to move toward a "pure Rust" model of Bitcoin and associated types -- so for things users or wallets might care about we provide our own data structures that increasingly differ from the internal libbitcoinconsensus/Core ones, and for consensus-critical things we try to avoid providing any functionality at all. So I'm unsure that we'll be able to directly use a C++ transpiler. But it's an interesting thought. It would be magical if we could somehow have a bitcoinconsensus library that was "written" in pure Rust and would compile to WASM etc..

It looks like WitnessVersion is not going to be used any time soon by rust-bech32, this raises the question: Do we still want to create this crate as a placehloder for primitive types as we continue crates smashing?
Some benefits in creating an empty crate:

We can bikeshed the naming
We can grab the name of crates.io or do the crate transfer if we are going to request it for bitcoin-primitives

I'd prefer waiting until we have a stronger reason. Especially if we move address/bitcoin-specific stuff to bitcoin.

Good ideas -- I am glad we are each thinking about these design points.
Primarily, I am looking forward to the ways we will all (every human) be able to program and transact with each other by using these protocols.  Maybe we are helping to create something which will be there for our great and great great grand children.  It seems to me that rust is the natural way to make this easier and safer for everybody, and that you all have been doing a great job at working to build that in reality :)
I am hopeful that what I put up may be helpful in some way as the project and the rust bitcoin integrations grow. Making it modular was useful to me personally because it seems to be much easier and less risky to work with if each component serves one purpose well.
I do find it easier to understand many single-purpose components as opposed to one large, constantly changing opaque multi-component.
So, in that respect, what I did over there in bitcoin-rs was to ensure that, from the point of view of a code consumer, the interface was something I could learn, trust to integrate with, and use.
I am sure the interface will need to be improved or adapted in many ways as more people begin to work with it. At least as a starting point though, I can sign off (as an individual) on the fact that I could learn all of it, learn to interact with it fruitfully from other code bases, and also teach others how to use it.
I hope that this is also of benefit to you all and everybody else. Maybe after a couple more passes of individuals doing this, we will not only have something which is cooperatively developed in a distributed way, but also uniquely good for any and every individual who takes the opportunity to learn what it is, what it does, and how to use it.
happy to discuss any of this in more length
-Tom

glad to be here

soon we should get something like:
impl TryFrom<(CppAstStmt,&ParseContext)> for RustAstStmt

ParseContext will be a wrapper around what
rust-analyzer provides for the full workspace,
hooks for doing type inference, name lookup,
etc.

we are just a few steps away from getting that, but
there are a few things i have to see to first

once there, the rest of the untranslated code
should be pretty easy to finish

in the meantime, please feel free to ask for any
of the crate names. i am happy to transfer
them. my intent is not to "reserve" these names
for any purpose.

i do want to make sure that whatever is already
inside the crate will still have a home. it is
possible that in some cases this material could
be shifted into a neighboring crate in the
workspace. a new crate at the same place within
the crate dependency hierarchy might need to be
created. but maybe it is possible to merge.

if there is material already translated which is
useful to you, you are welcome to it. just let
me know and we can figure out what to do.

Thanks man!

On ice until we need it.

It's too late now I guess, but for your project, I think it would have been better if you had prefixed all your crate with something more specific to your effort. Like bitcoin-cores2s-xxx or something. But well, thanks for being nice about potential naming conflicts.

It's too late now I guess, but for your project, I think it would have been better if you had prefixed all your crate with something more specific to your effort. Like bitcoin-cores2s-xxx or something. But well, thanks for being nice about potential naming conflicts.

hey man! I'm sorry for the late reply -- I was off grid for a few weeks resting with family 😃🌿
Here is one idea I had:
Supposing there were several dozen crates in the bitcoin-rust ecosystem, maybe there could grow to become roughly one human being (or possibly more) for each workspace crate.
This way, the workspace could become totally distributed amongst all those separate parties involved.  In order to disrupt development, an attacker would need to disrupt dozens of small groups instead of just one main group.
Obviously, these smaller groups have a common goal and work together, but maybe even none of them needs to trust each other as long as there are tests within each crate to test the guarantees provided by the neighboring interfaces...
This seems like it might be somewhat new territory -- it is possible there may be logistical problems I am not aware of. Of course, there could be some overlap between the groups as and where necessary.
It seems to me like this pattern might be great in terms of helping the system strengthen and scale.  What do you think? I am interested in knowing your thoughts on the matter.
All the best,
-klebs

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

-218 of 368 (40.76%)  changed or added relevant lines in 24 files are covered.
288 unchanged lines in 21 files lost coverage.
Overall coverage decreased (-0.8%) to 83.248%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

bitcoin/src/blockdata/script/witness_version.rs
0
1
0.0%

bitcoin/src/blockdata/witness.rs
5
7
71.43%

bitcoin/src/taproot/mod.rs
0
2
0.0%

bitcoin/src/taproot/serialized_signature.rs
0
2
0.0%

bitcoin/src/crypto/ecdsa.rs
1
4
25.0%

hashes/src/error.rs
0
3
0.0%

hashes/src/sha256.rs
0
3
0.0%

bitcoin/src/blockdata/transaction.rs
12
16
75.0%

bitcoin/src/consensus/serde.rs
1
5
20.0%

primitives/src/locktime/relative.rs
10
14
71.43%

Files with Coverage Reduction
New Missed Lines
%

bitcoin/src/bip32.rs
4
88.78%

bitcoin/src/consensus/serde.rs
4
42.75%

hashes/src/util.rs
4
88.44%

hashes/src/hash160.rs
5
93.83%

hashes/src/ripemd160.rs
5
97.94%

hashes/src/sha1.rs
5
93.96%

hashes/src/sha256d.rs
5
90.91%

hashes/src/sha256.rs
5
84.22%

hashes/src/sha512_256.rs
5
91.58%

hashes/src/sha512.rs
5
97.15%

Totals

Change from base Build<PHONE_NUMBER>:
-0.8%

Covered Lines:
19410

Relevant Lines:
23316

💛  - Coveralls

Re-done on top of #2477, was pretty easy to do. The only complexity was the FromHexStr. I note that I have got the code wrong for parsing hex strings, here and in another place I wrote it today. Flagging here because I don't know which of the branches I was working on has it. @Kixunil you will definitely notice it :) The problem is that my code can't parse AB in requires 000000AB.

I just did locktimes as a quick and dirty check that it would work. But yes there are loads more things, I can do more if it adds value to do it now, probably need to do something that depends on weight and fee rate once those are in units.

Sure wait for other changes.


Dependency & documentation updates.

Removed deno nbt_parser comment thanks to it being fixed.
Updated dev-dependencies to latest and resolved documentation related update issues.

Pull Request Test Coverage Report for Build 700245039

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build 675328704:
0.0%

Covered Lines:
699

Relevant Lines:
699

💛  - Coveralls

Pull Request Test Coverage Report for Build 700245039

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build 675328704:
0.0%

Covered Lines:
699

Relevant Lines:
699

💛  - Coveralls


Invoke-WebRequest and basic parsing

I can see that your calls to Invoke-WebRequest are without the -UseBasicParsing switch.  This can cause problems for anyone running an agent on a machine with a version of PowerShell lower than 6.
It's not a problem for hosted agents and they have the latest powershell and that defaults to basic parsing.
Technically UseBasicParsing is a deprecated switch so I'll leave it to you to decide on whether to include it for backwards compatibility or whether to set a demand on the task to need powershell 6.

Hello! If you had the time and you don't mind doing it, could you send me the change for do one of the two options? Thanks in advance

Hi @daughey, sorry for the delay... I updated the plugin with the -UseBasicParsing switch for backwards compatibility.

Many thank!
Sorry I didn't respond before.  Had problems with my GitHub login at the time then forgot about it when it got resolved.

I had to change for another compatibility problem. Now there is a checkbox to decide whether or not you want to use the parameter (by default is no).


Update jdownloader: don't install desktop and dock shortcuts

After making all changes to the cask:

[x] brew cask audit --download {{cask_file}} is error-free.
[x] brew cask style --fix {{cask_file}} reports no offenses.
[x] The commit message includes the cask’s name and version.

Thanks for the PR!


Integers no longer supported in expressions

The type that SpinS gives to the referenced slot in the below expression is a "byte". The type checker now requires "numeric"
$ pins2lts-sym/prom2lts-sym X.509.prm.spins -i "TC_0.d==1"
prom2lts-sym: Exploration order is bfs-prev
prom2lts-sym: Saturation strategy is none
prom2lts-sym: Guided search strategy is unguided
prom2lts-sym: Attractor strategy is default
prom2lts-sym: Precompiled SpinS module initialized
prom2lts-sym: opening X.509.prm.spins
prom2lts-sym: state vector length is 97; there are 58 groups
prom2lts-sym, ** error **: Expression with type "numeric" can only be used if the language front-end defines it: "1"

This issue is not valid anymore. It is resolved.

This is fixed in Next?

Yes (in)equality checks are now supported due to this line: https://github.com/utwente-fmt/ltsmin/blob/next/src/ltsmin-lib/ltsmin-type-system.h#L106.


Desktops

Description
Adds a Desktop varient of just about every computer in the game, for making maps a little more spiffy!
Media

Changelog
:cl:

add: Nanotrasen managed to find records of these odd things called 'Desktops...' They couldn't work out what any of them did, so they just put console boards in them!

so this is pretty much an optional resprite for consoles for mappers? would be cool if they were buildable

Yep, that's the idea. Making them buildable would require an entire new base thing, like the computer or machine, and all the steps, plus a recipe for each one... 🙃


fix(Modal): your description

Testcase
In https://react.semantic-ui.com/modules/modal#modal-example-shorthand, what is the way to find out which key is pressed out of the actions?

You should own onClick handler:
 <Modal
    trigger={<Button>Show Modal</Button>}
    header='Delete Your Account'
    content='Are you sure you want to delete your account'
    actions={[
      { key: 'no', content: 'No', color: 'red', triggerClose: true, onClick: () => console.log('No') },
      { key: 'yes', content: 'Yes', color: 'green', triggerClose: true, onClick: () => console.log('Yes') },
    ]}
  />

Thanks


Proposal to require HandBrakeCLI version 1.1.0 for access to new JSON API

Proposal to require HandBrakeCLI version 1.1.0 for access to new --json API
The transcode-video, convert-video and detect-crop tools share code to analyze media inputs. This is necessary to understand how that media is configured. The implementation of that code parses the unstructured text output from HandBrakeCLI via its --scan option.
And that implementation is extremely fragile because the format of the unstructured text from HandBrakeCLI, and indirectly libAV, keeps changing.
In fact, since version 0.18.0 of the video_transcoding Gem, language detection for subtitles in disc image directory input and individual closed caption tracks may still be wrong due to some of those changes. And that's only one example of the breakage.
I've contacted the HandBrake development team about this problem and it's their position that they will never address the fragility of their unstructured text output. Instead, they're encouraging developers to parse the structured text output available in a JSON-like format via the --json option in HandBrakeCLI version 1.1.0 or later.
So, I propose that we make that version of HandBrakeCLI a minimum requirement and completely rewrite our media analysis code to parse the JSON output.
Why not keep the fragile implementation and keep supporting older versions of HandBrakeCLI?
Because maintenance and testing of both code paths would be onerous and risky. And I'm not willing to sign up for that work or headache.
There are other benefits to only supporting the JSON path. First, based on some of my experiments, the media analysis implementation will be significantly simpler and smaller. Also, it's possible that we can get rid of the dependency on mp4track and the entire mp4v2 package.
Version 1.1.0 of HandBrakeCLI was released on April 8, 2018, so it's been available for about nine months. Most macOS and Windows users are already on version 1.1.2, two revisions newer. My only concern about making this change is for Linux users. Because some Linux distributions (I'm looking at you Debian) take years to include newer versions in their packages.
Let me know what you think. I won't be doing this right away, but I figured we should start discussing it now.
Thanks.

I don't have a problem with it. I do hate the notion of potentially dropping support for some folks, but on the other hand, this is a one-man show where we all benefit from your labor. I can't see many folks here arguing that you should have to do more workarounds to compensate for a shortcoming in HandBrake when there is a potentially better/simpler method.

@khaosx Thanks! Yeah, the duct tape and bandaids in the current code are already making it difficult to maintain.

I am all in. Based on absolutely no research, I suspect most Linux users (self include!) who are interested enough in transcoding to have found your scripts, have long ago manually added the direct handbrake repository to their package sources to get the benefits of new releases.
On Nov 30, 2018, at 9:43 PM, Don Melton<EMAIL_ADDRESS>wrote:
@khaosx Thanks! Yeah, the duct tape and bandaids in the current code are already making it difficult to maintain.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

On the Linux front, the handbrake team pretty strongly recommend using the builds they provide and not the ones that get packaged for distro repositories.
I’m up for the change, and dropping the dependency on mp4v2 would be a win for Windows users, as there are no official Windows builds for that

@samhutchins I didn't realize the HandBrake team did that. God bless them! :) And thanks for the feedback! I suspected you would be happy to get rid of that dependency.

Definitely a +1 from my end. Fragile solutions is just a pain in the rear end, and I think most of us enthusiasts are incessantly upgrading just for fun and testing anyway, so makes sense.

@RodBrown1988 Thanks! Yeah, most of us nerds are living on the bleeding edge. :)

I am not on Linux so wouldn't be negatively impacted, but I am all for anything that makes things simpler for you and better (less fragile) for the code.

@vr8hub Thanks!
BTW, this is taking longer to complete because it's actually harder to simplify than I thought. And that irony isn't lost on me. :)

After Debian Buster release the version on the repositories is 1.2.2+ds1-1 for stable, testing and sid.
The current one in deb-multimedia.org is 1:1.2.2-dmo2.
The PPA from Hanbrake page give 1:1.2.1-zhb-1ppa1~cosmic1
So no problem which repository you use, you end at 1.2.2 (Hanbrake PPA nomenclature differs)

@genimac Thanks for the info!


Exported dbus constants and added signals for convenience

Exported dbus constants and added signals for convenience as they are sometimes useful from the calling program (ie: for handling returned signals)

Thanks for the PR.

Thanks a lot for accepting this PR, makes my life easier :)


StackState hook on dynamic opcode cost (Substrate Weight V2)

Related to https://github.com/paritytech/frontier/issues/881
A multi-dimensional weight system is being introduced in Substrate to keep track of storage interaction such that parachains state proofs don't go over-budget when executed on the relay chain.
Ethereum and EVM by themselves don't have a concept of "storage weight", and it seems difficult (impossible?) to estimate the storage weight an EVM execution will use or to let the user provide an upper bound (this is not part of the Ethereum transaction format).
A possibility is to execute the transaction and stops if it goes over the remaining available storage weight (by panicking so that the extrinsic is not inserted in the block and retried later). Since this EVM implementation is independent from Substrate, this should be implemented in Frontier while the EVM provide a "hook" to be notified when storage-related opcodes are executed. This PR introduces this by adding a new method in the StackState trait to notify the state implementor of such event.
To be backward-compatible and not affect non Substrate-related usages, this function has a default implementation being a no-op. This function is also a bit more general to possibly implement other non-Standard costs or checks, by calling the state with &mut self (which grants mutable access to the gasometer to record more costs) and by returning a Result<(), ExitError> to provide graceful exits through the EVM if possible (likely not the case for the storage weight tho).
I think this is a small, general and not-too-much-intrusive change in the EVM to tackle Substrate Weight V2 change and potentially future costs that will need to be recorded.

It may not be necessary if we can do all the storage weight accounting inside already existing functions, which are already the only path the EVM interacts with Substrate storage. However centralizing most of the accounting in one place sounds cleaner.

What do you mean by "extension"?

panicking prevents the storage to be included in PoV after it is accessed however this will also create a DoS vector.
The fact that out of gas tx are still included and charged gas fee is exactly the reason we can’t do this. A failed tx with non trivial amount of resource usage should still be charged otherwise block producers can be easily DoSed with some compute intensive call that access large storage at last step to make all the computing wasteful.

The fact that out of gas tx are still included and charged gas fee is exactly the reason we can’t do this. A failed tx with non trivial amount of resource usage should still be charged otherwise block producers can be easily DoSed with some compute intensive call that access large storage at last step to make all the computing wasteful.

I agree but sadly I don't see other ways to take into account PoV size while also keeping a standard Ethereum transaction format :/


ignore m2m changes during migrations

https://github.com/OpenSlides/OpenSlides/blob/d9369ab9c18e0d32aac2fe2e290b3d3b23d6c017/openslides/core/signals.py#L47
The new feature is a bit to good ;) During migrations (in my case 0007_superadmin.py, triggered with admin.delete(skip_autoupdate=True)), this singal handler gets called and tries to issue an autoupdate resulting in a complaining cache. Please add a check, if migrations are running and skip the m2m autoupdates. The traceback:
File "/home/finn/OpenSlides/OpenSlides/openslides/users/migrations/0007_superadmin.py", line 50, in create_superadmin_group
    admin.delete(skip_autoupdate=True)
  File "/home/finn/OpenSlides/OpenSlides/openslides/utils/models.py", line 109, in delete
    return_value = super().delete(*args, **kwargs)  # type: ignore
  File "/home/finn/OpenSlides/.venv/lib/python3.7/site-packages/django/db/models/base.py", line 880, in delete
    return collector.delete()
  File "/home/finn/OpenSlides/.venv/lib/python3.7/site-packages/django/db/models/deletion.py", line 277, in delete
    sender=model, instance=obj, using=self.using
  File "/home/finn/OpenSlides/.venv/lib/python3.7/site-packages/django/dispatch/dispatcher.py", line 175, in send
    for receiver in self._live_receivers(sender)
  File "/home/finn/OpenSlides/.venv/lib/python3.7/site-packages/django/dispatch/dispatcher.py", line 175, in <listcomp>
    for receiver in self._live_receivers(sender)
  File "/home/finn/OpenSlides/OpenSlides/openslides/core/signals.py", line 70, in autoupdate_for_many_to_many_relations
    reload=True,
  File "/home/finn/OpenSlides/OpenSlides/openslides/utils/autoupdate.py", line 155, in inform_changed_elements
    handle_changed_elements(elements.values())
  File "/home/finn/OpenSlides/OpenSlides/openslides/utils/autoupdate.py", line 256, in handle_changed_elements
    itertools.chain(elements, history_elements)
  File "/home/finn/OpenSlides/.venv/lib/python3.7/site-packages/asgiref/sync.py", line 64, in __call__
    return call_result.result()
  File "/usr/local/lib/python3.7/concurrent/futures/_base.py", line 425, in result
    return self.__get_result()
  File "/usr/local/lib/python3.7/concurrent/futures/_base.py", line 384, in __get_result
    raise self._exception
  File "/home/finn/OpenSlides/.venv/lib/python3.7/site-packages/asgiref/sync.py", line 78, in main_wrap
    result = await self.awaitable(*args, **kwargs)
  File "/home/finn/OpenSlides/OpenSlides/openslides/utils/autoupdate.py", line 209, in async_handle_collection_elements
    change_id = await update_cache(elements)
  File "/home/finn/OpenSlides/OpenSlides/openslides/utils/autoupdate.py", line 202, in update_cache
    return await element_cache.change_elements(cache_elements)
  File "/home/finn/OpenSlides/OpenSlides/openslides/utils/cache.py", line 135, in change_elements
    "Call element_cache.ensure_cache before changing elements."
RuntimeError: Call element_cache.ensure_cache before changing elements.

@normanjaeckel This is also a high priority issue... Would be great if you can fix it today.

How can I reproduce this? I created a v2.3 database and migrated it successfully to master.

db.sqlite3.zip
This is my DB (I think from 2.3) that I always use. It happens there.

@normanjaeckel Can we close this issue?

No answer and no reaction since September. Reopen if required.


Lazy listener functions on Google Cloud Functions

As of version 0.3.0a0, we don't support lazy listener functions on Google Cloud Functions (as I mentioned in #45). We may explore solutions for it if many developers request the feature.
Category (place an x in each of the [ ])

[ ] slack_bolt.App and/or its core components
[ ] slack_bolt.async_app.AsyncApp and/or its core components
[x] Adapters in slack_bolt.adapter

Requirements
Please read the Contributing guidelines and Code of Conduct before creating this issue or pull request. By submitting, you are agreeing to those rules.

https://cloud.google.com/functions/docs/calling/pubsub#functions_calling_pubsub-python looks like the way to go for this.

I've checked the idea to use pub/sub triggers for lazy listener functions and found that the deployment is not so simple in comparison with AWS Lambda. I need more time for research about the best way to support lazy functions. Thus, let me change the milestone from 1.3 to 2.0.

For Google Cloud users, utilizing this new feature in Cloud Run would be more straight-forward and much easier. For this reason, we won't implement the lazy listener support for Cloud Functions as a built-in one.


Failure when following the documented installation instructions.

I'm just following the instructions step-by-step found here:
https://ansible-nas.io/docs/getting-started/installation/
I used Ubuntu Server named ubuntu-22.04.5-live-server-amd64.iso to create a VMWare system on Windows 11. I'm using the latest VMWare workstation and Win 11. I installed build-essential and ansible packages supplied with the release.
I cloned the latest (12/14/2024) ansible-nas repo from GitHub (Commit 1aec019.) for step 1.
Did step 2 verbatim.
For step 3 I changed nas.yml to the following:
---
##                       ._____.   .__
##  _____    ____   _____|__\_ |__ |  |   ____             ____ _____    ______
##  \__  \  /    \ /  ___/  || __ \|  | _/ __ \   ______  /    \\__  \  /  ___/
##   / __ \|   |  \\___ \|  || \_\ \  |_\  ___/  /_____/ |   |  \/ __ \_\___ \
##  (____  /___|  /____  >__||___  /____/\___  >         |___|  (____  /____  >
##       \/     \/     \/        \/          \/               \/     \/     \/
##     a n s i b l e - n a s      https://github.com/davestephens/ansible-nas

# Add your all.yml config overrides to this file. See group_vars/all.yml for all possible settings.

# Example options
ansible_nas_hostname: testnas2
ansible_nas_timezone: Etc/UTC

## Enable some applications
homepage_enabled: true

For step 4 I changed the inventory file to this:
##                       ._____.   .__
##  _____    ____   _____|__\_ |__ |  |   ____             ____ _____    ______
##  \__  \  /    \ /  ___/  || __ \|  | _/ __ \   ______  /    \\__  \  /  ___/
##   / __ \|   |  \\___ \|  || \_\ \  |_\  ___/  /_____/ |   |  \/ __ \_\___ \
##  (____  /___|  /____  >__||___  /____/\___  >         |___|  (____  /____  >
##       \/     \/     \/        \/          \/               \/     \/     \/
##     a n s i b l e - n a s      https://github.com/davestephens/ansible-nas

[all]
## Example when running from a remote workstation
# ansible-nas ansible_host=<IP_ADDRESS>

## Example when running directly on your Ansible-NAS server
ansible-nas ansible_connection=local ansible_host=localhost

[nas]
ansible-nas

For step 5 I ran the requirements.yml install file verbatim. It had no errors.
Finally I ran the playbook running the exact command as supplied. I provided my sudo password to the process. This is what resulted:
skb@testnas2:~/ansible-nas$ ansible-playbook -i inventories/my-ansible-nas/inventory nas.yml -b -K
BECOME password:
[WARNING]: Collection vladgh.samba does not support Ansible version 2.10.8
[WARNING]: Collection community.general does not support Ansible version 2.10.8
[WARNING]: Collection community.docker does not support Ansible version 2.10.8

PLAY [Ansible-NAS] *****************************************************************************************************************************************************************

TASK [Gathering Facts] *************************************************************************************************************************************************************
ok: [ansible-nas]

TASK [ansible-nas-users : Create ansible-nas group] ********************************************************************************************************************************
changed: [ansible-nas]

TASK [ansible-nas-users : Create ansible-nas user] *********************************************************************************************************************************
changed: [ansible-nas]

TASK [vladgh.samba.server : Include OS specific variables] *************************************************************************************************************************
ok: [ansible-nas]

TASK [vladgh.samba.server : Install Samba packages] ********************************************************************************************************************************
changed: [ansible-nas]

TASK [vladgh.samba.server : Install Samba VFS extensions packages] *****************************************************************************************************************
ok: [ansible-nas]

TASK [vladgh.samba.server : Register Samba version] ********************************************************************************************************************************
ok: [ansible-nas]

TASK [vladgh.samba.server : Create Samba shares root directory] ********************************************************************************************************************
fatal: [ansible-nas]: FAILED! => {"msg": "The conditional check '(samba_shares is defined and samba_shares | length > 0) and ( samba_manage_directories is defined and samba_manage_directories )' failed. The error was: error while evaluating conditional ((samba_shares is defined and samba_shares | length > 0) and ( samba_manage_directories is defined and samba_manage_directories )): [{'name': 'downloads', 'comment': 'Stuff downloaded', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ downloads_root }}'}, {'name': 'movies', 'comment': 'Movies', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ movies_root }}'}, {'name': 'tv', 'comment': 'TV Episodes', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ tv_root }}'}, {'name': 'music', 'comment': 'Music', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ music_root }}'}, {'name': 'podcasts', 'comment': 'Podcasts', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ podcasts_root }}'}, {'name': 'dump', 'comment': 'File dump', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ samba_shares_root }}/dump'}, {'name': 'games', 'comment': 'Games', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ samba_shares_root }}/games'}, {'name': 'photos', 'comment': 'Pictures', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ photos_root }}'}, {'name': 'books', 'comment': 'Books', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ books_root }}'}, {'name': 'audiobooks', 'comment': 'Audiobooks', 'guest_ok': True, 'public': True, 'writable': True, 'browsable': True, 'path': '{{ audiobooks_root }}'}, {'name': 'comics', 'comment': 'Comics', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ comics_root }}'}, {'name': 'documents', 'comment': 'Documents', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ documents_root }}'}, {'name': 'code', 'comment': 'Code', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ code_root }}'}, {'name': 'recordings', 'comment': 'Recordings', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ recordings_root }}'}]: 'recordings_root' is undefined\n\nThe error appears to be in '/home/skb/.ansible/collections/ansible_collections/vladgh/samba/roles/server/tasks/main.yml': line 38, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: Create Samba shares root directory\n  ^ here\n"}

PLAY RECAP *************************************************************************************************************************************************************************
ansible-nas                : ok=7    changed=3    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0

-Dale

I've managed to get farther by removing the distro's ansible and installing the lastest version using this link:
https://docs.ansible.com/ansible/latest/installation_guide/installation_distros.html#installing-ansible-on-ubuntu
It would be very helpful to provide more explicit instructions to get the proper ansible for ansible-nas.
But unfortunately the process breaks further into the playbook:
skb@testnas2:~/ansible-nas$ ansible-playbook -i inventories/my-ansible-nas/inventory nas.yml -b -K
BECOME password:

PLAY [Ansible-NAS] *****************************************************************************************************************************************************************

TASK [ansible-nas-users : Create ansible-nas group] ********************************************************************************************************************************
ok: [ansible-nas]

TASK [ansible-nas-users : Create ansible-nas user] *********************************************************************************************************************************
ok: [ansible-nas]

TASK [vladgh.samba.server : Include OS specific variables] *************************************************************************************************************************
ok: [ansible-nas]

TASK [vladgh.samba.server : Install Samba packages] ********************************************************************************************************************************
ok: [ansible-nas]

TASK [vladgh.samba.server : Install Samba VFS extensions packages] *****************************************************************************************************************
ok: [ansible-nas]

TASK [vladgh.samba.server : Register Samba version] ********************************************************************************************************************************
ok: [ansible-nas]

TASK [vladgh.samba.server : Create Samba shares root directory] ********************************************************************************************************************
skipping: [ansible-nas]

TASK [vladgh.samba.server : Create share directories] ******************************************************************************************************************************
skipping: [ansible-nas]

TASK [vladgh.samba.server : Ensure webserver document root exists] *****************************************************************************************************************
skipping: [ansible-nas]

TASK [vladgh.samba.server : Create link to shares in webserver document root] ******************************************************************************************************
skipping: [ansible-nas]

TASK [vladgh.samba.server : Samba configuration] ***********************************************************************************************************************************
changed: [ansible-nas]

TASK [vladgh.samba.server : Install global include file] ***************************************************************************************************************************
skipping: [ansible-nas]

TASK [vladgh.samba.server : Install home include file] *****************************************************************************************************************************
skipping: [ansible-nas]

TASK [vladgh.samba.server : Install share specific include files] ******************************************************************************************************************
skipping: [ansible-nas]

TASK [vladgh.samba.server : Create username map file if needed] ********************************************************************************************************************
skipping: [ansible-nas]

TASK [vladgh.samba.server : Start SMB service] *************************************************************************************************************************************
ok: [ansible-nas]

TASK [vladgh.samba.server : Start NMB service] *************************************************************************************************************************************
ok: [ansible-nas]

TASK [vladgh.samba.server : Create Samba users if they don't exist yet] ************************************************************************************************************
skipping: [ansible-nas]

TASK [geerlingguy.nfs : Include OS-specific variables.] ****************************************************************************************************************************
ok: [ansible-nas]

TASK [geerlingguy.nfs : Include overrides specific to Fedora.] *********************************************************************************************************************
skipping: [ansible-nas]

TASK [geerlingguy.nfs : include_tasks] *********************************************************************************************************************************************
skipping: [ansible-nas]

TASK [geerlingguy.nfs : include_tasks] *********************************************************************************************************************************************
included: /home/skb/.ansible/roles/geerlingguy.nfs/tasks/setup-Debian.yml for ansible-nas

TASK [geerlingguy.nfs : Ensure NFS utilities are installed.] ***********************************************************************************************************************
changed: [ansible-nas]

TASK [geerlingguy.nfs : Ensure directories to export exist] ************************************************************************************************************************
changed: [ansible-nas] => (item=/mnt/Volume3/public *(rw,sync,no_root_squash))

TASK [geerlingguy.nfs : Copy exports file.] ****************************************************************************************************************************************
changed: [ansible-nas]

TASK [geerlingguy.nfs : Ensure nfs is running.] ************************************************************************************************************************************
ok: [ansible-nas]

TASK [geerlingguy.docker : Load OS-specific vars.] *********************************************************************************************************************************
ok: [ansible-nas]

TASK [geerlingguy.docker : include_tasks] ******************************************************************************************************************************************
skipping: [ansible-nas]

TASK [geerlingguy.docker : include_tasks] ******************************************************************************************************************************************
included: /home/skb/.ansible/roles/geerlingguy.docker/tasks/setup-Debian.yml for ansible-nas

TASK [geerlingguy.docker : Ensure old versions of Docker are not installed.] *******************************************************************************************************
ok: [ansible-nas]

TASK [geerlingguy.docker : Ensure dependencies are installed.] *********************************************************************************************************************
changed: [ansible-nas]

TASK [geerlingguy.docker : Ensure additional dependencies are installed (on Ubuntu < 20.04 and any other systems).] ****************************************************************
skipping: [ansible-nas]

TASK [geerlingguy.docker : Ensure additional dependencies are installed (on Ubuntu >= 20.04).] *************************************************************************************
ok: [ansible-nas]

TASK [geerlingguy.docker : Add Docker apt key.] ************************************************************************************************************************************
changed: [ansible-nas]

TASK [geerlingguy.docker : Ensure curl is present (on older systems without SNI).] *************************************************************************************************
skipping: [ansible-nas]

TASK [geerlingguy.docker : Add Docker apt key (alternative for older systems without SNI).] ****************************************************************************************
skipping: [ansible-nas]

TASK [geerlingguy.docker : Add Docker repository.] *********************************************************************************************************************************
changed: [ansible-nas]

TASK [geerlingguy.docker : Install Docker packages.] *******************************************************************************************************************************
skipping: [ansible-nas]

TASK [geerlingguy.docker : Install Docker packages (with downgrade option).] *******************************************************************************************************
changed: [ansible-nas]

TASK [geerlingguy.docker : Install docker-compose plugin.] *************************************************************************************************************************
skipping: [ansible-nas]

TASK [geerlingguy.docker : Install docker-compose-plugin (with downgrade option).] *************************************************************************************************
ok: [ansible-nas]

TASK [geerlingguy.docker : Ensure /etc/docker/ directory exists.] ******************************************************************************************************************
skipping: [ansible-nas]

TASK [geerlingguy.docker : Configure Docker daemon options.] ***********************************************************************************************************************
skipping: [ansible-nas]

TASK [geerlingguy.docker : Ensure Docker is started and enabled at boot.] **********************************************************************************************************
ok: [ansible-nas]

TASK [geerlingguy.docker : Ensure handlers are notified now to avoid firewall conflicts.] ******************************************************************************************

RUNNING HANDLER [vladgh.samba.server : Restart SMB service] ************************************************************************************************************************
changed: [ansible-nas]

RUNNING HANDLER [vladgh.samba.server : Restart NMB service] ************************************************************************************************************************
changed: [ansible-nas]

RUNNING HANDLER [geerlingguy.nfs : reload nfs] *************************************************************************************************************************************
changed: [ansible-nas]

RUNNING HANDLER [geerlingguy.docker : restart docker] ******************************************************************************************************************************
changed: [ansible-nas]

TASK [geerlingguy.docker : include_tasks] ******************************************************************************************************************************************
skipping: [ansible-nas]

TASK [geerlingguy.docker : Get docker group info using getent.] ********************************************************************************************************************
skipping: [ansible-nas]

TASK [geerlingguy.docker : Check if there are any users to add to the docker group.] ***********************************************************************************************
skipping: [ansible-nas]

TASK [geerlingguy.docker : include_tasks] ******************************************************************************************************************************************
skipping: [ansible-nas]

TASK [ansible-nas-general : Set login banner] **************************************************************************************************************************************
changed: [ansible-nas]

TASK [ansible-nas-general : Update apt-cache] **************************************************************************************************************************************
ok: [ansible-nas]

TASK [ansible-nas-general : Upgrade all packages] **********************************************************************************************************************************
skipping: [ansible-nas]

TASK [ansible-nas-general : Install some packages] *********************************************************************************************************************************
changed: [ansible-nas]

TASK [ansible-nas-general : Set hostname to testnas2] ******************************************************************************************************************************
ok: [ansible-nas]

TASK [ansible-nas-general : Set timezone to Etc/UTC] *******************************************************************************************************************************
ok: [ansible-nas]

TASK [ansible-nas-general : Permission share directories] **************************************************************************************************************************
fatal: [ansible-nas]: FAILED! => {"msg": "[{'name': 'downloads', 'comment': 'Stuff downloaded', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ downloads_root }}'}, {'name': 'movies', 'comment': 'Movies', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ movies_root }}'}, {'name': 'tv', 'comment': 'TV Episodes', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ tv_root }}'}, {'name': 'music', 'comment': 'Music', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ music_root }}'}, {'name': 'podcasts', 'comment': 'Podcasts', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ podcasts_root }}'}, {'name': 'dump', 'comment': 'File dump', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ samba_shares_root }}/dump'}, {'name': 'games', 'comment': 'Games', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ samba_shares_root }}/games'}, {'name': 'photos', 'comment': 'Pictures', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ photos_root }}'}, {'name': 'books', 'comment': 'Books', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ books_root }}'}, {'name': 'audiobooks', 'comment': 'Audiobooks', 'guest_ok': True, 'public': True, 'writable': True, 'browsable': True, 'path': '{{ audiobooks_root }}'}, {'name': 'comics', 'comment': 'Comics', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ comics_root }}'}, {'name': 'documents', 'comment': 'Documents', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ documents_root }}'}, {'name': 'code', 'comment': 'Code', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ code_root }}'}, {'name': 'recordings', 'comment': 'Recordings', 'guest_ok': True, 'public': True, 'writable': True, 'browseable': True, 'path': '{{ recordings_root }}'}]: 'recordings_root' is undefined"}

PLAY RECAP *************************************************************************************************************************************************************************
ansible-nas                : ok=34   changed=14   unreachable=0    failed=1    skipped=24   rescued=0    ignored=0

-Dale

Hi all,
A bit more clarification about why and what I'm doing. I've been running Ansible-NAS on some hardware for years. But I've always found the process of keeping in-sync with the main project error prone. So I tend to avoid it unless I really need something new that was added.
So now I've built new server hardware to swap with my old system that's been working for years. I've decided to start fresh to avoid running down various issues from trying to upgrade the current older NAS before switching to the new hardware.
I reasoned that the system should be able to install right from scratch with the current code and then adapt my existing setup from that using a top down approach.
But I'm getting these issues with clean installs.
What am I doing wrong?
-Dale

Ok... So I have the playbook finishing. I had to recordings_root to the group_vars/all.yml file to satisfy the process. The recordings_root was defined about 6 months ago. All default playbook runs would have failed after this point.
This leads me to believe that no testing has occurred since then or people are just patching things when they break without sending the fixed back the repository.
# Where roms are stored
roms_root: "{{ samba_shares_root }}/roms"

# Where recordings are stored  <= ADDED THIS vvvv
recordings_root: "{{ samba_shares_root }}/recordings"

# The description that'll appear next to your Ansible-NAS box when browsing your network
samba_server_string: Ansible NAS

-Dale

Does this project still have some legs or had it be abandoned?
I hope it's still alive as I've found it's a decent solution for those of us that who ditched FreeNAS.
-Dale

The Heimdall role is broken because it's missing the code to create the heimdall user and group. I've attached a patch to fix it.
0002-Add-back-lost-code-that-creates-heimdall-user-and-gr.patch
-Dale

Hi,
Thanks for the quick reply!

Where did the system Ansible you're referring to come from? Ubuntu Server doesn't come with it installed OOTB.

There was a version of ansible available in the repositories in the stock install of 22.04 but ansible-nas complained about it (from an earlier post in this PR):
[WARNING]: Collection vladgh.samba does not support Ansible version 2.10.8
[WARNING]: Collection community.general does not support Ansible version 2.10.8
[WARNING]: Collection community.docker does not support Ansible version 2.10.8

So I went and looked more closely at your instructions and followed the ansible site link. I looked at the pip stuff etc... and felt I wasn't a much of a python expert and found the following more direct approach (for me anyway) to install the latest version:
https://docs.ansible.com/ansible/latest/installation_guide/installation_distros.html#installing-ansible-on-ubuntu
This used a ppa supplied by the Ansible project. After installing ansible from it I checked the installed version:
skb@nas2:~$ ansible --version
ansible [core 2.17.7]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/skb/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  ansible collection location = /home/skb/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.10.12 (main, Nov  6 2024, 20:22:13) [GCC 11.4.0] (/usr/bin/python3)
  jinja version = 3.0.3
  libyaml = True

Ansible-nas was happy with this newer installed version of ansible. After that I ran into the other issues that I patched over.
Truth be told...
My first attempt was to install Ansible-nas on the latest Ubuntu 24.02LTS. On that OS ansible-nas didn't complain about the ansible version supplied with the OS distro but I ran into a missing package it was trying to install from defaults/main.yml of the ansible-nas-general role (excerpt follows):
# Extra packages to install
ansible_nas_extra_packages:
  - smartmontools
  - htop
  - zfsutils-linux
  - bonnie++
  - unzip
  - lm-sensors
  - ctop      <= 24.04LTS doesn't seem provide this package anymore. 22.04LTS does.

So I scratched that approach without much more investigation and reinstalled the latest 22.04.x server version of Ubuntu since that's the one you recommend.
Anyway...
I'll pick up your latest commits and remove the patches I put into my custom ansible repository I use to drive the process. FWIW...You can see it here:
https://github.com/DLLarson/my-ansible-nas
I basically include ansible-nas as a git submodule to my repository so I can keep my stuff completely out of the ansible source code.
-Dale

In case it's helpful, here are my instructions/notes from my last ansible-nas install, based on the issues I encountered. Note that the zfsutils and net-utils are probably not required, but helpful if you are using zfs storage like I am. And yes, I am aware many of these commands could be consolidated.

install Ubuntu 22.04
sudo apt-get update
sudo apt-get upgrade
sudo apt install ubuntu-advantage-tools
sudo apt install zfsutils
sudo apt install net-utils
sudo apt remove ansible
sudo apt --purge autoremove
sudo apt -y install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt install ansible
git clone https://github.com/davestephens/ansible-nas.git && cd ansible-nas
cp -rfp inventories/sample inventories/my-ansible-nas
vi inventories/my-ansible-nas/inventory; uncomment ansible-nas ansible-connection=local ansible_host=localhost line;save
vi inventories/my-ansible-nas/group-vars/nas.yml; edit hostname, timezone (America/Chicago), desired services
sudo ansible-galaxy install -r requirements.yml
sudo ansible-playbook -i inventories/my-ansible-nas/inventory nas.yml -b -K

In case it's helpful, here are my instructions/notes from my last ansible-nas install, based on the issues I encountered.

That's very close to the steps I took as I bumped into problems. These steps avoid confusion of putzing with python PIP, etc. There is a link to the ansible site given below that would replace steps 7-11.
https://docs.ansible.com/ansible/latest/installation_guide/installation_distros.html#installing-ansible-on-ubuntu
-Dale

I'll note that my new Ansible-NAS machine is fully up and running with the same configuration as my 10 year old NAS server (that started on FreeNAS and sometime later I ditched it for Ansible-NAS and never looked back.) The old machine is just sitting around until I have more confidence with the new hardware.
Another great benefit of stepping up my hardware is access to 2.5Gb ethernet connections! Blazing fast compared to my old foggy ITX 16GB RAM 4 core AMD machine running WD Red Drives with a USB drive for the OS with 1Gb ethernet.
My new machine runs an ATX MB that supports up to 5 NVMe SSD drives directly on the MB. My processor jumped from 4 cores to a current i7 with 20 cores--8p+12e--(28 threads). One NVMe SSD drive is 1TB and used for the OS. The remaining four are 4TB each and setup for raidz2. It's a beast. Of course I also had to buy some 2.5Gb ethernet switches but it was worth it.
-Dale

That's very close to the steps I took as I bumped into problems. These steps avoid confusion of putzing with python PIP, etc. There is a link to the ansible site given below that would replace steps 7-11.
https://docs.ansible.com/ansible/latest/installation_guide/installation_distros.html#installing-ansible-on-ubuntu
-Dale

There are many ways to skin a cat, as they say. This was my list I cobbled together as I worked through the various issues I had building a new server (I now have 5 Ansible-NAS servers running for various reasons - they make great general purpose platforms with a lot of common services easily configured). From what I recall:

ubuntu-advantage-tools adds one of the commands one of the later scripts will be using
zfs-utils and net-utils add in some of the common zfs pool and ifconfig type commands you will likely be doing

the purge autoremove after uninstalling the distribution ansible package does some clean up that makes the ppa install go smooth

software-properties-common is required for ppa/ansible

You'll also want to do any share drive/storage array config before you complete your yml config and run the playbook.
I'm a recovered FreeNAS user as well. The second time an upgrade bricked my NAS and I had to spend hours figuring out what they did to break it, I started looking for something else. The third upgrade was going to stop supporting my hardware. Ansible-NAS doesn't have the fancy GUI, but if you can install Ubuntu, you can make it a server.
If you do decide to try a refresh/rebuild - which I used to avoid as well - I recommend you write a script so you don't have to remember it from scratch. Mine is a work in progress, but right now I am using this:
#!/usr/bin/env bash
git stash
git pull https://github.com/davestephens/ansible-nas
sudo git pull https://github.com/davestephens/ansible-nas
grep enabled ansible-nas/inventories/my-ansible-nas/group_vars/nas.yml | grep true | awk -F_ '{print $1 }' > active-services.list
for container in [cat active-services.list]
do
sudo docker stop $container
done
sudo ansible-playbook -i inventories/my-ansible-nas/inventory nas.yml -b -K
Again, don't remember the details, but I think I found it worked best to stop everything as some of the services would complain in the playbook run.  Since I have some non-scripted docker containers running as well, that script is trying to only kill the relevant ones that will be impacted by the playbook. It still needs modification for the stats package and such.
If you run into problems, I found that re-running the requirements.yml command from the initial install will usually sort it out, but most of the time it's not needed - really only if you keep putting it off.


Fix for malformed hardware requirements table

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


*: Tag io type for foreground and snpashot

Signed-off-by: Connor<EMAIL_ADDRESS>
What problem does this PR solve?
Issue Number: part of #9156
Problem Summary:
Tag io type for foreground read/write and snapshot of replication/loadbalance, so io rate limiter can use it to throttle different tasks
What is changed and how it works?
What's Changed:

tag ForegroundRead for storage/coprocessor readpool
tag ForegroundWrite for scheduler worker and batch system of raftstore/apply
Add a field for_balance for snapshot meta https://github.com/pingcap/kvproto/pull/707, so the receiver can know whether the snapshot is triggered by balance.
use matched_index==0 to decide whether the snapshot is triggered by balance or not, and tag LoadBalance or Replication on the generation and receiving of snapshots.

Related changes
https://github.com/pingcap/kvproto/pull/707
Check List

Manual test (add detailed scripts or steps below)

Release note

None

/rebuild

/rebuild

PTAL @tabokie

PTAL @tabokie

/merge

/merge

/merge

/merge

/merge

/merge


Enable-WriteCore-feature-for-paloaltonetworks.ngfw

Contributing to the Azure SDK
Please see our CONTRIBUTING.md if you are not familiar with contributing to this repository or have questions.
For specific information about pull request etiquette and best practices, see this section.

API change check
APIView has identified API level changes in this PR and created following API reviews.
Azure.ResourceManager.PaloAltoNetworks.Ngfw


Tool does not recognise when a new field is added to the request as breaking change

Describe the bug
Tool does not recognise when a new field is added to the request as breaking change
Actual behavior
There is no output at all
Expected behavior
This should have been detected as breaking change
Desktop (please complete the following information):

OS: [e.g. iOS] Mac OS 15.2

Please provide full specs and command-line otherwise I don't know which case you are referring to exactly.

Steps:

extract zip
in the folder with spec files run oasdiff:
oasdiff breaking ./minimalistic_request_openapi.yaml ./breaking_change_add_request_field.yaml

spec_sample.zip
Expected:
Detect breaking change in request - adding new field
Actual:
Output is empty

Thanks for the additional details.
This is detected as an INFO-level change since the new field is optional.
You can see it by running:
oasdiff changelog ./minimalistic_request_openapi.yaml ./breaking_change_add_request_field.yaml
If the field would have been required, it would be considered a breaking change.
For reference: https://swagger.io/docs/specification/v3_0/describing-parameters/#required-and-optional-parameters


Long incremental build with no changes

Since version 86, once I start ninja build on already compiled build with no changes to source files, it starts building ~2000 actions.
It is mostly rebuilding //third_party/devtools-frontend/.
I'm sure that was not the case with previous versions.
macOS build works fine with ~200 actions on 87.
How to reproduce:
finish build.py
run third_party\\ninja\\ninja.exe -C out\\Default chrome chromedriver

What about automated builds for macOS versions like we have now with other platforms?

There are automated macOS builds. See https://github.com/ungoogled-software/ungoogled-chromium-macos

Thank you for the link, they're missing from here however: https://ungoogled-software.github.io/ungoogled-chromium-binaries/


Remove CosmosDB from Storage Explorer documentation

We need to remove the CosmosDB section in this doc:  https://docs.microsoft.com/en-us/azure/vs-azure-tools-storage-manage-with-storage-explorer?tabs=windows

Draft PR ready for right before we ship: https://github.com/MicrosoftDocs/azure-docs-pr/pull/180770


Enable mdns always

What
Enable mDNS always, not only when no peers are specified.
Why
mDNS is only enabled when no peers are specified, but this is inconvenient when running local tests where I want the app to connect to a specific remote peer and serve up mDNS discoverability locally.

seems repetitive, wondering if we can move a bunch of this logic into a common p2p package?

At this point a little repetitiveness isn't going to slow us down, but it will make it easier to refactor or delete code when we figure out what I've done here is not what we need.


Update renderToSvg.pde

I believe the intention was to use weight not i to give Word weighting, I know it doesn't seem to matter, but you could use norm instead of map (or simpler not create the weight variable).
PS I have made 2nd release of ruby_wordcram

Sorry! This slipped off my radar, but I think you're right. I'll merge this in now, and cut a point-release when I have a moment.

Thank you!


re-enable client integration tests

This moves /packages/*/test/integration to /test/integration
Benefits:

Makes requires in unit tests cleaner (no unit sub-directory)
I don't think integration tests should be "bound" to packages, specially when we'll split them into smaller pieces
Makes setup easier, let's have one prosody config for all integration tests
We can easily reuse the same tests against prosody and node-xmpp-server (and potentially other servers)
Allows us to remove duplicate integration tests (c2s node-xmpp-server and node-xmpp-client)

Coverage decreased (-0.04%) to 78.673% when pulling 94739c0be50477b5313f82790b7d8ed0f537ca97 on integration-tests into 999acbb9c7840b2828ef18d4ace7f4ae0d860569 on master.

Coverage decreased (-0.04%) to 78.673% when pulling 79025b7a01010010b3cdc941bd56bdfe96e9b7a9 on integration-tests into 999acbb9c7840b2828ef18d4ace7f4ae0d860569 on master.

Coverage decreased (-0.04%) to 78.673% when pulling d8e23ef91f66f7c8a1d276bca15c5fceedc6b127 on integration-tests into 999acbb9c7840b2828ef18d4ace7f4ae0d860569 on master.

Coverage increased (+0.02%) to 78.731% when pulling 5ab5b9eccb94e0cdd7432ef14cace3f888f1cf58 on integration-tests into 999acbb9c7840b2828ef18d4ace7f4ae0d860569 on master.

Coverage increased (+0.02%) to 78.731% when pulling e72f1a53cd480191a53bf06ce8f74679c7f921b2 on integration-tests into 999acbb9c7840b2828ef18d4ace7f4ae0d860569 on master.

Coverage increased (+0.02%) to 78.731% when pulling 1af5ee81b65a281608d38a13a6fbe9ca5180ef1b on integration-tests into 999acbb9c7840b2828ef18d4ace7f4ae0d860569 on master.

Coverage increased (+0.02%) to 78.731% when pulling 568e5b9cff26fa539d1209588f2fbf73bda85d5f on integration-tests into 999acbb9c7840b2828ef18d4ace7f4ae0d860569 on master.

Coverage increased (+0.02%) to 78.731% when pulling fa7436220457b2f6f4efd414c73be3937546d531 on integration-tests into 999acbb9c7840b2828ef18d4ace7f4ae0d860569 on master.

Coverage increased (+0.06%) to 78.769% when pulling 75346864fee459cc01eeb6e9d6456f5148a346cc on integration-tests into 999acbb9c7840b2828ef18d4ace7f4ae0d860569 on master.

Coverage increased (+0.06%) to 78.769% when pulling eee91b6f925d20d1592a9cf35ce766b6a3d8b385 on integration-tests into 999acbb9c7840b2828ef18d4ace7f4ae0d860569 on master.


fix: replace subpath mount by folder mount to use secret synchronization

@holyhope
As we have a 0.5.2 branch which is the latest branch of 0.5, the code change should be pushed to that one. 0.5.1 has been released and no need to do new changes.
I asked zm @bitsf to raise new PR to push code to 0.5.2.
We can close this one.


Update code according to new fourmolu version

@ArturGogiyan These changes are blocking my other PR so I did it instead of you :)

Very pain-full PR, which require a lot of rework for existed PR-s. Will look at it closely to avoid it as much as I can.

Sorry, but I repeat this task in a little bit different way: https://github.com/ryukzak/nitta/pull/220 Please, look at it.
Close this PR.


Statement.closeOnCompletion result in MySql Server memory leak

MyBatis version
3.5.x
Database vendor and version
mysql 8
Test case or example project
since Mybatis 3.5.x, SimpleExecutor.doQueryCursor use Statement.closeOnCompletion to close Statement
when in Mybatis 3.4.x,the Statement is closed in DefaultCursor close function
when open the server prepareStatement in mysql(jdbc set useServerPrepStmts=true),closeOnCompletion cannot release mysql server resource, So result in server memory leak.
I think mybe this is mysql jdbc driver's bug, but I don't konw why to use closeOnCompletion instead of close,can mybatis to fix the bug ?
Steps to reproduce
Expected result
Actual result

Please report it to https://bugs.mysql.com/report.php (post the issue URL here so that we can track it).
You should attach a repro or the exact steps to reproduce the problem.
closeOnCompletion substantially simplifies the implementation.

@yanghanqi  have you solve the bug ? we meet the same bug.

@yanghanqi ,
Did you submit a bug report to MySQL?
I couldn't find any relevant issue on https://bugs.mysql.com/
@yanghanqi @wanshiliuyun
If either of you could provide a small demo project that reproduces the problem, I would look into it.
You can find project templates and examples in this repo: https://github.com/harawata/mybatis-issues

@harawata I have report a bug to MySQL with a Java jdbc demo
please ref: http://bugs.mysql.com/113509


Add multi threading, allowing multiple client connections at once

Add multi threading, allowing multiple client connections at once

is it mandatory to use multitheading? Can I suggest a "select" function? The function checks a massive of sockets, including the Servers own ListenSocket for data to read and receives it in one thread.

It's indeed a viable and efficient way to handle things in one thread.  THere's also a limit on the number of connections that are possible simultaniously. But I don't mind the approach for now, if you'd like to implement this feel free to do so!


Fixed broken links to Solidity guide and remove deprecated Migration guide

Fixed broken links to Solidity guide and remove deprecated Migration guide

The following PR caused the nav link breakage: https://github.com/onflow/cadence/pull/2263


Move windows-x64-flutter.zip to windows-x64-debug location.

The dependency is currently uploaded to two different locations. This change is required to remove the duplicate uploads and their corresponding tech debt.
Pre-launch Checklist

[X] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[X] I read the Tree Hygiene wiki page, which explains my responsibilities.
[X] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[X] I signed the CLA.
[X] I listed at least one issue that this PR fixes in the description above.
[X] I updated/added relevant documentation (doc comments with ///).
[X] I added new tests to check the change I am making, or this PR is test-exempt.
[X] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@loic-sharma do we have CI tests that will build a windows desktop app, or should I locally confirm this works?

@christopherfujino I believe all Windows build tests (like Windows run_debug_test_windows) run in post-submit. I would confirm locally :)

This passed locally on my x64 machine:
PS C:\Code\f\flutter> gh co 119177
...
Switched to branch 'remove_duplicate_upload'

PS C:\Code\f\tests> flutter create x5
Downloading Material fonts...                                      372ms
Downloading package sky_engine...                                  159ms
Downloading flutter_patched_sdk tools...                           378ms
Downloading flutter_patched_sdk_product tools...                   346ms
Downloading windows-x64 tools...                                 2,211ms
Downloading windows-x64/font-subset tools...                       164ms
....
PS C:\Code\f\tests> cd x5
PS C:\Code\f\tests\x5> flutter run -d windows
Downloading windows-x64-debug/windows-x64-flutter tools...          5.1s
Downloading windows-x64/flutter-cpp-client-wrapper tools...         61ms
Downloading windows-x64-profile/windows-x64-flutter tools...         4.0s
Downloading windows-x64-release/windows-x64-flutter tools...         4.1s
Launching lib\main.dart on Windows in debug mode...
Building Windows application...
Syncing files to device Windows...                                  59ms

Flutter run key commands.
r Hot reload. 🔥🔥🔥
R Hot restart.
h List all available interactive commands.
d Detach (terminate "flutter run" but leave application running).
c Clear the screen
q Quit (terminate the application on the device).

💪 Running with sound null safety 💪

An Observatory debugger and profiler on Windows is available at: http://<IP_ADDRESS>:55435/wH-PeEFw2dU=/
The Flutter DevTools debugger and profiler on Windows is available at:
http://<IP_ADDRESS>:9100?uri=http://<IP_ADDRESS>:55435/wH-PeEFw2dU=/

ld a windows desktop app, or should I locally c

Validated the artifact exists in the two locations but it will be great if we can validate with tests:

https://storage.googleapis.com/flutter_infra_release/flutter/36db005dd2ccbc820e9cf9e85fedf50d8840588c/windows-x64-debug/windows-x64-flutter.zip

https://storage.googleapis.com/flutter_infra_release/flutter/36db005dd2ccbc820e9cf9e85fedf50d8840588c/windows-x64/windows-x64-flutter.zip

By the way would flutter precache find errors with missing artifacts?

ld a windows desktop app, or should I locally c

Validated the artifact exists in the two locations but it will be great if we can validate with tests:

https://storage.googleapis.com/flutter_infra_release/flutter/36db005dd2ccbc820e9cf9e85fedf50d8840588c/windows-x64-debug/windows-x64-flutter.zip
https://storage.googleapis.com/flutter_infra_release/flutter/36db005dd2ccbc820e9cf9e85fedf50d8840588c/windows-x64/windows-x64-flutter.zip

By the way would flutter precache find errors with missing artifacts?

This is a good point, we should just run flutter precache --all on all platforms. Lemme file a tracking issue for that.


Switch to PyTest test framework, add forest.score() unit test, fix score() bug

In preparation for an end-to-end integration test that will check whether garnet and forest reproduce saved results from the example data, we are changing the test framework to PyTest.  As a proof-of-concept, we implemented a simple unit test for the score() function that calculates negative prizes for forest.  To simplify the test, we moved score() out of the PCSFInput class and made it a standalone function.  This revealed a bug in score() - with the musquared option it produced positive prizes instead of negative - which has been fixed.
There are a few questions to be addressed before merging this pull request:

The score() function comments state that mu should be not equal to 0.  Should this be changed to require mu > 0?
What other changes are required if we switch to the PyTest framework?  Do we need to edit setup.py?  Its test_requirements is currently an empty list.

Great find with the bug and I agree that mu should be >0.
As far as the test framework, I used the cookiecutter template and the requirements were added in. I think by default it would call the python script under tests/. However, it seems that pytest has a different framework for integration with setup.py: https://pytest.org/latest/goodpractises.html, so I'd say go with what they recommend.
sara

The mu > 0 requirement has been addressed:

score() throws a ValueError if mu <= 0
forest.py automatically converts negative mu to 0 and writes a warning to the user
the test class has been adapted accordingly

We are updating setup.py per the PyTest good practices but this is still in progress.  One change is that setuptools is now required because distutils does not support some of the preferred test integration.  I'll add an update here when this is completed and we are ready to merge.

The score unit test now works with
python setup.py test

This branch can be reviewed and merged.


Encoder frame rate seems to depend on input image contents

When giving the encoder random noise it can drop down to as little as 8fps. On normal content it seems to regularly hit 30fps.
What is going on here? Shouldn't the encoder always take the same amount of time? I guess I don't understand JPEG enough to answer properly.

Noisy content generates larger encoded frames. I'm guessing the limitation here is the USB but we could investigate on that.

Maybe we add to the status message the average size of the frame produced?

BTW The system is pipelined right? We are generating a frame while sending the previous frame up the USB?

I'll add something to compute the throughput on the USB. The system is pipelined. When decreasing encoding quality we are able to always encode @ 30fps.

This is an expected behaviour. Status now reports Encoder's output throughput.