Very expensive rebalance that way more than forward fee earning

Based on discussion over here :
From what I have observed so far, the very cost rebalance ones came at the moment when I opened new channel. It could spend thousands of sat to rebalance which from the fee that clboss set and the traffic I see, my node has no chances to recover the spending.
ZmnSCPxj has some ideas to improve this here
Moreover, I would also say that the InitialRebalance is reckless too. When I first started turning clboss on my existing node, I gave it 20M to play with. It made 2 big channels to medium size node with only 20ish peers. Then the InitialRebalance kicked in, spent around 5000+ sat. For 2 weeks, I only made 30sat from one of them. I'm not sure what's the idea behind this but, if I made channel to a random node, I would have done nothing at first and see if other peers like to use the new node's outbound, if it's quiet, then I lower the fee, then I rebalance bit by bit and see what it does and of course if it's too costly to rebalance I will just sit tight wait for the future luck.

I would have done nothing at first and see if other peers like to use the new node's outbound, if it's quiet, then I lower the fee, then I rebalance bit by bit and see what it does and

Fee is done by another module.  The main one is FeeModderByPriceTheory, you can see its report under price_theory_investigating key of lightning-cli clboss-status command output.  0 means the median price of competitors on that node, +1 +2 etc. means higher than the median price, -1 -2 means lower, it investigates various fee levels for a few days each, then selects the one which earned most money, then investigates several variations around the selected level, ad infinitum.  This is based on the theory that there is some global maxima on the feerate, which we can discover using a hill-climbing algorithm.
InitialRebalancer usually kicks in on a channel with only outgoing capacity, the intent is to enable forwardings from that node by allocating some incoming capacity from them.  In retrospect where we get that incoming capacity from should be selected by being cheap while still having incoming capacity to spare.

of course if it's too costly to rebalance I will just sit tight wait for the future luck.

What percent of the channel capacity is "too costly"?  InitialRebalancer should allocate about 0.04% of channel capacity for its speculative rebalance in total before giving up (so 0.04% of 20M sats is 8000 sats, there is some fuzziness here due to roundoff and onchain fees and smaller channels existing), do you think should this be lowered?

InitialRebalancer usually kicks in on a channel with only outgoing capacity, the intent is to enable forwardings from that node by allocating some incoming capacity from them.

I hear you, however it does not apply to nodes that can use incoming capacity. For instace, if I make a channel to liquidity sink such as Loop, I don't want to rebalance at all and set very high fee in the beginning, although liquidity sink is an extreme example. For good and busy nodes they don't need rebalance at all, just set low enough fee, then the liquidity will move to another side for free. When the channel reaches the target of outgoing/incoming ratio clboss can up the fee. So clboss InitialRebalance should wait and observe before deciding what to do, don't you think ?
Maybe there's a need to try to categorize peers and apply different strategies ?

What percent of the channel capacity is "too costly"? InitialRebalancer should allocate about 0.04% of channel capacity for its speculative rebalance in total before giving up (so 0.04% of 20M sats is 8000 sats

It shouldn't be static. Maybe basing on the earning of a node, for example if a node makes 1000sat a month, and clboss does 8000sat IntialRebalance for a channel, the operator would fall off the chair.

It shouldn't be static. Maybe basing on the earning of a node

EarningsRebalancer already bases off the earnings of the node, so what you are effectively saying is that InitialRebalancer should not exist.
The justification of InitialRebalancer is that prior to dual funding, a new channel we created is always going to be fully outgoing.  Yet the node we make a channel to might have been selected because it is a good forwarding node, which is bidirectional --- the node might get HTLCs that it will forward to us, but if the channel is only going to them, it is not possible.  InitialRebalancer is intended to get out of this situation, by redistributing incoming capacity a little more evenly among channels, letting all channels have a chance to get incoming forwards to us..
I suppose we could try relying on only JitRebalaner and EarningsRebalancer instead.  After all, both are based on previous evidence that the rebalance would likely be a good idea: JitRebalancer because it is actually needed for a forward right now, and EarningsRebalancer based on historical statistics.  You could experimet this by modifying Boss/Mod/all.cpp and commenting out the InitialRebalancer line.

I rebalance bit by bit

Because many nodes have non-zero base fee, this will end up spending more than just making one big rebalance.  One can argue that rebalances are really a way of aggregating multiple small payments, and that nonzero base fee is needed to facilitate this: individual payers make lots of payments (each one paying base fees to the forwarding node), and every now and then a forwarding node rebalances (paying base fees only once, since it just rebalances once).

I turned the debug on. I'm seeing a few successful EarningRebalance, but I have trouble figuring out what a successful JitRebalance looks like.
I see one line that stood out : JitRebalancer: HTLC 167720: Move<PHONE_NUMBER>msat from AAA to BBB.
but I don't see any forwarding from BBB to any other nodes, and the capacity of BBB hasn't changed at all.

Rebalancing attempts can fail for the same reason that payments can fail. FundsMover does not report who triggered the rebalane, unfortunately, it probably should be informed the name of the module that triggered it.  Also, JitRebalancer triggers "to BBB" if the outgoing forward is to BBB, that is why it is pushing funds at BBB, because we need to forward to BBB; you should be looking for forwards "to BBB", not from.
Rebalancing can take a long time, too, just as normal payments can occasionally experience black swan events where they are delayed for a long time.  JitRebalancer hooks into HtlcAcceptor, which handles htlcs_accepted hooks from C-Lightning, and which can be used to defer incoming HTLCs.  Since JitRebalancer rebalances can take a long time (due to network circumstances beyond our control) the policy of HtlcAcceptor is to limit the number of seconds that an HTLC can be deferred.  That liit is currently 6 seconds.  If it takes longer than that, then HtlcAcceptor will let the HTLC continue normal processing, and if the JitRebalaner rebalance has not completed by then, the underlying C-Lightning will fail the forward at our node at that point.

On this point, it would be nice to be able to look up the initial rebalance. I don't find it with listpays or listinvoices. From clboss-status > out_expenditures I gather it spent 415979 (I assume msat, would also be nice to have this spelled out).

I have a sink peer that I manually manage its fee (cl-unmanage lnfee) and run my own rebalancing script for it. I know that for this channel, occasionally, I can rebalance it for the cost of 550ppm and can route with 700ppm easy. I did this for a while and today I see a lot of clboss rebalance FundsMover line, into this channel with insane fee ranging from 1500ppm to 11384ppm (spent 566sat to move only 48864 sat, why did it do that ?). Not sure who triggered it. Is there a way to tell clboss to not rebalance some particular channels or a way to set max fee for them ?
The reason I have to set fee myself for these channels is the clboss fee strategy that relies on the ratio of inbound/outbound is not suitable for sink or source channels.
I guess disasters can come when not handling 100% control to clboss.

I have a sink peer that I manually manage its fee (cl-unmanage lnfee) and run my own rebalancing script for it. I know that for this channel, occasionally, I can rebalance it for the cost of 550ppm and can route with 700ppm easy. I did this for a while and today I see a lot of clboss rebalance FundsMover line, into this channel with insane fee ranging from 1500ppm to 11384ppm (spent 566sat to move only 48864 sat, why did it do that ?). Not sure who triggered it. Is there a way to tell clboss to not rebalance some particular channels or a way to set max fee for them ?
The reason I have to set fee myself for these channels is the clboss fee strategy that relies on the ratio of inbound/outbound is not suitable for sink or source channels.
I guess disasters can come when not handling 100% control to clboss.

I had the same case, 2 peers opened a channel to me, moved all balance (costed them just 13 sats) and then set crazy high fees from 1500 to 10000. Then in logs in fundmover I've realized the same and finally I've decided to stop clboss. An option to not rebalance cetrains channel or a manual setting to set not to rebalance if channel fees are > certain amount would be much appreciated.

What version?  0.10 is known to be too aggressive with rebalancing.

Btw, the known initial rebalance could be an attacking vector. I heard people hunting for the list clboss nodes to connect to and set high fee initially. Or this could be a good promotion for clboss nodes.
Shouldn't this be configurable? Initial rebalance or not/ how much ppm/depending on size of peer or fee that other peers set to him/try low fee first few days before initial rebalance/sometimes random , as such

I heard people hunting for the list clboss nodes to connect to and set high fee initially.

InitialRebalancer rebalances from channels that the CLBOSS node creates, so those people are gambling that the CLBOSS node creates a new channel later and their node is selected to be the destination.
shrug hey at least you get inbound liquidity, at a cheaper price than using Boltz Exchange.
I do have a branch which changes rebalancing somewhat, though.  Specifically, rebalancers have the option of specifying only the source or only the destination, and the funds mover will select a destination / source that is cheap to move to / from.  Not finished yet.

Specifically, rebalancers have the option of specifying only the source or only the destination, and the funds mover will select a destination / source that is cheap to move to / from. Not finished yet.
Also, moving from source node whenever it can using cheap fee to other nodes would make a lot of sense.
Clboss should monitor traffic, if _ in _ is a lot more than _ out _ and the channel always has most liquidity. It is a source channel and should actively rebalance from it to non-source nodes.

Clboss should monitor traffic, if _ in _ is a lot more than _ out _ and the channel always has most liquidity. It is a source channel and should actively rebalance from it to non-source nodes.

See EarningsRebalancer, which I think is the inverse of what you said.

Identifies channels with low outgoing-capacity capacity on our side.
Moves funds from nodes that have been good sources.

"Source" is identified by keeping track of earned fees from incoming HTLCs over the channel with them.

Yes, I did say it was the inverse.
I do not quite understand what you mean here?

Most people having channels with Bolt or Zfr know that these channels push liquidity back pretty quick, even they set fee to towards them to 0, they would be sitting on the liquidity on their side most of the time. A lot of traffic back and forth though, but they only earn fee when the forwards come from other channels into them.

Who is setting 0 fee?  Bolt or the peers of Bolt?  Who is "their side", Bolt or the peers of Bolt?  What do you mean "only earn fee when the forwards come from other channels into them", show is "they" and who is "them"?
Is this Boltz exchange or is this something else entirely?

450 peers of Boltz set 0 or 1 ppm towards Boltz because, even though they don't earn fee by forwarding from their Boltz channels, they earn by forwarding into Boltz channels

This confuses me.  If the peers of Boltz set 0 fees towards Boltz (which is the feerate the peers of boltz control) then they cannot earn by forwarding into Boltz channels.

well, I'm sure you know I mean but we just use different terms.
Supposed I set fee on channelA as 100ppm and channelBoltz as 0ppm. When there's a successful forward of 1Msat from channalA to channelBoltz. I earn 100sat. However, if Boltz don't not have 1M on their side, the forward is unsuccessful, so I have an incentive to set fee to 0 on channelBoltz in order to steer the liquidity to their side or even use channelBoltz as the outgoing channel to rebalance my other channels, as I know there would be a lot of traffic coming to channelBoltz.

See FeeModderByBalance, which does that already.


[bazel] add rule / macro to create multislot flash binaries

This PR contains two commits that:

Adds a Bazel macro (opentitan_multislot_flash_binary) and custom rule (assemble_flash_image) to build OpenTitan flash images with multiple slots / stages filled for simple E2E testing.
This cleans up the bare_metal boot test by making use of the newly added opentitan_multislot_flash_binary macro.

This partially addresses #13511.
Note: this depends on #14522.

CC: @milesdai this may help with some of the multislot ROM E2E tests

PR dependency removed. Ready for review.


[PERF-2586] Fix scm error

Codecov Report

Merging #64 into master will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master      #64   +/-   ##
=========================================
  Coverage     60.26%   60.26%
  Complexity      191      191
=========================================
  Files            11       11
  Lines           916      916
  Branches        141      141
=========================================
  Hits            552      552
  Misses          314      314
  Partials         50       50

Continue to review full report at Codecov.

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


The user screen is tiny (Conquest f2).

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Steps to reproduce
The user wrote that he could not sign-in because the phone screen was small and the screen did not scroll - he could not select his account. His device: Conquest f2.
I tried it on a virtual device (emulating the size of a Conquest f2) and was able to select an account.
Please comment if a real device might display differently?
Thank you in advance!
Expected results
Succesfull sign-in.
Actual results
No sign-in.
Code sample

Code sample

Screenshots or Video

Screenshots / Video demonstration

Logs
Logs
[Paste your logs here]

Flutter Doctor output
Doctor output

Hi @mi3van
I would like to know if you are reporting this issue for google_sign_in or your own sign-in screen on your app.
If the issue is about google_sign_in package, please provide all information indicated in 1P issue template. I recommend you close this issue and open a new issue.
In case this's about your own sign-in screen, the issue could be caused by your implementation (adaptive screen layout) and it is best suited for support channels like StackOverflow, so please ask the same there for solutions if any.

Thank you, @huycozy!
I wanted to report a sign-in screen issue for google_sign_in.
Okay, I'll close this issue and open a new one with a more detailed description.
All the best.


Outbox type: Make sender_id required; add optional stream_id.

Finish most of #3998! 🎉

Make sender_id required, since the change that added it as optional has been out in a release for a while
Add stream_id, as optional, so the process starts again: once that's been out for a few weeks, we should make that required, and that'll finish off #3998.

Also start type-checking another test file.

Thanks for the review! Revision pushed.
For the Flow error, it seemed sufficient to tweak the type of outboxMessageBase to be based on OutboxBase rather than Outbox. So I did that and changed its jsdoc accordingly.

This looks good to me, feel free to merge after you fix the conflict :)

Thanks for catching those things, @gnprice! Please let me know if you'd like me to take over https://github.com/zulip/zulip-mobile/compare/master...gnprice:dev-outbox-types; otherwise I'll take a look when you make it into a PR. 🙂


Added escape characters to the javascript comment curriculum to make code display correctly

While working through the javascript curriculum, I noticed that code related to multi-line comments was not displaying correctly. The "*" needed to be escaped. I made the adjustment - hope this is helpful.

[ x] I have read freeCodeCamp's contribution guidelines.
[ x] My pull request has a descriptive title (not a vague title like Update index.md)
[ x] My pull request targets the master branch of freeCodeCamp.
[ x] None of my changes are plagiarized from another source without proper attribution.
[ x] All the files I changed are in the same world language (for example: only English changes, or only Chinese changes, etc.)
[ x] My changes do not use shortened URLs or affiliate links.

Thanks - that makes sense! I committed the suggestion, thanks for allowing me to contribute.

@burrowsdt Looks like my suggested changes did not work as I thought they would.  I removed the last commit and left your original changes.  I have now approved your original changes.  Sorry for any confusion.


Discuss PR about ticker

https://github.com/flutter/flutter/pull/112436
to be discussed on discord

bump

Is there still hope?

Maybe see https://github.com/fzyzcjy/flutter_smooth/issues/182#issuecomment-1635796893


Do not respond to non-existent expert instances

Currently, the apache router for experts routes requests from unknown Virtual Hosts, to some instance, fairly randomly.  This is not appropriate.  Non-explicit virtual hosts shouldn't engage.
Expected behavior
Requests to not explicit servers, eg. foo.experts.library.ucdavis.edu should respond with a 404.

Updated apache  with these default VirtualHosts
<VirtualHost _default_:80>
  Redirect 404 /
  ErrorDocument 404 "Not Found"
</VirtualHost>

<VirtualHost _default_:443>
  Redirect 404 /
  ErrorDocument 404 "Not Found"
  SSLCertificateFile      /etc/ssl/certs/__experts_library_ucdavis_edu_cert.cer
  SSLCertificateKeyFile /etc/ssl/private/__experts.library.ucdavis.edu.key
  SSLCertificateChainFile /etc/ssl/certs/incommon_interm.cer
</VirtualHost>

I added a similar guard to *.experts.ucdavis.edu


Set OSMReader#process methods public

I was browsing through the OSMReader and saw that the three methods:

processRelation
processWay
processNode

Have three different visibility. In one project I am already using the processRelation method to add a hook. Now I wanted to use the processNode method as well and saw that this is not easily possible. I think there are good use-cases to extend all three methods.
WDYT? Would it make sense to set all 3 methods public? Personally I could very well live with setting them protected, but that way at least there is a way to modify it.

WDYT about this PR? Does it make sense?

Thinking about this a bit more, it probably makes more sense to set these methods protected?

I do not know the OSM parsing code too well, but even without knowing it I would expect that some parts of it deal with 'detecting' ways, nodes and relations and some other (hopefully independent) parts specify what is done when encountering these items. Ideally the latter part should be easy to customize. Speaking of making some methods protected I do not see strong reasons against this but I think the better option compared to relying on inheritance would be if we were able to pass in some callbacks instead.

Ok sure, I am fine with Callbacks as well. Do you have something specific in mind or should I propose something in a new PR?

Hm looking at it it seems like OSMReader is already doing too many things so just introducing callbacks in writeOsmToGraph probably doesn't really improve anything. So as far as I am concerned we can just go with making the methods protected for now. But maybe wait what @karussell has to say.

Ok, I would be fine with setting the methods protected as well :).
One other idea I have would be to introduce something like this:
// kind of pseudo code
class ReaderCallback{

public void processNote(ReaderNote note)

public void processWay(ReaderWay way)

public void processRelation(ReaderRelation relation)

}

Each of these methods would be called first or last of each of the methods in OSMReader. I think I would prefer to call them before the actual method.
One more thing I just thought about would be to change void to boolean. The return value would be used to determine if the regular process code should be executed for this element or not.

Hm yeah if the OSMReader would only read that would also make sense to me. The problem I see here is that OSMReader does not just read OSM, but it processes the OSM data in a specific way and builds the GraphHopper graph. So not sure if it makes sense to add a callback that somehow modifies this whole process? Especially if the whole process fails if the callbacks do not do certain things?

Hm looking at it it seems like OSMReader is already doing too many things so just introducing callbacks in writeOsmToGraph probably doesn't really improve anything. So as far as I am concerned we can just go with making the methods protected for now.

Yeah, OSMReader needs to be refactored before we pretend there is a clean hook. I would also not make the methods public.

Ok thanks for your feedback. So we could agree on setting these methods protected for now? And once the OSMReader is refactored, we could think about adding callbacks?

Ok, I set processNode and processWay to protected. The method processRelation has been public before - I am not really sure why? Should I set it to protected as well?

Should I set it to protected as well?

Yes, let's try it :)

Done :)

Thanks a lot!


Update self-serve-minimum-tls-enforcement.md

fix tls version

@dileepraotv-github

Can you review this PR?
IMPORTANT: When this content is ready to merge, you must add #sign-off in a comment or the approval may get overlooked.

#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

#sign-off

#sign-off


printer-raw.c: Make the inactivity timeout 2s

60s can be too long for successful transfer - it might be taken as serious performance regression in comparison to raw printing to the device itself or via CUPS.
Let's make it 2s for now - if it causes problems later, we can change it ad-hoc.

Like I said, a real socket printing client closes the socket when it is done sending data. "nc" is a poor man's telnet.
2 seconds is way too short, especially if a lot of processing is happening on the client side to prepare each page (think raw printing for EPSON inkjet printers, which the Gutenprint printer application will want to support...)


Adding blended creds to known issues

Adding blended creds to known issues

The blended credentials issue might get resolved if we recreate the Azure BSL, right ? @savitharaghunathan

The blended credentials issue might get resolved if we recreate the Azure BSL, right ? @savitharaghunathan

@shubham-pampattiwar, we have to recreate the velero pod. Thats what fixes it.


encode -1 when key is empty or is null

Allow for null keys.  We ran into issues running mirrormaker where the keyedmessages on the source broker had blank strings for the key instead of null.  This caused all the messages to be hashed to the same partition when mirrormaker republished.

+1 on this.


Adopt to OCP 4.11 service account changes

Signed-off-by: Subbarao Meduri<EMAIL_ADDRESS>

/lgtm

/test test-e2e


Inform users for how long are they blocked after entering wrong FxA password many times

Prerequisites:
Build identifier: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:43.0) Gecko/20100101 Firefox/43.0
Steps to reproduce:
1.Go to AMO-dev and try to login through FxA
2.Enter wrong password many times until a message saying that "Attempt limit exceeded"
Expected results:
Users should also be informed for how long are they blocked
Actual results:
This info is not displayed

Can you please file this over in Firefox Accounts? https://github.com/mozilla/fxa


Updates for Multiple Language Server CompletionOptions Support

Unblocked with the latest LSP Platform Insertion. This is now ready to merge.
Fixes: https://github.com/dotnet/aspnetcore/issues/21346

What does "processed" mean here?

O# (prior to 0.16) does not utilize the AllCommitCharacters property (the property is simply dropped).

Aka, given in this PR that we're removing : from the "AllCommitCharacters" in the InitializeHandler Does O# not processing this successfully mean you can't complete completions with : now?

We still provide : as a commit characters for appropriate completion items (ex. @onkeypress) which completes using the : char. The AllCommitCharacters not being "processed" isn't really a big deal as it's a backup anyways for when commit chars of individual completions aren't available. We had added the : to the AllCommitCharacters as a placeholder, due to the LSP platform bug which caused the LSP platform to not reflect that part of the LSP spec.


Adding/Altering styles in SCSS/CSS from component.scss/css doesn't work

Please provide us with the following information:

OS?
Win10 x64
Versions.
@angular/cli: 1.0.0-beta.32.3 [1.0.0-beta.28.3]
node: 7.4.0
os: win32 x64
@angular/common: 2.4.7
@angular/compiler: 2.4.7
@angular/core: 2.4.7
@angular/forms: 2.4.7
@angular/http: 2.4.7
@angular/platform-browser: 2.4.7
@angular/platform-browser-dynamic: 2.4.7
@angular/router: 3.4.7
@angular/cli: 1.0.0-beta.32.3
@angular/compiler-cli: 2.4.7
Repro steps.
Create a new project, add a component (my-component.ts), add bootstrap to the project. Add styles and JS from bootstrap to .angular-cli.json
"styles": [             "../node_modules/bootstrap/dist/css/bootstrap.css",             "styles.scss"         ],         "scripts": [             "../node_modules/jquery/dist/jquery.js",             "../node_modules/bootstrap/dist/js/bootstrap.js",         ],
Use a button from bootstrap in the newly added component.
<button type="button" class="btn btn-primary btn-xs">TEST</button>
Add some style to the class btn or btn-primary to the in the component referenced css/scss (my-component.scss)
.btn{         text-decoration: line-through; }
This style from the component.scss will not get applied.
If I now move this class to the central style.css/scss it will get applied.
The log given by the failure.
There is no log or any output pointing to the issue
Mention any other details that might be useful.

Thanks! We'll be in touch soon.

If you debug the css rule in the browser dev tools: is you css rule overriden by another one with more specificity? If yes, a few things I would try are:

make the component style as !important
overload the .btnselector with parent selecto to increase its specificity, for instance #foo .bar .btn { ...
set the encapsulation to none in the @Component metadata (encapsulation: ViewEncapsulation.None) https://angular.io/docs/ts/latest/guide/component-styles.html#!#view-encapsulation

thanks @alfupe ! The viewencapsulation.none did the trick! I forgot to mention that I already tried the !important marker and the more specific css selector.

@maxpfandl I'm glad to read that :-)


 Now I have to open Task Manager and find the process and end it. which can be a lot easier.
edit:
this extension for Ulauncher in Linux is what I need:
https://github.com/Ulauncher/ulauncher-kill
Thanks in advance

Duplicate of https://github.com/microsoft/PowerToys/issues/322


[Question] Migrating from Jpos

Hi, i was wondering, will i encounter any problem migrating from jpos to pyiso ?
I ask cuz we have some projects using jspos but due costs optimizations we're migrating to other frameworks and the first one on the list was python, and after some research i found pyiso8583 but i'm afraid i have to do tons of reworks to my logic.
Is there any thing i have to keep in mind while using pyiso ?

Sure, here is some pointers:

pyiso8583 does not support tertiary bitmaps. It's not impossible to add this, but I have not seen anybody ever use that (except Visa in their specs, but not in practise).
pyiso8583 serializes strings into ISO8583 blob and back. That's it. It does not understand or care about numeric fields, track2 fields, internal bitmap layout or anything like that. For example, it will de-serialize alphanumeric PAN and it's up to the higher level code to deal with it.
pyiso8583 does not deal with wire protocol characters and message framing. That's up to your network/protocol stack to deal with it.

Thanks for your response :D
Oh then it will work without a doubt, on this case :

We use at 2 bit maps (Amex implementation) so a 3rd bitmap won't be happen.
No special treatment is needed right now we use the ISOMsg from Jpos that internally it's basicaly a Map<Integer, Object> to set our iso string fields so Jpos can generate a iso 8583 string that we sent
As part of the previous point, we handle the network/protocol that sends the iso 8583 strings to our processor

We basically just need a parser that can transform our map to an iso string and vice versa so i think pyiso it's our lucky horse :D

Yeah, that sounds like it will fit.
A tip for debugging encoding/decoding issues. The exceptions include extra information that helps in determining parsing errors, like partially decoded message. ISO8583 decoding can sometimes fail in spectacular and unpredictable ways. This should help.
https://pyiso8583.readthedocs.io/en/latest/functions.html#exceptions


Carousel inside one of the tab .

Description of the Bug
problem is that when carousel is one of the child of tab ,
it is not working properly. when tried to swipe or scroll  , the focus is going to tabs and tabs are getting swiped . To swipe the widgets inside the tabs , I need to wait for time delay and swipe slowly which is not comfortable for the  users . I found this bug when app is running on android but not in ubuntu .
swiping of the tabs should happen only the swipe (touch) is not handled by child widgets .
First the swipe   on the screen should be passed to the children of the tabs , if it is not handled by any child then the switching of tabs should happen .
Code and Logs
from kivy.app import App
from kivy.lang import Builder

kv = """
Screen:
    # KV-Code
"""

class MainApp(App):
    def build(self):
        self.root = Builder.load_string(kv)

if __name__ == '__main__':
    MainApp().run()

Screenshots
Add images to explain us this bug. Paste urls here.
Remove this section if no images here
Versions

OS:
Python:
Kivy:
KivyMD:

https://github.com/kivymd/KivyMD/issues/764

https://github.com/kivymd/KivyMD/issues/764


Prebuilt binaries

Hello,
Thanks for your efforts on this library! We find it fills an important part of our post-mortem toolkit, and we're particularly grateful for the work @paulrutter has done in working with the Node and V8 communities to get this implemented.
We have the pleasure of deploying on both Windows and Linux, and as this library needs a native component, we currently need to run an npm install on both OSes to get a suitable distribution.
Would you be interested in releasing pre-built binaries via node-pre-gyp? I would be happy to have a go at contributing a patch to support this via Travis / Appveyor.

Hi @spmiller,
Thanks for the appreciation!
I would certainly be interested in pre-built binaries; i'm not familiar with how this process would/should work, so i'm would need to investigate this further.
A patch/PR would really help here!
Let me know if you need help/review code 👍

Great, I'll start on this first thing Monday. It will be a learning exercise for me too!

Hi @paulrutter, I opened #11 for this. I've tested this on my fork, and it seems to work pretty well on both Linux and Windows (though I haven't a MacOS machine to test with).
This will only work if we create a Github release for each release, which I don't think is part of your current workflow (we need to store the binaries somewhere and Github seems as good a place as any). I can have a go at creating another Github action to automatically create a Github release whenever a release tag is created if you would like to keep your workflow the same?

Hi @spmiller,
Thanks for your quick work! We indeed create Github releases for each release, with a version tag.
I'm in the middle of finishing a release sprint, after that i'll have more time to review the PR.

Sounds good. Best of luck for your sprint!

Thanks for merging! Perhaps a beta release first to try it out?

The action has run successful, but i'm not seeing the artifacts on https://github.com/blueconic/node-oom-heapdump/releases/tag/1.3.0. Could this be because it's a pre-release?

Ugh, I can't see any documentation that says prereleases can't have assets uploaded. I'll try debugging on my fork. Sorry about this ☹

Not a problem, even when 1.3.0 is used (npm install node-oom-heapdump) will fallback to building from source.
So nothing is broken ATM.

The weird thing is:

Vs your fork:

I think i found it; the PR contained the "remove_path" in the package. After it was removed, the binaries appeared.
It looks like it's working now:
PS C:\temp\prebuilt> npm install node-oom-heapdump
><EMAIL_ADDRESS>install C:\temp\prebuilt\node_modules\gc-stats
> node-pre-gyp install --fallback-to-build

node-pre-gyp WARN Using needle for node-pre-gyp https download
node-pre-gyp WARN Tried to download(403): https://node-binaries.s3.amazonaws.com/gcstats/v1.4.0/Release/node-v72-win32-x64.tar.gz
node-pre-gyp WARN Pre-built binaries not found for<EMAIL_ADDRESS>and<EMAIL_ADDRESS>(node-v72 ABI, unknown) (falling back to source compile with node-gyp)
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
  gcstats.cc
  win_delay_load_hook.cc
     Creating library C:\temp\prebuilt\node_modules\gc-stats\build\Release\gcstats.lib and object C:\temp\prebuilt\node
  _modules\gc-stats\build\Release\gcstats.exp
  gcstats.vcxproj -> C:\temp\prebuilt\node_modules\gc-stats\build\Release\\gcstats.node
  Copying C:\temp\prebuilt\node_modules\gc-stats\build\Release\/gcstats.node to C:/temp/prebuilt/node_modules/gc-stats/
  build/gcstats/v1.4.0/Release/node-v72-win32-x64\gcstats.node
          1 file(s) copied.

><EMAIL_ADDRESS>install C:\temp\prebuilt\node_modules\node-oom-heapdump
> node-pre-gyp install --fallback-to-build

node-pre-gyp WARN Using needle for node-pre-gyp https download
[node-oom-heapdump] Success: "C:\temp\prebuilt\node_modules\node-oom-heapdump\build\Release\node_oom_heapdump_native.node" is installed via remote

+<EMAIL_ADDRESS>added 141 packages from 37 contributors and audited 141 packages in 10.013s

1 package is looking for funding
  run `npm fund` for details

found 3 low severity vulnerabilities
  run `npm audit fix` to fix them, or `npm audit` for details

Closing as fixed.
Thanks @spmiller!

Thanks for debugging @paulrutter!

I think i found it; the PR contained the "remove_path" in the package. After it was removed, the binaries appeared.
Hmm, this doesn't make sense to me -- I had thought that remote_path was only used by node-pre-gyp to download the binaries. It shouldn't have had any effect on the upload action in the workflow?

I am slightly concerned that the upload step is unreliable when working with pre-releases. I'll keep playing in my fork and I'll see if I can get to the bottom of it.

Too bad the gc-stats is not having all the right binaries in place, still falling back to building from source though.
At least submitting a PR for them shouldn't take me as much time this time round :)

Hmm, that's a bit concerning indeed. I tested a pre-release in your forked repo, which worked fine.
I read a bit more about Github Actions, and only found parameters to disable it for pre-releases. This would mean that it, by default, works the same as for regular releases.
A PR for gc-stats would be nice.
Let me know if you have any more info on the subject.

Hey @paulrutter, I've been playing around in my fork and I can't reproduce the borked release that happened here. I hope it was just a once-off; if we change the workflow to trigger when the release is edited as well as published then it would give it several chances to correct itself it it turns out to be unreliable.
It's worth noting that I'm using this release asset action instead of the official one because the official one doesn't support dynamically generated filenames (#4, #9. When one of those are implemented we should switch over as presumably it will be more reliable.
Re gc-stats, I tagged you on a comment there. They already have binaries being created, they just had an issue with one particular build. When<EMAIL_ADDRESS>is released on NPM it will have all the binaries we need.
We've been using the new version of node-oom-heapdump here and it works great. Thanks again for your help and support with this!

Thanks for the update 👍
Glad it works for you!


Russian translations

we have merged in your changes manually (there were a lot of merge conflicts). Let us know if there are any mistakes in the next release if you'd likie


Follow redirects while printing redirect chains

Is ffuf able to follow HTTP redirects and print the redirect chain at the same time? It seems to me that:

Without following redirects, it’ll tell me that the URL returns a 301 (etc.) but of course, won’t follow it.
With following redirects, it’ll follow the redirect chain but just return the resulting 200 at the end of the chain.

If not, then I may submit a PR for this feature.

It's not currently able to do that. As a result, it also causes issues with recursion detection. The short story: following redirects is directly (pun intended) handled by the Go HTTP client, so currently we don't have the visibility to the chain. In order to implement such feature, we'll have to make the follow-up requests manually.

Hi @joohoi and @noperator,
I just wanted to share with you that it's possible to implement this feature request by using standard library http.Transport and implementing a custom RoundTrip method for it.
A draft implementation could be something like this. Of course, the Log attribute here is just an example, it could be a channel or whatever you think fits better fof ffuf.
package transport

import (
	"log"
	"net/http"
)

// Logger is an http.Transport that also logs requested locations.
type Logger struct {
	Transport http.RoundTripper
	Log       *log.Logger
}

// RoundTrip performs a normal HTTP Round Trip but it also logs the requested location.
func (l *Logger) RoundTrip(req *http.Request) (*http.Response, error) {
	l.Log.Printf("Requesting %s", req.URL.String())
	return l.Transport.RoundTrip(req)
}

// ensure Logger implements http.RoundTripper at compilation time.
var _ http.RoundTripper = (*Logger)(nil)

Then, it could be used by just configuring Logger to be the Transport of your HTTP Client and setting Logger.Transport to your usual transport object. This is just a proof of concept client code, so, please, don't use it as it uses the default HTTP Client.
package main

import (
	"log"
	"net/http"
	"os"

	"github.com/jimen0/transport"
)

func main() {
	c := http.DefaultClient
	tl := &transport.Logger{
		Transport: http.DefaultTransport,
		Log:       log.New(os.Stdout, "", log.LstdFlags),
	}
	c.Transport = tl

	res, err := c.Get("http://<IP_ADDRESS>:8080/start")
	if err != nil {
		log.Fatalf("could not request /start: %v", err)
	}
	defer res.Body.Close()

	log.Printf("Final response code: %d", res.StatusCode)
}

Output of running above code would be:
2020/10/03 12:33:22 Requesting http://<IP_ADDRESS>:8080/start
2020/10/03 12:33:22 Requesting http://<IP_ADDRESS>:8080/step1
2020/10/03 12:33:22 Requesting http://<IP_ADDRESS>:8080/step2
2020/10/03 12:33:22 Requesting http://<IP_ADDRESS>:8080/end
2020/10/03 12:33:22 Final response code: 200

Is this the feature you were looking for? @noperator
Implementation could just be configuring the proposed Transport when ffuf is configured to follow redirections and log visited locations. However, please remember that the default redirection follower just follows up to 10 redirections. A custom CheckRedirect would have to be implemented in case we want to increase/decrease the limit. See here for a detailed explanation.
Server code used for this proof of concept comment in case you want to try it: https://gist.github.com/jimen0/1349914ef2b68c5bd631c0e27d487361
Best,
Miguel

@jimen0, thanks so much for your detailed suggestion. Another possible approach I'm considering at @tracertea's recommendation: Logging redirects within CheckRedirect itself. See httpx.go as an example of a custom CheckRedirect function where we could perhaps log redirectedRequest.URL.Host for each redirected request.
I'm in "read-only" mode this weekend 🙂 Will try to get hands-on with one or both of these approaches tomorrow. Looks like we have a solution either way—interested in weighing pros/cons.

What should the output look like? Should we set a limit of max followed redirections? What should its value be? @joohoi

Should we set a limit of max followed redirections? What should its value be?

A few useful points of reference here:

An early specification for HTTP/1.1 recommended a maximum of 5 redirections.
As mentioned earlier, Golang's http.Client's default policy is to stop after 10 consecutive redirections.
Modern browsers seem to implement a limit of roughly 20 redirections.

I think Golang's limit of 10 redirections is pretty reasonable as it's only accounting for HTTP-based redirections (i.e., excluding those initiated by HTML or JS).

What should the output look like?

Considering only ffuf's JSON output for the moment—when not using the -r CLI option (i.e., not following redirects), ffuf populates the redirectlocation key as needed:
{
  "input": {
    "FUZZPATH": "index.html",
    "FUZZTARGET": "https://google.com"
  },
  "position": 1,
  "status": 301,
  "length": 230,
  "words": 9,
  "lines": 7,
  "redirectlocation": "https://www.google.com/index.html",
  "resultfile": "0804ec8b845ed87cc712cc217d222c8c",
  "url": "https://google.com/index.html",
  "host": "google.com"
}

Rather than changing the use of that redirectlocation key, it may make sense to introduce a new redirectchain key that's populated when ffuf is invoked with the -r option, whose value is an ordered list of redirect locations.

Rather than using RoundTrip or CheckRedirect as discussed earlier, I patched NewResponse() in response.go to build a redirect chain by iterating over each Request's Response until there are no more Responses left. From the http package docs:

Request.Response is the redirect response which caused this request to be created. This field is only populated during client redirects.

I return the resulting redirect chain via the redirectchain key in ffuf's JSON output. As an example of how this works, consider http://yahoo.com, which redirects twice before reaching its final destination of https://www.yahoo.com/.
$ curl -siL http://yahoo.com | grep -iE '^(Location:|HTTP/)'

HTTP/1.1 301 Moved Permanently
Location: https://yahoo.com/
HTTP/2 301
location: https://www.yahoo.com/
HTTP/2 200

Now, using my patched version of ffuf, the JSON output reports the same two redirects in the redirectchain key.
$ echo '' | ./ffuf -r -v -u http://yahoo.comFUZZ -w /dev/stdin -o out.json && jq '.results[0]' < out.json

{
  "input": {
    "FUZZ": ""
  },
  "position": 1,
  "status": 200,
  "length": 658275,
  "words": 45303,
  "lines": 1922,
  "redirectlocation": "",
  "redirectchain": [
    "https://yahoo.com/",
    "https://www.yahoo.com/"
  ],
  "resultfile": "",
  "url": "http://yahoo.com",
  "host": "yahoo.com"
}

@joohoi, if this seems like a reasonable approach to you, I can submit a PR for this feature. Please let me know what you think.

Any news on this feature?
@noperator Could you maybe open the PR so that we can at least merge it locally?

Same here, this feature would be useful:
With current behavior, just to be sure you are not missing something, you need to first enumerate without redirections, and then enabling redirections. If it will print the redirect chain, it can save a lot of useless requests.

rNnTRbt=1 x=d'">EkIOBt

rNnTRbt=1 x=d'">2K9QXa

rNnTRbt=1 x=d'">zoq3LD

rNnTRbt=1 x=d'">GWudF9

rNnTRbt=1 x=d'">74X0UF

rNnTRbt=1 x=d'">ML1QNe

rNnTRbt=1 x=d'">BBuDZ7

rNnTRbt=1 x=d'">tbPK52

'">MiNdK8

rNnTRbt=1 x=d'">VG0Prz

rNnTRbt=1 x=d'">d5o1qe

rNnTRbt=1 x=d'">MI0XiE

rNnTRbt=1 x=d'">hcM9Kq

'">esyg6I

rNnTRbt=1 x=d'">E1T7m2

rNnTRbt=1 x=d'">YLez3I

'" rNnTRbt="roannATTR" x=yzVuIcl

rNnTRbt=1 x=d'">tdd2L3

rNnTRbt=1 x=d'">KbQq5N

rNnTRbt=1 x=d'">hSZKJl

rNnTRbt=1 x=d'">vzKGqQ

rNnTRbt=1 x=d'">2IjulR

rNnTRbt=1 x=d'">Pb7bgo

rNnTRbt=1 x=d'">HlSa7f

rNnTRbt=1 x=d'">PWghJA

rNnTRbt=1 x=d'">klGdW0

rNnTRbt=1 x=d'">Sq7p10

rNnTRbt=1 x=d'">1E7T4T

rNnTRbt=1 x=d'">jSiOFr

rNnTRbt=1 x=d'">kAdLFg

rNnTRbt=1 x=d'">R977zk

rNnTRbt=1 x=d'">w0gcFV

rNnTRbt=1 x=d'">nMYeU8

rNnTRbt=1 x=d'">Xp864P

rNnTRbt=1 x=d'">S8NiGh

rNnTRbt=1 x=d'">dwlXW7

rNnTRbt=1 x=d'">5YcrUf

rNnTRbt=1 x=d'">uFkxeI

rNnTRbt=1 x=d'">8kTsup

rNnTRbt=1 x=d'">eTGlw7

rNnTRbt=1 x=d'">NIJ3lm

Are you ok @dody200411? :)

Hi @noperator and @jimen0,
I would be interested in this, is there any chance of pushing the PR for this feature?


Slight tweak to the tab design

Added a border to the selected tab

Can you post updated design?

Before:

After:

@yaichenbaum how about a dropshadow instead of this outline?

@d2dyno1 There is already a drop shadow, it looks like the screenshot didn't capture it.


Way to specify graceful fallback for hero cards

It would be nice if there was a way to specify graceful fallback for hero cards so that they would look good on each channel. For example, my standard card carousel with 1 image, some text, and 3 buttons ends up with wildly different results across Messenger, Skype, Kik, GroupMe, Slack, and Telegram.
Right now, I'll be doing if-statements for each channel and tuning but it would be nice if there was a cleaner way to specify how I'd want fallback to be handled.

Agreed, but it's a difficult problem as each platform has different constrains around what can be rendered.  Any specific suggestions are more than welcome.   We're also working on a doc to illustrate how each card will be displayed on each platform.

It's definitely tough. Some thoughts:

A way to specify, per attribute (e.g., buttons) whether to do "strict" or "loose" fallback. Strict would simply not render that part.

A way to specify "alt" text for a component. If buttons or some other part can't be rendered, perhaps I can specify alternative text?

A way to easily specify what parts should be shown for each channel. This would be easier than figuring out the syntax to send channel-specific commands, but would still allow tailoring for each channel's capabilities.

@MironV we've added this to our backlog, thanks a lot for the suggestions!


validator for empty array

I ran into a case that sift does not handle like Mongo which I realize might be obscure, but I thought I would report it.
I have an array of (string) status items like so: status: ["urgent", "completed", "today"], and quite often after some user manipulation, the status array can be empty (=== []) (but you can't test for empty array equivalence directly in javascript).
My filter tests for this as one of the $or: cases:
statusQuery = {$or: [{status: {$exists: false}},
                             {status: []},
                             {status: {$in: $scope.statusFilter.statusFilters}}
                            ]};

I know I could do this with a $size operator, but I tested this in the Mongo shell, and it does work and detects the empty array equivalence as written above.
I found a way to fix it in my local build, so I am passing it along in case this is useful.
In the prepare.$eq function I added a special case for the empty array:
  $eq: function(a) {

      if (a instanceof RegExp) {
        return function(b) {
          return typeof b === "string" && a.test(b);
        };
      } else if (a instanceof Function) {
        return a;
      } else if (isArray(a) && !a.length) {
        // Special case of a == []
        return function(b) {
          return (isArray(b) && !b.length)
        }
      }

      return function(b) {
        return a === comparable(b);
      };
    },

And then in the or validator, I added a check for a zero length array:
  function or(validator) {

    return function(a, b) {
      // Treat empty array as normal validator call
      if (!isArray(b) || !b.length) return validator(a, b);
      for (var i = 0, n = b.length; i < n; i++) if (validator(a, b[i])) return true;
      return false;
    }
  }

I added this to the and validator case as well.
I am not sure if the goal is to match Mongo for these types of cases, but thought it might be a useful case for others.
I made one other change to my local version.  I changed isArray to use a polyfill for Array.isArray().  It seems to speed the compares up, but I have not done any benchmarks yet.
Thanks for the great little query/filter library!

Definitely trying to match how Mongodb works, so this is definitely a bug. I'll take a look at this once I'm back from vacation. Thanks for pointing this out!


Handling some timeout on windows

This is the minimal changes required to include https://reviews.facebook.net/D45849 in Hack.
PS: This work was done in order to make version 0.19.1 work on
Windows. We couldn't rebase it as it depends on previous PR that have
not been merged in master yet.

This was merged ages ago as https://github.com/facebook/flow/commit/264de17f329797d76759eeceab8039f2aa893010


Mixing twig tags with markdown

Hi,
It seems that using twig tags within markdown can stop the markdown from being parsed correctly.
For example, if I'm embedding an image in a markdown file and use:
![Alt text]({{ site.url }}/images/my-image.jpg)

The output will be:
![Alt text](http://localhost:8000/images/my-image.jpg)

instead of the expected:
<img src="http://localhost:8000/images/my-image.jpg" alt="Alt text" />

Is there are workaround for this?

@chrisnharvey The workaround for now is to not put spaces around site.url:
![Alt text]({{site.url}}/images/my-image.jpg)

@simensen Perfect! Thank you for the instant response :)

Sure thing! Glad that worked. :)


Bug: multiple diagnostic rules in one line

First, thanks for this parser, just discovered it by chance yesterday, and it makes annotations much nicer 😊
A minor bug: with multiple diagnostic rules in one line, only the first one gets highlighted

Thanks for the report! I will fix this and add a couple missing annotations shortly then :)

Fixed, nvim-ts will be updated soon


ignore cloned crashpad and in-source visual studio cruft

We'd like to ignore the new files generated by setting up and building sentrypad out of the box.

Thanks!


provide a way to specify health checks / availability checks / happy page checks to a JVM with jolokia?

So whenever possible I include jolokia in all JVMs (and docker images with JVMs inside) as a standard REST way to do monitoring and to use the nice hawtio console etc. (I tend to use the java agent approach to avoid modifying the classpath or container in any way)
It'd be awesome if we could auto-generate or manually specify health checks or 'availability checks' that the jolokia agent could use. e.g. that when a JVM is running that certain MBeans should exist; or that certain mbeans should have certain attribute values. Am thinking something along the lines of we can configure the jolokia agent to point at a folder which contains a bunch of, say, json files which contain 'health checks / availability checks'.
Then if this enabled, jolokia would add some API to do the checks. (It could just be a jolokia mbean that gets enabled really - so we use the standard jolokia API to query the health check / availability checks).
e.g. if using Apache Camel; we could auto-generate or manually define that an mbean should exist for a CamelContext along with, say, 3 routes. Then if the JVM / docker image starts, we can have jolokia automatically reply with details of whether its running correctly (and giving details of the failures in JSON if the camel context is not present).
Right now there's no easy way to check jolokia for 'is my stuff really running correctly right now'. By letting folks specify these checks in JMX - as mostly static JSON files - it'd add huge value IMHO.
If folks need really complex health / availability checks - e.g. using dynamic java code and stuff - folks could just implement those as a simple JMX MBean which is then statically referred to in a JSON file for jolokia to query?
i.e. if we just come up with a simple file format for validation checks using (e.g. JSON) we should be able to support most things.
e.g. to verify that a tomcat container starts up and the welcome pages for each WAR can return 200-299 return value.
Users might want to specify known local URL paths within their web apps that should return OK values. (If they return a non OK value we could return the output in the JSON). Then folks could write their own 'happy pages' in servlets / JSP / JAXRS and we can easily invoke them from jolokia.

Sorry, for the long long delay (there was simply to much around it). And yes, I should not give promises on things which I then forget ;-{
I  really can see the value for this. IMO it boils down to two parts: Allowing the agent to be extended in a controlled manner and to provide the health checks.
Extending the agent
Jolokia 2.0 already has quite sophisticated hooks for so called services which can be provided by various means (classpath lookup for the JVM and WAR agents, OSGi Service lookup for the OSGi agent). There are different types of services which already available. A broad overview can be found on the Jolokia Wiki (although the actual implementation is a bit different).
But this probably doesn't help much here, because 2.0 is not really ready for prime time and although I have some ideas about the release roadmap, but I can't promise anything since actually there is no really pressure for doing it (at least nobody asked for it yet ;-).
But the good thing is that there is some 'lightweight' service framework also integrated in Jolokia 1.x: ServiceObjectFactory. It is currently used for server detectors and simplifiers (for serialization to JSON). My suggestion is to introduce a lifecycle service which is started in a similar way. That way anything could be started during the startup of the agent. This will work for the WAR and JVM agent. For the OSGi stuff a dedicated ServiceTracker could be added for this purpose.
Health Checks
Given that this startup service hook is in place, one could then easily provide a custom service which registers an own MBean for doing the health check. This MBean could be implemented in any way. The only open task is how and in which form this MBean can get access to the JMX. This could be either by providing directly the MBeanServers detected by the agent so the health checks can do JMX call on its own. This would be the simplest and probably best way.
And alternative to provide access to the JSON parsing layer so that JMX calls could be done like other Jolokia clients. This would probably be easier for implementer of such services, but would be not as performant as direct JMX access.

My overall suggestion is to tackle the two task separately: I'm going to implement the lifecycle-service hook directly within Jolokia (and available in the next Jolokia release). Then, you could implement this service API and provide an implementation for an HealthCheck the way you like. For providing an appropriate packaged agent, I would suggest to use jolokia-extra where I already have a customized agent for JSR-77 deserialization on WebSphere.

What do you think ?

That all sounds good.
I made a little experiment defining a few kinds of assertion we could use
https://github.com/jstrachan/jolokia/tree/liveness/agent/core/src/main/java/org/jolokia/health
e.g. SearchAssertion does a search and asserts the count of mbeans returned; then ReadAssertion makes an assertion on an mbean attribute value.
Here's a few test cases that show them in action:
https://github.com/jstrachan/jolokia/tree/liveness/agent/core/src/test/java/org/jolokia/health
e.g. typical output after simulating some failures is:
Results: [Failure{assertion=ReadAssertion{id=my.check, description=Check that the cpu load is valid, mbeanName='java.lang:type=OperatingSystem', attribute='ProcessCpuLoad', comparison='<', value=-1000}, actualValue=0.0}]
Results: [Failure{assertion=SearchAssertion{id=my.check, description=Check that we have enough cheese beans, mbeanName='foo.cheese:type=*', comparison='>', count=1}, actualValue=0}]

i.e. its clear from the results which assertions failed.
We could then have an mbean that lets folks pass in JSON for assertions to perform ad hoc assertion checks.
I was hoping we could then have support for a folder of files which are each json and can load one or more assertions; evaluate them all and return the failures if there are any. Then if we get that far, we could add some REST API in jolokia for the health check; returning OK if there are no failures; if there are failures it'd be nice to return the JSON of the failures.

Looks good, my suggestion is:

To move the checking code rhuss/jolokia-extra which also will use the new, yet-to-come CustomizeService for registering one or more MBeans
One for doing ad-hoc checks by uploading JSON formatted assertions.
And one for using predefined checks, e.g. by looking into a folder or lookup from the classpath. For specifying a folder I will add a way for the CustomizeServices to access the configuration information (which then can be used to specify the server side folder). That way we could avoid to extend the Jolokia protocol since we could simply use an EXEC request for accessing the MBean which uses the preconfigured checks.

I will now focus on the customizer service so that in the next step we can hook in the health checks.

Hi,
I already had some thoughts about jolokia and application health checks / monitoring and I figured it out that it would be nice to have some features listed below.
For the sake of simplicity I will try to explain it on real world use case: check if used memory is less or equal to 80% maximum allowed.
We need to:

define what data should be considered

read mbean attribute / exec mbean operation
example:

read / java.lang:type=Memory / HeapMemoryUsage

query (filter) necessary info from complex output structure

optimization, we can use "path" but in that case we need to perform multiple reading/executing
example:

usedVar = aboveRead.used
maxVar = aboveRead.max

manipulate with values

example:

80PctMaxVar = 0.8 * maxVar

compare values (check criteria)

example:

usedVar > 80PctMaxVar

optional blocks

support for different process state (e.g. on web container if application is deployed we should perform some checks, otherwise not)

Here is example of ad-hoc JSON formatted assertions:
{
  "dataCollection": [
    {
      "id": "first",
      "cmd": "read",
      "mbean": "java.lang:type=Memory",
      "attribute": "HeapMemoryUsage"
    },
    {
      "id": "second",
      "cmd": "exec",
      "mbean": "com.mycompany:type=Something",
      "operation": "someOperation"
    }
  ],
  "vars": [
    {"usedVar": "first.used"},  // additional filtering
    {"maxVar": "first.max"},
    {"80PctMaxVar": "0.8 * maxVar"} // values manipulation
  ],
  "assertions": [
    {
      "id": "request_123",
      "check": "usedVar > 80PctMaxVar",
      "desc": " ... message ..."
    }
  ],
  "conditionalBlocks": [
    {
      "condition": "second.something != 0",
      "dataCollection": [],
      "vars": [],
      "assertions": [],
      "conditionalBlocks": []
    }
  ]
}

What do you guys think ?
Regards,
N.

Having a DSL for specifying health-checks (aka monitoring) is a good thing. However, I wouldn't do it in JSON but probably with something more expressive like Groovy, since this is already a language.
Also, as stated above, this is to much for the vanilla agent. I already included some hooks for custom plugins which could implement this kind of health checks via own MBeans which then communicate over the normal Jolokia protocol (probaly EXEC).
I will soon have a POC based on @jstrachan suggestion in jolokia-extra. Please stay tuned ....

A proof-of-concept is now available at jolokia-extra. You can build the agent with @jstrachan 's sample test health checks included on you own (mvn -Phealth clean install which creates the JVM and WAR agent below agents/) or you can download them as Snapshots(JVM or WAR agent).
If used as usual, it will install a MBean jolokia:type=plugin,name=health with two operations:

cpuLoadCheck : to be called with a single int-argument, which specifies the alarming threshold. If the CPU load is below this value, an code null string is returned, otherwise an error description.
mbeanCountCheck : Simple, dump check which only checks whether the there are any MBeans matching the pattern java:lang=*

Of course this is only a beginning, but show nicely how to hook into Jolokia: Via a plugin which is called during startup, getting a MBeanPluginContext which can be used to register a MBean (which automatically get unregistered when the agent goes down) and also for accessing the local MBeanServers (which can be many) in order to perform the health checks. The communication the simply uses the current Jolokia protocol, which is IMO a good thing (as an alternative to introducing a new command health).
Next steps will happen on jolokia-extra. I will open an issue there collecting all ideas we have so far so that we can implement a feature rich, flexible health check system.

A POC is done in jolokia-extra,  a blog post is written and I suggest to continue the discussion for the healthcheck implementation in issue rhuss/jolokia-extra#1
I'll add some backlinks in this new issue and will close that one.


ValueError

[root@188 script]# ./clean_old_versions.py -i '^itlsatest/essql*' -l 2
Traceback (most recent call last):
File "./clean_old_versions.py", line 90, in
main()
File "./clean_old_versions.py", line 57, in main
repositories = response.json()["repositories"]
File "/usr/lib/python2.7/site-packages/requests/models.py", line 802, in json
return json.loads(self.text, **kwargs)
File "/usr/lib64/python2.7/json/init.py", line 338, in loads
return _default_decoder.decode(s)
File "/usr/lib64/python2.7/json/decoder.py", line 365, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib64/python2.7/json/decoder.py", line 383, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

it seems likely that it's failing to read images from your docker registry. where is that thing running? you can add a flag like this and set it to the appropriate value: --registry-url http://localhost:5000. this was missing from the README. i've added it. let me know if this doesn't resolve it and you can't figure it out.


Do I need a decent GPU to run this on my computer if I do not want to use the google colab? I would prefer to work on this on my desktop

Simply decoding a single point cloud on a modern CPU can take 4-8 seconds ( https://github.com/waymo-research/waymo-open-dataset/issues/47 ) so you might need a GPU if you end up needing to decode the point cloud data repeatedly.


Fails to build simple arm64 containers on amd64 host

We have run into some issues trying to build for multiple architectures (currently separate build + push for each) where an arm64 image is being built. Our Concourse workers are all amd64 arch, and we're looking to build for both that and for arm64.
In the case of the arm64 build, this fails with an error like:
error: failed to solve: process "/dev/.buildkit_qemu_emulator /bin/sh -c <RUN command>" did not complete successfully: exit code: 1
time="2022-05-25T12:07:33Z" level=fatal msg="failed to build: build: exit status 1"
time="2022-05-25T12:07:33Z" level=fatal msg="failed to run task: exit status 1"
failed

I've managed to boil this down to a simple case which fails reproducibly:
FROM alpine:3.15

RUN apk add --no-cache \
            bash~=5

This fails with:
... trimmed ...
 > [2/2] RUN apk add --no-cache             bash~=5:
#5 0.320 fetch https://dl-cdn.alpinelinux.org/alpine/v3.15/main/aarch64/APKINDEX.tar.gz
#5 1.168 fetch https://dl-cdn.alpinelinux.org/alpine/v3.15/community/aarch64/APKINDEX.tar.gz
#5 2.088 (1/4) Installing ncurses-terminfo-base (6.3_p20211120-r0)
#5 2.102 (2/4) Installing ncurses-libs (6.3_p20211120-r0)
#5 2.130 (3/4) Installing readline (8.1.1-r0)
#5 2.147 (4/4) Installing bash (5.1.16-r0)
#5 2.201 Executing bash-5.1.16-r0.post-install
#5 2.206 ERROR: bash-5.1.16-r0.post-install: script exited with error 1
#5 2.208 Executing busybox-1.34.1-r5.trigger
#5 2.257 1 error; 8 MiB in 18 packages
------
Dockerfile:3
--------------------
   2 |
   3 | >>> RUN apk add --no-cache \
   4 | >>>             bash~=5
   5 |
--------------------
error: failed to solve: process "/dev/.buildkit_qemu_emulator /bin/sh -c apk add --no-cache             bash~=5" did not complete successfully: exit code: 1
time="2022-05-25T12:07:33Z" level=fatal msg="failed to build: build: exit status 1"
time="2022-05-25T12:07:33Z" level=fatal msg="failed to run task: exit status 1"
failed

Additional Notes:

Concourse version: v7.6.0
oci-build-task version: 0.10.0

On further investigation, I found that the Dockerfile for oci-build-task uses moby/buildkit:0.9.3, which was upgraded to back in December 2021. 0.10.0 of this image was a fairly significant release, and one of the listed changes is "QEMU embedded emulators have been updated to v6.2.0" https://github.com/moby/buildkit/pull/2634
Having re-built oci-build-task with this image upgraded to 0.10.3, and using this custom version to run our builds against, the issues we're encountering are resolved - i.e. the builds complete successfully. I'll raise a change to apply that upgrade here

I’ll need to do a bit more digging tomorrow to isolate the affected hosts better, as I’ve not tested beyond our Concourse workers (which failed), and a quick check on an Intel MacBook (which passed) that needs to be confirmed. The issue title I’ve given suggests it is more widespread than I think it actually is in practice

Got to do a little more testing today, and confirmed that without the buildkit:0.10.3 upgrade:

Intel MacBook: consistent pass
Concourse workers: consistent fail

With the 0.10.3 upgrade in place, both the Concourse workers and the Intel MacBook passed the build.

@dackroyd today in our own CI we encounter the same error
#9 [linux/arm64 2/2] RUN apt-get update
#0 0.141 .buildkit_qemu_emulator: /bin/sh: Invalid ELF image for this architecture
#9 ERROR: process "/dev/.buildkit_qemu_emulator /bin/sh -c apt-get update" did not complete successfully: exit code: 255

with oci-build-task v0.11 which I believe containes buildkit 0.10.4. We are trying to build concourse/dev image with
  IMAGE_PLATFORM: linux/arm64,linux/amd64
  OUTPUT_OCI: true

in worker with arch x86_64.
When merging #91 , we didn't have a chance to test like now, I am wondering if you could try using concourse/oci-build-task:0.11 to verify it still works in your case. Thank you!

@xtremerui it looks like you're setting a different issue here, i.e. Invalid ELF image for this architecture
This suggests to me that the build is running for the linux/arm64 architecture, but the image architecture that is running for is actually still linux/amd64, thus the /bin/sh binary is x86_64, thus the emulation fails
I have had some success with the updated buildkit version to the point that simple builds do now work, however there is another issue with the emulation currently blocking anything non-trivial for us: https://github.com/tonistiigi/binfmt/issues/112


Delete group is unfinished

Describe the bug
The groups page has delete buttons for groups that aren't permanent, but if you click them you always get an error notification saying: 'not yet implemented in backend'. However the proper DELETE call to the backend is made, so if you're allowed to delete a group it will succeed and you also get a success notification. If it fails, you get a non specific error notification on top of the 'not implemented' error.
To Reproduce

Authenticate as an administrator
From the sidebar select Access Control → Groups
in the list that appears try to delete a group

Expected behavior

The 'not implemented' notification should be removed
If the delete fails, the error message from the rest api should be shown to explain to the user why it can't be deleted, instead of a non-specific 'delete failed' message
Whether the delete button is shown or not should depend on the canDelete feature, not the permanent property of a group
It would be good to add the delete button to the group detail page as well, to be consistent with EPersons.

This can be fixed in an estimated 4h

Updated estimate per https://github.com/DSpace/dspace-angular/pull/925#issuecomment-726232636


Windows support

Try to fix #27 + add Appveyor to ensure Windows compatibility

Merging so Appveyor can handle this new appveyor config. I hope this will fix the thing.


node-gyp build  error

when i was excuting "node-gyp build", i failed.all the way i follow the guidelines to handle the installtion, but it can't work,here are the error log(debug).i wish there is someone can fix this issue, and thanks all the time.

It looks like you're executing node-gyp from the node-gyp directory itself?  You normally execute it from the directory that contains the add-on to build.
If it's not that, can you post steps to reproduce the issue?

what if I installed it globally?
I also have build error. after updating to node.js 4.4.4 I ran npm update --gobal and got 3 pages of red text... well, nothing new, actually

Then you still need to be in a directory containing an add-on.
By the way, I assume it's a typo in your comment but --gobal isn't a switch.

yes, a typo
what addon? I just want to update all globally installed node_modules

If you have issues with specific modules, please report them there.  Opening an issue here is only useful when you have a problem with node-gyp itself, not with the modules that you are trying to (re)build.
If you have reason to believe it's node-gyp, please provide more details than "got 3 pages of red text".  You're basically wasting my time when you're unspecific like that.

I'm having a different error
> node-gyp rebuild

./util/has_lib.sh: line 30: pkg-config: command not found
gyp: Call to './util/has_lib.sh freetype' returned exit status 0. while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:355:16)
gyp ERR! stack     at emitTwo (events.js:87:13)
gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Darwin 15.4.0
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/local/lib/node_modules/shader-school/node_modules/canvas
gyp ERR! node -v v5.0.0
gyp ERR! node-gyp -v v3.0.3
gyp ERR! not ok
/usr/local/lib
└── (empty)

tried xcode-select --install as suggested by this but no use.

@karenpeng

./util/has_lib.sh: line 30: pkg-config: command not found

That's an issue with the module you're trying to build (which looks to be... node-canvas?)
I'll close the issue now that I'm here, seeing the OP didn't follow up.

In my case it does not work either, as in https://github.com/Automattic/node-canvas/issues/822 it's adviced to install couple of extra libraries and dependencies (this will cover pkg-config and others) ... but still not working ... that's very sad ... if someone find a real consistent way to do this, please let us know, thank you !!


HHH-15514 EntityTestCase Test failures with Hibernate ORM when run under security manager

https://hibernate.atlassian.net/browse/HHH-15514
https://issues.redhat.com/browse/WFLY-16974
main branch copy of https://github.com/hibernate/hibernate-orm/pull/5328 (6.1 branch) change.
Signed-off-by: Scott Marlow<EMAIL_ADDRESS>

Superseded by https://github.com/hibernate/hibernate-orm/pull/5333


Feature/isloading

Codecov Report

Merging #224 (4af738c) into dev (df1da11) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##              dev     #224   +/-   ##
=======================================
  Coverage   95.56%   95.56%
=======================================
  Files        1482     1482
  Lines        6442     6451    +9
  Branches     1036     1042    +6
=======================================
+ Hits         6156     6165    +9
  Misses        137      137
  Partials      149      149

Impacted Files
Coverage Δ

...a-dom/src/components/DatePicker/CalendarHeader.tsx
100.00% <100.00%> (ø)

...eact-magma-dom/src/components/IconButton/index.tsx
100.00% <100.00%> (ø)

...ct-magma-dom/src/components/StyledButton/index.tsx
100.00% <100.00%> (ø)

...ges/react-magma-dom/src/components/Toast/index.tsx
89.70% <100.00%> (ø)

...eact-magma-dom/src/components/Typography/index.tsx
88.05% <100.00%> (ø)

Continue to review full report at Codecov.

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


Updated readme

I have made changes to the README file as requested

Looks good! Thanks for the contribution @Solai-Adithya


sign up using social media

How about allowing the user to sign up using social media (Google, Facebook, etc). We can also get in to their network in this way (of course, with their permission)

Microsoft, Facebook and WeChat in the v1.6


missing Action

1.CreateAccount to make a new account (for a person, contract, refrigerator, etc)
2.DeleteAccount to delete an account (and transfer balance to a beneficiary account)
3.AddKey to add a key to an account (either FullAccess or 4unctionCall access)
5.DeleteKey to delete an existing key from an account
6.Transfer to move tokens from one account to another
7.Stake to express interest in becoming a validator at the next available opportunity
8.DeployContract to deploy a contract FunctionCall to invoke a method on a contract (including the budget for computing and storage)

#4 is missing.  I would shift everything down from DeleteKey and add FunctionCall as #8

Fixed with https://github.com/101labs-tech/near-academy/commit/f40c70420e73fd29c3ff36b184800aa078f45f22


spyder 2.0.0 segfaults when plotting from internal console

From<EMAIL_ADDRESS>on 2010-09-15T08:34:59Z
What steps will reproduce the problem?

in spyder 2.0.0beta3 open internal console
from pylab import *
plot(x,y) #with some data What is the expected output? What do you see instead? The plot should appear. Instead spyder segfaults after printing 'QPixmap: It is not safe to use pixmaps outside the GUI thread' to the terminal What version of the product are you using? On what operating system? spyder 2.0.0beta3, matplotlib 1.0.0, numpy 1.4.1 on MacOS X 1.5.8

Original issue: http://code.google.com/p/spyderlib/issues/detail?id=362

From<EMAIL_ADDRESS>on 2010-09-16T00:39:37Z
the segfault does not happen, when spyder is started with --onethread option.

From pierre.raybaut on 2010-09-22T15:10:13Z
That is the expected behavior as the internal console was no longer intended to work with GUIs since Spyder v2.0 (the internal console is there only for Spyder debugging purpose). However, I've changed the default option to a unique thread for the internal console and the main application.
Status: WontFix


Add Races and Subraces

Like Class and Subclass, add the option to do exactly the same, but with Races and Subraces.

this is in the works and currently tracked here https://github.com/foundryvtt/dnd5e/issues/342

Oh, ok! Thats good!
Thanks!


I remove version to be able to choose the version to use

what

I remove the version to be able to use updated versions

why

When using terragrunt as a wrapper, I define my own version and it duplicates the one that comes by default, which is static and not updated.

We want to keep versions.tf to set the minimum needed for this module. You're welcome to use a higher version in your root module which consumes this module without updating this module directly.

Thank you for the contribution but I'm going to close this PR for now. Please feel free to comment if you have any questions.


Do not require on pkg_resources as it drastically increases import time.

Is your feature request related to a problem? Please describe.
Most of the import time of xarray is wasted by importing pkg_resources. As far as I could see, the module is used to set the version number of xarray. So importing xarray takes like 0.275s (old machine) and of this 0.17s are just spent in importing pkg_resources.
Describe the solution you'd like
There are better approaches to set the version number than to use this heavy weight module. For instance setuptools_scm.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
xarray-version 0.19.0

There are better approaches to set the version number than to use this heavy weight module. For instance setuptools_scm.

Looks like it is still required to retrieve the version number at runtime for python version < 3.8, unless we agree to temporarily depend on the importlib_metada backport.

As far as I could see, the module is used to set the version number of xarray

It is also used for the backend entry-points and for loading a couple of static css/html files for the html reprs. I don't know if there are better approaches for this, though.

we had a lengthy discussion about a related topic in #4295. Long story short: we will be able to switch to importlib.metadata once we can drop support for py37 (and we can already use importlib.resources for the CSS and HTML files, feel free to send in a PR for that).
For the backends, we could use the separate entrypoints library (which I believe is faster), but as far as I can tell we will only make that switch once we can drop the dependency on pkg_resources entirely.
For reference, NEP29 allows dropping support for py37 after Dec 26.


The Font Sizes Don't Match the Preview

I noticed that the font sizes and anti-aliasing in the editor do not match those in the preview rendering. How would you feel about syncing those up?
This is the custom snippet I use to to sync things. If you are cool with the idea, I can send a PR.
/* Otherwise the fonts in preview look a bit chonky on my mac */
div.markdown-preview-view {
  font-variant-ligatures: contextual;
  -webkit-font-smoothing: antialiased;
}

.cm-header, h1, h2, h3, h4, h5, h6 {
  font-weight: 600;
}
.cm-header-1, .markdown-preview-view h1 {
  font-size: 2rem;
  line-height: 3rem;
}
.cm-header-2, .markdown-preview-view h2 {
  font-size: 1.5rem;
}
.cm-header-3, .markdown-preview-view h3 {
  font-size: 1.2rem;
}
.cm-header-4, .markdown-preview-view h4 {
  font-size: 1.125rem;
}
.cm-header-5, .markdown-preview-view h5,
.cm-header-6, .markdown-preview-view h6 {
  font-size: 1rem;
}

/* Setting this here since my selectors above took presidence over the originally declared selector */
.cm-formatting-header {
  font-size: 0.6rem;
}

For context:
Before:

After:

@pope - apologies for the lack of updates. Unfortunately I just don't have time to keep up with this as much as I'd like to. I have updated the theme to be compatible with the 1.0 release of obsidian. This is a complete rewrite and because I don't have much time for updates, I've tried to simplify things and have really made this mostly a UI theme rather than adjusting any text.


Added score keeping and restart after game-over

#2 Added variable to keep score and display it
#1 Added restart after collision
Also, updated the movement in such a way that the snake can't directly go from left to right and from up to down and vice versa.
Changed initial length of the snake to two squares.

fixes #2
fixes #1


latest build crashes when incorporated into react viro

[x] Review the documentation: https://virocore.viromedia.com/
[x] Search for existing issues: https://github.com/viromedia/virocore/issues
[x] Use the latest ViroCore release: https://virocore.viromedia.com/docs/releases
[x] Turn off Instant Run in Android Studio

Environment
Please provide the following information about your environment:

OS: Mac, Windows, Linux
Version: ViroCore version
Device(s): What device(s) are you are seeing the issue on (i.e. Samsung Note 8, Pixel 2 XL, etc)

Description
I'm targeting android 13 and up an I need the persmissions fix, but I incorporate the react viro .aar file into viro and then install it as a local version in my react native app it crashes with this error
Your app just crashed. See the error below.
java.lang.UnsatisfiedLinkError: dlopen failed: library "libviro_arcore.so" not found
  java.lang.Runtime.loadLibrary0(Runtime.java:1082)
  java.lang.Runtime.loadLibrary0(Runtime.java:1003)
  java.lang.System.loadLibrary(System.java:1661)
  com.viro.core.ViroViewARCore.init(ViroViewARCore.java:506)
  com.viro.core.ViroViewARCore.<init>(ViroViewARCore.java:461)

I can/could help you, but it's somehow disappointing that nobody approves my pull request to be able to improve the pipeline. That's why I'm not really involved here

please show me your fork

@thedentist89 I can't reproduce in CI https://github.com/ReactVision/virocore/pull/211#issuecomment-2410312715
Of course I see the error local.


Dimension value missing for vector

Hi, I have create a index with knn vector successfully. But when I try to insert doc to es, I got 'Dimension value missing for vector' error.
Mappings are as follows:
{"mappings":{"properties":{"embedding":{"type":"knn_vector","dimension":312},"intention":{"type":"keyword"},"intention_en":{"type":"keyword"},"user_say":{"type":"text","analyzer":"ik_smart"}}}}}

Error messages are
elasticsearch.exceptions.RequestError: RequestError(400, u'mapper_parsing_exception', u'Dimension value missing for vector: embedding')

The dimension value is in mapping, I got no idea why this happens.

I tried examples on readme and got the same error.

@Jhangsy Could you provide complete steps of index creation and sample documents you were indexing?

@Jhangsy Could you provide complete steps of index creation and sample documents you were indexing?

Hi, Thank you for replying. I found it is because of the incompatibility elasticsearch version.


Feature Request

Describe the solution you'd like

The ban and ban-ip commands would be better if they were one command like /ban player:ip  , so it detects whether it is ip or player name
The command to unban it becomes /pardon player:ip and it also detects whether the player is being banned or not
also the edit ban or editban-ip command is the same as above
And also the baninfo and banlog commands into one command to /baninfo  it will later detect whether the player is being banned or not, if so, it will give a message about the number of bans player and information bans
Better configuration
Mysql support
Added warnings and mutes options

Sorry if this is too burdensome for you, I'm very happy if there is such a feature

MySQL Support is already in Progress. The last 4 Options are Okay and I'll add them.

Mutes and MySQL are already planned but warns are to much. I've already Coded a warn plugin called theWarn ((Here)[]https://github.com/supercrafter333/theWarn).


Implement Value Structs for the C FFI

Luna allows value-level FFI by marshalling Luna classes containing C types into value-level structs.

[ ] Struct member access.
[ ] Makes same assumptions of struct layout as clang/GCC. As long as the layout matches what the foreign function expects, this will just work.
[ ] Functionality for specifying struct member alignment.
[ ] Functionality for getting this-pointer equivalent for such Luna classes.

Subsumed by the FFI handling in the design for the new Luna runtime.


Add Perfview

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?

[ ] Have you tested your manifest locally with winget install -m <manifest>?

I would like to add Perfview to winget to script my installations on windows. Currently, Perfview doesn't have an installer.
Should I create an installer or is there a way to install binaries without one? Do you think is a good idea to add it to https://github.com/microsoft/perfview?
Microsoft Reviewers: Open in CodeFlow

/azp run

We've updated the schema for manifests. The manifest needs to be updated before it will be able to pass validation.


Add image files for how-go guide

This PR is to add image files for how-go guide that will be improved by PR #321.
static/images/how-to/howto-XX.png
PR #321 needs to be updated after this PR has been merged.
PTAL @CathPag

@jihoon-seo I hope to make l10n team approvers cannot approve PR which has English contents.
However, it seems hard to avoid since the approvers need to have a write permission.
@jihoon-seo could you tell me you can merge this pull request ?

@JasonMorgan @CathPag Please don't worry. We are testing permission. We know what we are doing ;)

GitHub says that I am not authorized to merge this pull request. 😊

@jihoon-seo
Thanks ! It is an appropriate restriction.
Please cancel the approval :)


Improved logging

#8

Coverage remained the same at 100.0% when pulling 5618ae4f02aef7cff1384fb39a92ce20bd01d4a8 on improved-logging into 9713a59b77981c582fce99b44c50905fe9f14d4d on master.


fix mem() for if the fifth column is missing

About gc() results,
There are some cases that the limit column that is usually at fifth is missing.
So you should specify the second one from the last as the max used column.
For instance, on my macOS, a result of gc() has 7 columns:
> gc()
          used (Mb) gc trigger (Mb) limit (Mb) max used (Mb)
Ncells  743284 39.7    1245450 66.6         NA  1245450 66.6
Vcells 1771508 13.6    8388608 64.0      16384  2669382 20.4
> ncol(gc())
[1] 7
> sessionInfo()
R version 4.0.3 (2020-10-10)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Catalina 10.15.7

On my Windows, it has only 6 columns:
> gc()
          used (Mb) gc trigger (Mb) max used (Mb)
Ncells  562643 30.1    1273785 68.1  1273785 68.1
Vcells 1459631 11.2    8388608 64.0  1895012 14.5
> ncol(gc())
[1] 6
> sessionInfo()
R version 4.0.3 (2020-10-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19041)

help(gc) says:
> help(gc)
...
Value
...
If maxima have been set for either "Ncells" or "Vcells",
a fifth column is printed giving the current limits in Mb (with NA denoting no limit).
...

Fixed with lots of other things.


ASP.NET Core hoarding memory

This issue is following up on https://github.com/aspnet/AspNetCore/issues/1976
The problem
We have a websocket server that hoards memory during days, till the point that Kubernetes eventually kills it. We monitor it using prometheous-net.
I can see in the graphs, that GC is collecting regularly in all generations.
GC Server is disabled using:
<PropertyGroup>
  <ServerGarbageCollection>false</ServerGarbageCollection>
</PropertyGroup>

Before disabling GC Server, the service used to grow memory way faster. Now it takes two weeks to get into 512Mb.
Other services using ASP.NET Core on request/response fashion do not show this problem. This uses Websockets, where each connection last usually around 10 minutes... so I guess everything related with the connection survives till Gen 2 easily.
The application
The application is a very simple ASP.NET core application with two controllers, one simple one for readines/liveness probes from Kubernetes, and another controller for establishing Websocket connetions.
We did some preliminary and rough tests and checked we could handle 500 concurrent websockets per pod using 512Mb. We ran for hours with 2 pods and 1000 concurrent connections with memory being less than 150Mb . The deployed application, with 2 pods, has between 150 and 300 concurrent connections at any moment, and the memory varies from less than 100Mb on the first few days, till reaching the 512Mb in around 2 weeks. There no seems to be correlation between the number of connections and the memory used.
More than 70% of the connections last 10 minutes. Connections usually die abruptly due the load balancer cutting them after 600 seconds (10 min )
We have a limit of 512Mb per pod set using Kubernetes limits:
Limits:
  cpu:     1
  memory:  512Mi
Requests:
  cpu:     100m
  memory:  256Mi

Message rate is very low. We have a keep interval defined:
        app.UseWebSockets(new WebSocketOptions()
        {
           KeepAliveInterval = TimeSpan.FromSeconds(5)
        });

We use dotnet 2.1.6 on Linux using microsoft/dotnet:2.1-aspnetcore-runtime as base.
# dotnet --info

Host (useful for support):
  Version: 2.1.6
  Commit:  3f4f8eebd8

.NET Core SDKs installed:
  No SDKs were found.

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.6 [/usr/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.6 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.1.6 [/usr/share/dotnet/shared/Microsoft.NETCore.App]

This is a usual pattern in the application metrics:

The surprising thing
When we connect remotely and take a memory dump (using createdump), suddently the memory drops... without the service stopping, restarting or loosing any connected user. See the green line in the picture.

Note that there are two pods, showing the same behaviour, and then one (the green) drops suddenly in memory ussage due the taking of the memory dump.

The pods did not restart during the taking of the memory dump:

No connection was lost or restarted.
Memory dump data
I cannot share the dump for security reasons, but here is some data:
And the result of dumpheap -stat : https://pastebin.com/ERN7LZ0n
Heap:
(lldb) eeheap -gc
Number of GC Heaps: 1
generation 0 starts at 0x00007F8481C8D0B0
generation 1 starts at 0x00007F8481C7E820
generation 2 starts at 0x00007F852A1D7000
ephemeral segment allocation context: none
         segment             begin         allocated              size
00007F852A1D6000  00007F852A1D7000  00007F853A1D5E90  0xfffee90(268430992)
00007F84807D0000  00007F84807D1000  00007F8482278000  0x1aa7000(27947008)
Large object heap starts at 0x00007F853A1D7000
         segment             begin         allocated              size
00007F853A1D6000  00007F853A1D7000  00007F853A7C60F8  0x5ef0f8(6222072)
Total Size:              Size: 0x12094f88 (302600072) bytes.
------------------------------
GC Heap Size:            Size: 0x12094f88 (302600072) bytes.
(lldb)

Free objects:
(lldb) dumpheap -type Free -stat
Statistics:
              MT    Count    TotalSize Class Name
00000000010c52b0   219774     10740482      Free
Total 219774 objects

Is there any explanation to this behaviour?

I hope that this issue will be the quintessence of the whole struggle with the GC in ASP.NET Core.

We are running an AspNet Core 2.1.4 microservice deployed on Alpine Linux, hosted on AWS ECS ( docker image microsoft/dotnet:2.1.4-aspnetcore-runtime-alpine ).
It's using server GC and has 1536MB available.
Our microservice with websockets is not experiencing any memory growth.
We do not explicitly set a KeepAliveInterval on the socket so it uses the default of 2 minutes. It's a shot in the dark, but have you tried to modify the KeepAliveInterval to see if it changes the rate at which the memory usage grows ?
Also, I assume the reason your memory usage dropped is due to createdump triggering a blocking collection prior to taking the dump.
You could verify that theory by wiring up some mechanism to run GC.Collect(2, GCCollectionMode.Forced, true); - if that causes a similar drop in memory usage as your createdump did, we can assume that the GC is deferring collecting them due to not wanting to interrupt the application.
Lastly, in our experience running dotnet core on linux, ( all with server GC mind you ), it has a tendency to keep and re-use memory instead of returning it to the OS for performance gains.

Note how even though the GC.GetTotalMemory ( with force: false ) reports the size of allocated objects between 9 MB - 100 MB, the working set size remains at 243 MB.
There had been issues in the past ( on 2.1.3 and earlier ) with .net growing too aggressively and not properly respecting the limits set by the container and getting memkilled, but they seem to be fixed in 2.1.4. I hope this helps a little bit. Good luck!

Testing the GC.Collect(2, GCCollectionMode.Forced, true); thing now. I will share the results in a few days.

I had the chance to run the application in a Windows machine, reproduce the conditions that lead to the memory leak, take a snapshot and analyze it with dotMemory.
The problem was a feature of RabbitMQ.Client named "AutorecoveryConnection", which is keeping information about existing subscriptions in order to recover them in the event of a reconnection. Setting ConnectionFactory.AutomaticRecoveryEnabled to false on the RabbitMQ.Client configuration solved the problem (since we do not need this feature).

Our application uses a channel per websocket connection, and it seems channels are not as lightweight as I thought. However, I find no reason to keep 11K+ EventingBasicConsumer objects in memory, when only 500 users are connected at most. After disabling the autor-recovery feature, this objects are not piling up anymore :(
How come that memory usage dropped when taking the memory snapshot? Well, probably RabbitMQ.Client disconnected by timeout (since the process freezes) and something happened internally in the component that released the held objects. I hope to have some time in the future to investigate this further, but for now it is clear is not an ASP.NET core thing.


Write our first Jasmine/Karma "Hello World" unit test

Follow the directions in the official Angular 2 testing documentation:
https://angular.io/docs/ts/latest/guide/testing.html
Wire up Travis to automatically run these tests just like it's currently running our Python test(s).
This ticket (probably) requires Gulp to be configured.

Jasmine is already set-up by the angular2-seed project we're using 👍


affected/package: documentation

Please remove Don't be clever advice from the memory model.
The statement is annoying. I think there is no other language that has such advice in their specification.
Does this advice apply to go core team too?

@rsc let's plan it, reopen the issue and fix the docs

We may disagree on what the memory model document says.  When I look at it, the memory model does not tell people not to read the documentation.  It tells people to not write programs to rely on the details of the memory model.  We're not discouraging people from reading and understanding it.
Thanks for pointing out that #5045 was still open.  It was fixed back in January and when the 1.19 release comes out, fairly soon, that fix will be visible on at https://go.dev/ref/mem.  I closed #5045.


Update project summary

Checklist

[x] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe/meta.yaml) and found it was in an excellent condition.
I do have some suggestions for making it better though...
For recipe/meta.yaml:

ℹ noarch: python recipes should usually follow the syntax in our documentation for specifying the Python version.

For the host section of the recipe, you should usually use python {{ python_min }} for the python entry.
For the run section of the recipe, you should usually use python >={{ python_min }} for the python entry.
For the test.requires section of the recipe, you should usually use python {{ python_min }} for the python entry.
If the package requires a newer Python version than the currently supported minimum version on conda-forge, you can override the python_min variable by adding a Jinja2 set statement at the top of your recipe (or using an equivalent context variable for v1 recipes).

This message was generated by GitHub Actions workflow run https://github.com/conda-forge/conda-forge-webservices/actions/runs/12141684061. Examine the logs at this URL for more detail.

Probably the wrong place to discuss this, but I'm torn on "scalable" vs "bounded-memory". I feel like the latter is actually the key concrete innovation of cubed, which the former (hopefully) follows from.

Thanks @TomNicholas - I've commented in https://github.com/cubed-dev/cubed/pull/622


Question about data storage

Hi folks. I just found out about Locutus. It looks interesting but i'm still trying to get my head around some of the concepts. How/where is data stored? I understand that it is a decentralized key/value store, but storing large files on a P2P isn't really scalable.
I read elsewhere that "Locutus is more like a cache than long-term storage, so data can fall out of the network if nobody is requesting it, but information publishers can serve as a backup for data stored in the network, replacing it if it falls out".
Can somebody explain this to me? Does it/can it use external storage adapters?
Cheers

Sorry i posted this in the wrong place. I'll repost in the discussions section. Please close/delete this one.