flip chef_gem compile_time to false by default

this may be a breaking change for some users, but the flags are
still there for users to fix on a case-by-case or global basis.
Signed-off-by: Lamont Granquist<EMAIL_ADDRESS>

probably some specs i need to fix that'll be blowing up shortly if i recall correctly....

i guess we should probably start the deprecation of the config flag as well...

This setting was added in 12.1 so I think this constitutes a back compat break. Is there a reason other than footgun reduction?

It was even noted at the time that this would be flipped in Chef 13. https://github.com/chef/chef/commit/b4b5c07515cdde5acdf94803760f6043f4b17386#diff-f54e6ba45d43eee7cdc25838b79b012cR110

There's some internal discussion around lets-never-do-chef-13-and-just-slowly-deprecate-and-break-things.  This is an example PR of what we'd have to do if there's no Chef 13.
I think @thommay is going to write up an RFC soon, so there will be an opportunity to have external discussion about it.
I'm just getting mildly annoyed at people pontificating about to not ever doing Chef 13, so I'm trying to press the point here and force that discussion out in the open and crystallize it...
Either we do stuff like this, in minor releases of 12, or else we'll need to do a Chef 13 release which is mostly just breaking shit at some point...
Legitimately, people are concerned about where that "...or else..." winds up.   But at the same time Chef 12 wasn't super compelling either.

I've also been pondering a move to CalVer instead of SemVer, so :+1: on discussing that but should consider this PR blocked on that for now :)

Oh yeah, this is definitely a PR cut out of some grouchiness that I don't expect to see merged anytime soon...

Roger, also no argument that this is a positive footgun reduction just for the record. SemVer is a harsh master.

I'm just getting mildly annoyed at people pontificating about to not ever doing Chef 13, so I'm trying to press the point here and force that discussion out in the open and crystallize it...

Either we do stuff like this, in minor releases of 12, or else we'll need to do a Chef 13 release which is mostly just breaking shit at some point...

Eh. I think most of us who have said "maybe no Chef 13" recognize that because of past decisions that we have to do 13 and are mostly looking towards a more user-friendly way to do breaking changes in the future that don't involve lots of unrelated breakages towards one when every so often (and with lots of notice) you have to change 1 thing.  It is interesting to talk about in the context of 12 vs 13 precisely because we have examples like this.
I think saying other maintainers are "pontificating" is pretty shitty, but I guess that is an issue for a different day.

Well, I keep hearing this argument and its never been couched in those words, and its definitely been in the context of "never doing Chef 13", and it historically goes back months long before the discussion we had the other day.   So there's just more than a bit of irritation here that its very cheap to say that we should just maintain backcompat or make breaking feature via feature flags and never need to do Chef 13 when the people saying that aren't the ones trying to figure out how to write the code.  And again, I've been hearing those comments a lot lately, and its been in the context of more than just trying to deprecate with feature flags (which itself is pretty hard if you're talking about patches to core classes like the run context or resource collection which are global and where i'd prefer we didn't have multiple different chef-config flags tweaking their behavior in incompatible ways -- or just large refactorings like trying to get the knife commands to be consistent -- meaning we'd probably need to park the inconsistent code in classes somewhere where they were deprecated, which i'm not sure really makes the product better for users or devs).

So there's just more than a bit of irritation here that its very cheap to say that we should just maintain backcompat or make breaking feature via feature flags and never need to do Chef 13 when the people saying that aren't the ones trying to figure out how to write the code

Yeah, I get that frustration. Apologies for taking it too personally, I was grumpy over some more different ruby wtf's this morning and it leaked into this ticket. You are correct that all that talk is cheap and you are definitely at the tip of the spear on chef-client.

or just large refactorings like trying to get the knife commands to be consistent -- meaning we'd probably need to park the inconsistent code in classes somewhere where they were deprecated

On this specific problem, yes, I agree, there are lots of examples like this.  Importing some of the knife-acl and knife-opc stalled out pretty early mostly because it was so unclear what we even want the primary idiom to be in knife atm (i.e. ChefFS-style shit vs more traditional objects with methods).

Yes, I'm neck deep in nasty case statements I don't understand and am similarly very grouchy.
I do think there's a fundamental disagreement that I have with feature flags in general in that it always forks code in the codebase which then users can use and has to get maintained and supported.  Even if we declare it is deprecated, users can still wind up on it, on the latest version of chef-client and support tickets can be cut.  That could lead to some highly unpleasant interactions where users are angrysauce at support over some bug and they need to know about different flags that control behavior that the user might have stumbled across and "oh that flag that your chef admin from 18 months ago flipped?  that is currently screwing you, you need to flip that the other way -- sorry you did it to yourself".  I mean I'm assuming our support team can deliver that message better, but it boils down to roughly the same thing -- and that's after support stumbles through asking devs to beat their head against a problem that they vaguely remember someone solved 18 months ago and digging through ever-expanding code to understand where the user might have wound up.
So, for example, we really need to kill off legacy mode for chef-solo and delete the code associated with that so that eventually we can assert that no users are using that code and support and the devs never have to think about supporting it again.  Generally I see writing more code as always ultimately being worse, and we need an answer for how to delete code.  By introducing any kind of feature flag we introduce more code, and I'd argue we're making the code worse -- for devs, for support, and ultimately for users.
I do like the idea of utilizing cookstyle/rubocop to possibly auto-fix recipe code for backcompat issues, or write a gem like transpec for chef code.   That would shift the code burden onto the linting/fixing gem and get it out of the chef/chef codebase.  That gives us a path to a better user experience, while not littering the chef/chef codebase itself with options and deprecated code.  It also doesn't require maintaining something like compat_resource with old broken chef/chef code living on in it.


parser: support "admin plugins enable/disable plugin" syntax (#374)

cherry-pick #374  to 3.0
# Conflicts:
#	parser.go
#	parser.y

This change is

LGTM


⚠ Bofrost.nl has degraded performance

In 82bbad2, Bofrost.nl (https://www.bofrost.nl) experienced degraded performance:

HTTP code: 200
Response time: 2010 ms

Resolved: Bofrost.nl performance has improved in 51b9b6f after 20 minutes.


change scope of report()

having @restrict_access(login=True), prevents using the report function in the oauth scope.
changing the scope from None to "report" and removing the login requirement will allow the report function to work properly with Oauth.
see hide() for precedence of this change and http://www.reddit.com/dev/api/oauth#scope_report

Thanks!


Adding html over slider images only works well when clicking next button

I've added some html over each img, but only applies to every slide when you click next button.
First Load:

After clicking next

@gbarrionuevo Hi,
I'm sorry to say this but this carousel is depreciated instead use @ngu/carousel. Try it if u still face the same problem create issue there i will definately help


WIP - fix for image styles

Fixes #430

dug through width styling difference - related to overflow - see link for the rest of the commentary - that's a styling issue not an actual mrjs setup issue - tabling that instead of as part of this pr

contain now works in separate temp impl - now to pass that back to the mrjs setup

dug through width styling difference - related to overflow - see link for the rest of the commentary - that's a styling issue not an actual mrjs setup issue - tabling that instead of as part of this pr

this part is all good now per https://github.com/Volumetrics-io/mrjs/issues/439#issuecomment-1965236031

contain now works, though it has a lingering visual effect that gets cleared on page reload - looking into:
before reload (after squishing ...

contain and scale-down are happy now - no more windows xp look
doing some last cleanup then will set for review

@michaelthatsit ready for review - quick way to test the options is to change the value of the object-fit here

It looks good to me. Dynamically changing between each value resulted in weird behavior but this can land and we can fix that separately.


ZEPPELIN-173: Zeppelin websocket server is vulnerable to Cross-Site WebSocket Hijacking

Fixing the socket cross-origin vulnerability as described in the Jira. Overwrote the checkOrigin in the WebSocketServlet class implemented by NotebookServer so that a list of all seen socket Get requests are kept and only Upgrade requests from the same origin will be accepted. Otherwise unauthorized will be returned.
Included basic unit tests.

Failed build. attempting fix

Hi, Thanks for the contribution.
I've tested this branch and i'm getting websocket connection error.

Closing due to using the wrong branch


report the final cost once the command stopped

Would be nice to know at the end what was the cost of the meeting which just ended.

Great idea. Thanks for the suggestion!
Closed by: https://github.com/syncfast/clockwise/commit/e90e565847e927bc19f0dd8fae2d7ef9c4d5272f


Facilities & user seed data added

Hey will update branch to reflect the no usernames & profile picture url

do not merge just yet as will update branch


Enhance styling for Connect Button & Button

Feature Request
Currently, the styling for the Button and Connect Button components is just minimal. Enhance it so that the components look more ready to use and also make sure that the components should accept all the props that a native html element accepts and should be customizable.
Also, rename the Connect Button button to Connect Wallet button as it seems more descriptive

Closed in #10


Set black 22.1.0 as minimum required version

Fixes #20

Codecov Report

Merging #22 (66eaf52) into main (da4e813) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##              main       #22   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            2         2
  Lines           37        38    +1
  Branches         4         4
=========================================
+ Hits            37        38    +1

Impacted Files
Coverage Δ

django_migrations_formatter/__init__.py
100.00% <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 2b92f07...66eaf52. Read the comment docs.


seems not to get the same results as the paper says

Hello! Thanks for your nice work!
I run your code and get the reconstructed mesh of good quality for the maicity.

But when I used the evalution code to qualitify the mesh, I find it not the same as the paper . I used the ground truth of maicity dataset.

And this result is used the pointclouds map.

And this is the paper results.

And I'm confused with the resluts of evalution results.  What do you compare it with?

Thanks for your interest on our work.
I suppose the first evaluation result you showed is generated using the mai_city_block.ply file in the gt_models folder. This is the model used for simulation in Carla and there's a shift between the model's and the point cloud's coordinate system. It's the reason why the evaluation results seem to be completely wrong.
We used the gt_map_pc_mai.ply point cloud file as the reference, which should be corresponding to the second evaluation result you showed. The difference between what you showed and what we reported in the paper is caused by different parameter settings. In the paper, different from the default parameter setting in the open source config file, we used the 10cm leaf_vox_size, 50m pc_radius_m and with ekional loss on. Additionally, as mentioned in the paper, we use a fairer accuracy metric by taking the ground truth point cloud masked by the intersection of the reconstructed meshes of all the compared methods.
The reconstructed mesh and the cropped intersection reference point cloud can be downloaded from here. You can use them to get the similar results as reported in our paper.
Thanks.

Hi， I run your evaluation code using the meshes you provided. And I get the great results.
This is using gt_map_pc_mai.ply as the reference.

And this is using the cropped intersection reference as the reference.

The results are better than the paper results. But I still wonder why it is not same as paper results. Is it effected by the version of open3d or any other thing?
In my conda env , the version of open3d is <IP_ADDRESS>

I know the computation of evaluation metrics have some randonness, and the result is right. Sorry to bother.


Add I2CDeviceSensorProperties to DS18x20 API

Adding I2CDeviceSensorProperties field to DS18x20 initialization call to bring it in-line with current I2C work.

@lorennorman  pls note I changed onewire_pin to string from int32


Make EnumsTest output more useful

When EnumsTest detects that English-name entries are missing from a properties
file, make its assertion failure message include a list of lines that can be
copied into the properties file as a starting point.
The English strings will still require human review, and, if needed, comments
will still need to be written to clarify terminology for translators. But this
should make it slightly less annoying to add missing enums to the strings files.

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#1783  👈
#1782
main

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

Join @sgrimm and the rest of your teammates on  Graphite


Unable to apply changes to AST

Hello, when running this tool on my obfuscated JavaScript sample, I encounter the following issue:
$ npx restringer ./crypto_deobfuscated_manual.js
[+] Obfuscation type is augmented_proxied_array_function_replacements
[+] ==> Cycle 1 completed in 0.065 seconds with no changes (322838 nodes)
	[+] resolveFunctionToArray committed 1 new changes!
[+] ==> Cycle 2 completed in 21.652 seconds with 1 changes (322827 nodes)
	[+] removeRedundantBlockStatements committed 11 new changes!
	[+] resolveProxyVariables committed 38 new changes!
	[+] resolveProxyReferences committed 1021 new changes!
	[+] replaceIdentifierWithFixedAssignedValue committed 5 new changes!
	[+] simplifyCalls committed 32 new changes!
	[+] unwrapIIFEs committed 1 new changes!
[+] Applying changes to the root node...
[+] ==> Cycle 3 completed in 56.787 seconds with 1108 changes (328524 nodes)
	[+] resolveProxyReferences committed 34 new changes!
[+] ==> Cycle 4 completed in 11.028 seconds with 1142 changes (329008 nodes)
[+] ==> Cycle 5 completed in 1.089 seconds with 1142 changes (329008 nodes)
	[+] resolveMinimalAlphabet committed 4436 new changes!
	[+] resolveDefiniteBinaryExpressions committed 2002 new changes!
	[+] resolveMemberExpressionsLocalReferences committed 3 new changes!
	[+] resolveDefiniteMemberExpressions committed 1 new changes!
	[+] resolveLocalCalls committed 2094 new changes!
[+] ==> Cycle 6 completed in 629.334 seconds with 8536 changes (284790 nodes)
	[+] resolveProxyVariables committed 7 new changes!
	[+] resolveDeterministicIfStatements committed 1 new changes!
	[+] replaceIdentifierWithFixedAssignedValue committed 10 new changes!
[-] Unable to apply changes to AST: TypeError: Cannot read properties of undefined (reading '0')
[+] ==> Cycle 7 completed in 17.126 seconds with 18 changes (284788 nodes)
	[+] removeRedundantBlockStatements committed 1 new changes!
[-] Unable to apply changes to AST: TypeError: Cannot read properties of undefined (reading '0')
	[+] resolveProxyVariables committed 4 new changes!
[-] Unable to apply changes to AST: TypeError: Cannot read properties of undefined (reading '0')
[+] ==> Cycle 8 completed in 2.1 seconds with 23 changes (284788 nodes)
	[+] resolveMinimalAlphabet committed 264 new changes!
	[+] resolveDefiniteBinaryExpressions committed 68 new changes!

<--- Last few GCs --->

<--- JS stacktrace --->

#
# Fatal javascript OOM in MemoryChunk allocation failed during deserialization.
#

Trace/breakpoint trap (core dumped)

Is there any way this can be resolved, or a workaround I can implement on my end to allow the script to complete successfully? Even just failing gracefully and emitting the partially deobfuscated file before the errors would be great.
Thank you!

Possibly related: #64

Not a fix, but you could try using the -m 5 argument to limit the cycles to the first five.

Thanks for reaching out @ajmeese7
I'll need the obfuscated JS file that this happens on so I can reproduce the issue before I can debug it.

@BenBaryoPX the sample can be downloaded from here:
https://bazaar.abuse.ch/sample/f1bf8d22f9b6451e18564e2518ba6f40cb19128c8aaa86713bc4c43e01a2e7fd/

@ajmeese7 with v2.0.6 there's no longer a fatal error. The deobfuscation was complete in ~11 minutes with the -m 1 option, though the result wasn't great. I'll use the sample to improve the deobfuscation process, but I believe you can deobfuscate it by using a custome deobfuscator. See the boilerplate code for starting from scratch


Chapter1/homework/9

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 4

Complexity increasing per file
==============================
- Src/BootCamp.Chapter/Conversions.cs  5

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 8

Complexity increasing per file
==============================
- Src/BootCamp.Chapter/LetterConverter.cs  5
- Src/BootCamp.Chapter/Conversions.cs  5

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 1

Complexity increasing per file
==============================
- Src/BootCamp.Chapter/LetterConverter.cs  5
- Src/BootCamp.Chapter/Conversions.cs  5

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 2

Complexity increasing per file
==============================
- Src/BootCamp.Chapter/LetterConverter.cs  5
- Src/BootCamp.Chapter/Conversions.cs  5

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 2

Complexity increasing per file
==============================
- Src/BootCamp.Chapter/LetterConverter.cs  5
- Src/BootCamp.Chapter/Conversions.cs  5

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- Src/BootCamp.Chapter/LetterConverter.cs  5
- Src/BootCamp.Chapter/Conversions.cs  3

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 1

Complexity increasing per file
==============================
- Src/BootCamp.Chapter/ArrowMovement.cs  4
- Src/BootCamp.Chapter/BinaryConverter.cs  3

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 1

Complexity increasing per file
==============================
- Src/BootCamp.Chapter/ArrowMovement.cs  4
- Src/BootCamp.Chapter/BinaryConverter.cs  3

See the complete overview on Codacy


Rebalance big reactors

R13b

Made some small changes. Some more small changes may come later on down the line also.


Added libtool installation

The ./tools/build.sh was failing due to missing the libtool library.  I suggest adding libtool to the sudo apt-get installation

@BretStateham,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot

@BretStateham : Thanks for your contribution to the Azure documentation! The author, @chipalost, has been notified to review your proposed change.

Thanks @BretStateham
#sign-off


Documentation contributions

Propose a way to contribute to documentation out of the build cycle.

We can use the Github Wiki which is also a git repo containing the history of changes but allow us to keep QED main repo clean.

We will use Read The Docs and its source is in docs/ inside this repository, so contributions will work like code contributions, until we agree on something else.


Add missing API to script node on RVC4 + tests and examples

Adds the missing API to script node on RVC4 + some tests and examples.

script_switch_left_right_cameras and script_switch_all_cameras seem to do the same thing

Almost, the idea was that one was easier to understand and the other more generic.
Which one would you leave in?


Substitution error when including?

I have:

application.conf
reference.conf
reference.foo.conf (which is 'root' included in reference.conf (not into another key))

In reference.foo.conf I have keys application.server.protocol, application.server.host, application.server.port, which are then referenced from the same file to build up email text in application.foo.email.body using substitutions. This key is a multiline text field, with the substitutions using the 'unquoted string concat' method, eg.
application.foo.email.body = """
Some stuff
Happens
Here"""${application.server.protocol}"://"${application.server.host}${application.server.port}"""
Then we do some more stuff"""

The substitutions work fine when i make the changes to the keys in reference.foo.conf, but if I try and override them in application.conf, the email text still contains the original values from reference.foo.conf
My understanding of how the overlays work, and how substitution happens after all overlays, I would have expected this to work properly.
Is this a bug in config, or am I just doing something wrong somewhere along the way?
Thanks!!

All reference.conf files are resolved standalone, and then all application.conf are combined with the result and then the combination is resolved again. So reference.conf can't refer to application.conf, essentially. There's more discussion on https://github.com/typesafehub/config/issues/167
A possible workaround is to put an application.conf in your library along with the reference.conf, containing those things that should be processed as part of application.conf.

I may have been unclear, I'm not including anything in application.conf I'm using it in the 'proper' manner, eg. it will automagically override any keys that are set in reference files.
reference.conf is including reference.foo.conf
application.conf is attempting to override some default keys set in the references

what is the specific text that was misleading in the readme? I'll fix it up.

Was just looking for that now, but it seems there was no one real bit, but rather a combination of how the standard behaviour and substitutions are described.
Maybe some kind of note in the substitution part, highlighting the thread you linked, and/or the quirks of includes/substitutions would be cool.


Refreshing selected items from model

After the autocompleter has loaded, I'd like to be able to all the user to type in email addresses that are not in the results list, and have them added to the selected items. I do this by adding a timeout on the query and checking to see if the value is a valid email address. Then I call the model-to-item method. I see the new item being added to the model used in the directive, but it never renders.
<ion-autocomplete ng-model="listData"
model-to-item-method="autocompleterViewCntrl.addContact(modelValue)" ......

AutocompleterView._fetchContacts = function(query) {
$log.log("Autocompleter:searching", _vm.contacts.length);
var results = {contactResults: $filter('filter')(_vm.contacts, {displayName:query, email:query}, false)};
var valid = _filter("validEmail")(query);
clearTimeout(_vm.keyTimer);
if(valid) {
_vm.keyTimer = setTimeout(function() {
$log.log("Adding from manual:", query);
_cntrl.addContact(query)
},300)
}
return results;
}
AutocompleterView._addContact = function(modelValue) {
if(_vm.listData.indexOf(modelValue)>-1) {
return modelValue;
}
_vm.listData.push(modelValue);
$log.log("Autocompleter:add contact", modelValue, _vm.listData);
return modelValue;
}

Hi,
the model-to-item-method is used to retrieve the item by the model value and this is just used when you prefetch the model with model values.
The functionality you want is not implemented and it is not that easy to implement because the component separates the model and the view value and the user always sees the view value and not the model value.
But I could add a configuration option with which you are able to edit the main input field where the model is stored such that you are able to override the selected value or define your own.
Would that be a solution for you?
Thanks and regards,
Guy

I'm not sure. I have ng-model="listData", and internally you use ( model: '=ngModel' ), so it's not really pointing to the one I've defined? I would have expected it to.
So, yes, if I can define doing that as an option, that would be great.
Thank you.

Ok then I will have a look at it in the next milestone, as for this one there are a lot of other issues.
Thanks for showing me this use case.
Regards,
Guy

Is it possible to make this work through a fake query in the items-method?

I managed to do exactly that, fire a fake query and add the typed-in email address to the results list and generate a click on that element to add it to the selection list.

Ok yes that is an ugly hack but it works for now as you said. I will try to do my best to implement this asap. May you post the code how you did it for a reference for others which have the same issue now and need a quick fix?

This waits for the user to stop typing. If it detects a valid email address (filter not included here) it will push the manually-entered value into the results list and generate a click to add it to the selection list. It's not perfect, if someone is a slow typing and types "x@@.co" (for example) it will pick it up as a valid email address and will fire again on<EMAIL_ADDRESS>AutocompleterView._fetchContacts = function(query) {
var results = {contactResults: $filter('filter')(_vm.contacts, {displayName:query, email:query}, false)};
var valid = _filter("validEmail")(query);
clearTimeout(_vm.keyTimer);
if(valid) {
$log.log("Adding from manual:", query);
var tmpData = {displayName:query, email:query};
results.contactResults.push(tmpData);
//find the element and click it
setTimeout(function() {
var foundItems = document.getElementsByClassName("result");
for(var index in foundItems) {
var foundElement = angular.element(foundItems[index])[0];
if(!angular.isUndefined(foundElement) && !angular.isUndefined(foundElement.innerText) && foundElement.innerText.indexOf(query)>-1) {
angular.element(foundItems[index]).triggerHandler("click");
}
}
},800);
}
return results;
}

I just had a look at it again and this cannot be implemented in the directive itself as the directive doesn't know the structure of an item which is retrieved from the backend and this would be too complicated to create. An other easy way would be the new managed-externally attribute which I implemented here (https://github.com/guylabs/ion-autocomplete/issues/48#issuecomment-137913312).
There you could create an editable input field and then have a button which is called "select ..." and there you would select the values from the backend and if they want to provide their own email address they could just enter it into the input field directly. Do you know what I mean?
This way you can do any validation logic on the input field directly and you do not need to create ugly workarounds.
I will close the issue as I think this is not doable as you want it. We can still discuss about the other option.
Hope this helps you.
Thanks and regards,
Guy


SIGSEGV when destroying a ClientContext

What version of gRPC and what language are you using?
Version: 1.63.0
Language: C++
What operating system (Linux, Windows,...) and version?
OS: Amazon Linux 2 (4.14.348-265.565.amzn2.x86_64)
What runtime / compiler are you using (e.g. python version or version of gcc)
MSVC
What did you do?
Please provide either 1) A unit test for reproducing the bug or 2) Specific steps for us to follow to reproduce the bug. If there’s not enough information to debug the problem, gRPC team may close the issue at their discretion. You’re welcome to re-open the issue once you have a reproduction.
We're getting this crash when destroying a client context, this client context is used by one send RPC type only and is not shared between multiple RPCs. We create a new instance of a client context each time we invoke this send RPC.
I am wondering if I am somehow misuing the client context but, we've not seen this issue before and this code hasn't changed for a while.
I'd really appreciate any advice on what this might be or how we could go about getting more information.
Unhandled Exception: SIGSEGV: invalid attempt to read memory at address 0x000000002488bce0
0x000000000c74e497 ExeName-Linux-Shipping!absl::lts_20240116::status_internal::StatusRep::GetPayload(std::__1::basic_string_view<char, std::__1::char_traits >) const(+0x27)
0x000000000c810765 ExeName-Linux-Shipping!grpc_core::StatusGetInt(absl::lts_20240116::Status const&, grpc_core::StatusIntProperty)(+0x44)
0x000000000c8218a1 ExeName-Linux-Shipping!grpc_error_get_int(absl::lts_20240116::Status, grpc_core::StatusIntProperty, long*)(+0x10)
0x000000000c92fa27 ExeName-Linux-Shipping!recursively_find_error_with_field(absl::lts_20240116::Status, grpc_core::StatusIntProperty)()
0x000000000c92f533 ExeName-Linux-Shipping!grpc_error_get_status(absl::lts_20240116::Status, grpc_core::Timestamp, grpc_status_code*, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, grpc_http2_error_code, char const**)(+0x82)
0x000000000c8c3a59 ExeName-Linux-Shipping!grpc_core::FilterStackCall::DestroyCall(void*, absl::lts_20240116::Status)(+0x198)
0x000000000c828b6d ExeName-Linux-Shipping!grpc_core::ExecCtx::Flush()(+0x8c)
0x000000000c74bd5e ExeName-Linux-Shipping!grpc_core::ExecCtx::~ExecCtx()(+0x1d)
0x000000000c8c40ac ExeName-Linux-Shipping!grpc_core::FilterStackCall::ExternalUnref()(+0x26b)
0x000000000c8ced8e ExeName-Linux-Shipping!grpc_call_unref(+0x11d)
0x000000000c746b76 ExeName-Linux-Shipping!grpc::ClientContext::~ClientContext()(+0x15)
< Calling Code Omitted >
What did you expect to see?
No crashing.
What did you see instead?
Crashing.
Make sure you include information that can help us debug (full error message, exception listing, stack trace, logs).
See TROUBLESHOOTING.md for how to diagnose problems better.
Anything else we should know about your project / environment?

Please either provide a repro code or take a look at samples for examples of the API usage.

OK - thanks, I think we found the cause of this as a memory stomp in an unrelated area of the code base, this can be closed, thank you!


Frequent joining and quitting meetings will cause the memory of chrome browser to continue to grow

I used two machines to open the chrome browser and join the same conference room. One machine (Machine A) observed the changes in memory, and the other machine (Machine B) frequently joined and exited the conference through automated testing tools, with a frequency of 1 second. This lasted about 5 hours
The browser memory of machine A continues to grow from 113.347K to 497.890K. If it lasts for about 24 hours, the browser memory may grow to more than 1G, causing the browser to crash.

Are you testing with the client in this repo, or the new client here: https://github.com/edumeet/edumeet-client


Key events not propagated correctly?

I've built a full stack web framework in scheme language using snabb for render the frontend. It works mostly fine.
I implemented a modal widgets but I can't use escape key to close the modal.
I am stuck. I don't know how to debug.
Can you develop a modal widget using snabbdom somehow that implement the above escape key behavior?

could you show some code example of how it doesn't work? @amirouche

@FeliciousX Thanks for showing up!
I created a very small pure frontend example app that shows the issue. You can git clone the project and checkout the bug-1 branch with the following command:
git clone git@github.com:amirouche/forward.scm.git -b bug-1

You must then run the app using make (it requires python3).
Basically what I do, is add a keypress to a DOM node that is not an input and no events are propagated. It works fine with input nodes.

could u reproduce it on https://esnextb.in/ or https://www.webpackbin.com/ or jsbin or somewhere online where we can test it out and tweak it easier?

That I can do but you should have said that from the start. Do you have a ready to use boilerplate with snabbdom included?

I don't really understand the code but here I tried this out

Basically what I do, is add a keypress to a DOM node that is not an input and no events are propagated. It works fine with input nodes.

https://www.webpackbin.com/bins/-KkfODLKSUmuGHcnRF0R
It works fine. the events propogate up.. but only if you are focused on the input @amirouche

basically it only works if an element is focus-ed IIRC . you could hack it by adding a tabIndex property on the div to make it focus-able .. but yeah that depends on your use case

@FeliciousX I reproduced what you say in esnextbin indeed it requires tabIndex.
Here are links for future references:

https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex
http://stackoverflow.com/questions/32911355/whats-the-tabindex-1-in-bootstrap-for#32912224

@FeliciousX I reproduced what you say in esnextbin indeed it requires tabIndex.
Here are links for future references:

https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex
http://stackoverflow.com/questions/32911355/whats-the-tabindex-1-in-bootstrap-for#32912224


Add support for dependsOn method

Hi
I'm looking for a way to show/hide a Open File Manager button, depending on the value of one or more other fields.

should be fixed in https://github.com/oneduo/nova-file-manager/pull/103
Thanks


Update README.rst

the gtd.py has no matching in pip. instead, it has successfully installed using pip3
executed
pip install -U gtd.py

result
Could not find a version that satisfies the requirement gtd.py (from versions: )
No matching distribution found for gtd.py

Thanks for the fix!


add customisable notification config

Description
Add configuration options for users to be able to forward events to targets.
I'd like everyone to think of scenerios that this current config doesnt work for and leave them in the comments so we can try account for all of them.
Checklist

[ ] I have added one of the patch, minor, major or no-release labels
[ ] I have linked an issue from this repository using the Development option
[ ] I have performed a self-review of my own code
[ ] I have checked for redundant or commented out code
[ ] I have commented my code where I can't make it self-documenting
[ ] I have made corresponding changes to the documentation
[ ] I have added any appropriate tests

Codecov Report
Attention: 1 lines in your changes are missing coverage. Please review.
:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.

Files
Coverage Δ

pkg/validator/notifications.go
100.00% <100.00%> (ø)

pkg/validator/validate.go
0.00% <0.00%> (ø)

:loudspeaker: Thoughts on this report? Let us know!.


Emit loaded event after attaching to.

Emit loaded event just after attaching to it, but element is already loaded (due to some timings within an angular project).

The change will fire the loaded whenever we attach a listener. Two concerns:

This may happen long after the element was actually loaded
The fix will trigger other listeners that are currently listening for the loaded event.


newrecovered shows as 0

when used to call newrecovered it returns 0

hi this is not an issue it just says that there are no new recovered cases.
you can look here in the API: https://api.covid19api.com/summary

but it's shown here https://covid19.moh.gov.sa/

but it's shown here https://covid19.moh.gov.sa/

The API might be outdated by a bit about saudi arabia, which is something I can't do...
This is a wrapper for the API, not the API.


New iOS prompts for clipboard access every time you go into the app

The new version of iOS (16.2) has some new functionality around clipboard permissions.  Every time you open up our app on that version of iOS it prompts (even if you have already allowed the prompt the previous time).

this one has been addressed AFAIK


Release 0.8.5.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

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

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
1322

Relevant Lines:
1459

💛  - Coveralls


Expose now_local

What you think about expose the now_local method from Request object as line now method to use the local timezone and not UTC ..

@Marlysson I think is useless as weppy now uses pendulum for the now object, so if you need to always use a specific timezone you can just write a 1 line method for that:
from weppy import now

def local_now():
    return now().in_timezone("Europe/Berlin")

Hmm ..
It's because the Request object have the now method that is expose at end of file.. and too have the method local_now ..
But then import the now method ( that is expose in globals file ) and overwrite it with behavior that I want.

Caution: now it's not necessarily request.now. The now function defined in globals it's not just an exposure of the request method. It's evaluated dependently on the context. The fact request has a local_now it's just for a backward compatibility reference.


Render old and  new NH numbers

The renumbered national highway numbers are becoming quit confusing as signboards on the ground are slowly getting upgraded.
We need the render both the ref and ref:old numbers like NH66/NH16

should we close this ?
old no is not much used now

👍


Add missing syntaxes

In #771, a few syntaxes were missing since they were not correctly pulled to my local environment and were not included in the binary file syntect.bin. This has been fixed in this PR.
This PR will fix #1563.

Current list of supported syntaxes:

Plain Text
ASP
HTML (ASP)
ActionScript
AppleScript
Batch File
NAnt Build File
C#
C++
C
CSS
Clojure
D
Diff
Erlang
HTML (Erlang)
Go
Graphviz (DOT)
Groovy
HTML
Haskell
Literate Haskell
Java Server Page (JSP)
Java
JavaDoc
Java Properties
JSON
JavaScript
Regular Expressions (Javascript)
BibTeX
LaTeX Log
LaTeX
TeX
Lisp
Lua
Make Output
Makefile
Markdown
MultiMarkdown
MATLAB
OCaml
OCamllex
OCamlyacc
camlp4
Objective-C++
Objective-C
PHP Source
PHP
Pascal
Perl
Python
Regular Expressions (Python)
R Console
R
Rd (R Documentation)
HTML (Rails)
JavaScript (Rails)
Ruby Haml
Ruby on Rails
SQL (Rails)
Regular Expression
reStructuredText
Ruby
Cargo Build Results
Rust
SQL
Scala
Bourne Again Shell (bash)
Shell-Unix-Generic
commands-builtin-shell-bash
HTML (Tcl)
Tcl
Textile
XML
YAML
AWK
Ada
Apache Conf
AsciiDoc (Asciidoctor)
Assembly (x86_64)
CMake C Header
CMake C++ Header
CMake
CMakeCache
CMakeCommands
Comma Separated Values
Cabal
CoffeeScript
CpuInfo
Crontab
Crystal
Dart
Dockerfile
DotENV
Elixir
HTML (EEx)
Elm Compile Messages
Elm Documentation
Elm
Email
F#
Fish
Fortran (Fixed Form)
Fortran (Modern)
Fortran Namelist
GFortran Build Results
OpenMP (Fortran)
fstab
GLSL
GraphQL
Man Page (groff/troff)
group
HTML (Twig)
hosts
INI
HTML (Jinja2)
Jinja2
jsonnet
Julia
Kotlin
Less
LLVM
Lean
Manpage
MediawikerPanel
Mediawiki NG
MemInfo
nginx
Nim
Ninja
Nix
orgmode
passwd
Protocol Buffer
Protocol Buffer (TEXT)
Puppet
PureScript
QML
Racket
Rego
Requirements.txt
resolv
Robot Framework
SCSS
SML
Ruby Slim
Strace
Stylus
Solidity
Vyper
JQ
Svelte
Swift
SystemVerilog
Navigational Bar SV
TOML
JSON (Terraform)
Terraform
Todo.txt
TypeScript
TypeScriptReact
Verilog
VimL
Vue Component
Zig
gnuplot
HTTP Request and Response
log
Highlight non-printables
Authorized Keys
Known Hosts
Private Key
SSH Common
SSH Config
SSH Crypto
SSHD Config
syslog
varlink

Syntaxes excluded due to compatibility issue:

syntaxes/02_Extra/Assembly (ARM).sublime-syntax
syntaxes/02_Extra/Elixir/Regular Expressions (Elixir).sublime-syntax
syntaxes/02_Extra/JavaScript (Babel).sublime-syntax
syntaxes/02_Extra/LiveScript.sublime-syntax
syntaxes/02_Extra/PowerShell.sublime-syntax
syntaxes/02_Extra/SCSS_Sass/Syntaxes/Sass.sublime-syntax
syntaxes/02_Extra/SLS/SLS.sublime-syntax
syntaxes/02_Extra/VimHelp.sublime-syntax
syntaxes/02_Extra/cmd-help/syntaxes/cmd-help.sublime-syntax

Thanks!

Is there a list of syntaxes supported other than in this pr? Would it make sense to document this on https://typst.app/docs/reference/text/raw/#parameters-lang


Include Kotlin DSL samples for chapter troubleshooting_dependency_resolution

Gradle Core Team Checklist

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation
[ ] Recognize contributor in release notes

Changes done @eskatos

I fixed the samples tests and merged. Thanks yet again @jnizet!


Provide remote service eventing support

Is your feature request related to a problem? Please describe.
When an event happens on the remote server (e.g. insert, replace, patch, delete), I'd like my UI to respond to that event.  This can be either via a delegate or event handler.
Describe the solution you'd like
I'd prefer an Event Handler (e.g. MobileTable{T}.TableUpdated) which provides the following information in the event arguments:

The table being updated
The operation (add, delete, replace, etc.)
The item before the operation
The item after the operation

Describe alternatives you've considered
See the Todo.NetStandard.Common - coding it as a wrapper around the repository.

Fixed via a move back to the NS2 codebase.


Carps can't eat poison meat

Description

See title. Carps and other animals should be able to eat meat consequence free (maybe even heal them).
Probably an inheritance issue, if not probably easy to fix by giving them high flat reduction to toxin damage. Same for spiders etc.
Reproduction

Screenshots

Additional context

solved by #8831


Generate & add .gitattributes

When having Linux based and Windows based contributors, we get issues with CRLF vs LF.
This is to solve this issue.

Used find . -type f | perl -ne 'print $1 if m/\.([^.\/]+)$/' | sort -u to identify the file extentions, excluded node_modules.


Chat download

Checklist

[X] I have checked the issue page for duplicates
[X] I am running the latest version (download here)

Write your feature request here
Hey, I wondered since the vods do now have a chat replay, will you be adding the option to download them too? Would be awesome
Thanks

I'll take a look, thanks for the update!

I'll take a look, thanks for the update!

The API to retrieve messages is done by current timestamp and it only has a ?start_time property. It appear that ever 5 seconds it makes a API call to get messages from that 5 second period, meaning you would need to make 12 API calls to retrieve a 1 minute worth of messages, 120 calls for 10 minutes worth etc. It also could be somewhat optimized probably, but it would still require lots of API calls.
Thus, not going to add this feature unless something new pops up.
Now on Twitch, you have GQL access and only need to make a few requests.


useParams() does not re-render a component when the URL is updated with navigate() or back/forward buttons

Describe the bug
I'd like to store a component state in the URL like in this simple sample:
import { render } from 'solid-js/web';
import type { Component } from 'solid-js';

import {
  Router,
  Routes,
  Route,
  Navigate,
  useParams,
  useNavigate,
} from '@solidjs/router';

const Counter: Component = () => {
  const params = useParams();
  const count = +params.count;
  const navigate = useNavigate();
  return (
    <>
      <button onClick={() => navigate(`/counter/${count + 1}`)}>+1</button>

Count: {count}

    </>
  );
};

const App: Component = () => {
  return (
    <Routes>
      <Route path='/counter/:count' component={Counter} />
      <Route path='/*' element={<Navigate href='/counter/0' />} />
    </Routes>
  );
};

render(
  () => (
    <Router>
      <App />
    </Router>
  ),
  document.getElementById('root') as HTMLElement
);

When clicking on the button, the count is updated in the URL but the component is not re-rendered and the value displayed on the page is not updated. If I reload the page the value is updated but if I click on the back button the component is not re-rendered either.
Your Example Website or App
https://gitea.dyomedea.com/Dyomedea/sandbox/src/branch/master/solid-repro
Steps to Reproduce the Bug or Issue
Just run the sample.
Expected behavior
I was expecting useParams() to be reactive!
Screenshots or Videos
No response
Platform

OS: Linux
Browser: Chromium and Firefox
Version:
├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>
Additional context
No response

Ooops, I must forget my React habits...
Just found out that I must explicitly create a signal from the parameters and add an effect set this signal:
  const params = useParams();
  const [count, setCount] = createSignal(0);
  createEffect(() => {
    setCount(+params.count);
  });

is working fine.
It's not intuitive to me but I guess that it makes sense, sorry for the noise!


[REVIEW] ShorunTech

GitHub Profile Link
https://github.com/ShorunTech

Your profile and projects look really great at a first look.
Perhaps the graphs under the "my github stats" can be removed because they are not very helpful to showcase the best about you


git or http input artifact hangs in pending state when invalid repo/branch or url

Pre-requisites

[X] I have double-checked my configuration
[X] I can confirm the issues exists when I tested with :latest
[ ] I'd like to contribute the fix myself (see contributing guide)

What happened/what you expected to happen?
Hello team, I have a workflow using a git repo as an artifact. Problem I'm having is if the input artifact is not a valid git url/branch the workflow hangs in pending state eventhou the wf container recognizes that repo is invalid.
Ideally the step and workflow should fail in such scenario. I tried setting activeDeadlineSeconds but this didn't help. is there any workaround/fix?same thing I also noticed on an http artifactI simplified my example to the following:

Version
v3.4.5
Paste a small workflow that reproduces the issue. We must be able to run the workflow; don't enter a workflows that uses private images.
- name: execute-script
      artifacts:
      - name: repo
        path: /source/
        mode: 0777
        git:
          repo: '{{workflow.parameters.git-repo}}'
          depth: 1
          singleBranch: true
          branch: 'notvalidbranch'
          usernameSecret:
            name: gitcreds
            key: username
          passwordSecret:
            name: gitcreds
            key: password
    container:
      image: python:alpine3.6
      command: ["python", "/source/script.py"]

Logs from the workflow controller
...
time="2023-03-21T17:48:28.430Z" level=info msg="Get leases 200"
time="2023-03-21T17:48:37.454Z" level=info msg="Get leases 200"
time="2023-03-21T17:48:46.679Z" level=info msg="Get leases 200"
time="2023-03-21T17:48:50.313Z" level=info msg="List workflows 200"
time="2023-03-21T17:48:50.313Z" level=info msg=healthz age=5m0s err="<nil>" instanceID= labelSelector="!workflows.argoproj.io/phase,!workflows.argoproj.io/controller-instanceid" managedNamespace=argo-workflows
time="2023-03-21T17:48:55.652Z" level=info msg="Get leases 200"
time="2023-03-21T17:49:03.108Z" level=info msg="Get leases 200"
time="2023-03-21T17:49:08.689Z" level=info msg="Alloc=4706 TotalAlloc=14158956 Sys=20561 NumGC=36190 Goroutines=15"
time="2023-03-21T17:49:11.229Z" level=info msg="Get leases 200"
time="2023-03-21T17:49:17.779Z" level=info msg="Get leases 200"
time="2023-03-21T17:49:27.502Z" level=info msg="Get leases 200"
time="2023-03-21T17:49:35.284Z" level=info msg="Get leases 200"
time="2023-03-21T17:49:41.071Z" level=info msg="Get leases 200"
time="2023-03-21T17:49:50.314Z" level=info msg="List workflows 200"
time="2023-03-21T17:49:50.314Z" level=info msg=healthz age=5m0s err="<nil>" instanceID= labelSelector="!workflows.argoproj.io/phase,!workflows.argoproj.io/controller-instanceid" managedNamespace=argo-workflows
time="2023-03-21T17:49:50.355Z" level=info msg="Get leases 200"
time="2023-03-21T17:50:01.240Z" level=info msg="Get leases 200"
time="2023-03-21T17:50:09.270Z" level=info msg="Get leases 200"
time="2023-03-21T17:50:14.629Z" level=info msg="Get leases 200"
time="2023-03-21T17:50:23.744Z" level=info msg="Get leases 200"
time="2023-03-21T17:50:30.688Z" level=info msg="Get leases 200"
time="2023-03-21T17:50:36.759Z" level=info msg="Get leases 200"
time="2023-03-21T17:50:44.325Z" level=info msg="Get leases 200"
time="2023-03-21T17:50:50.313Z" level=info msg="List workflows 200"
time="2023-03-21T17:50:50.313Z" level=info msg=healthz age=5m0s err="<nil>" instanceID= labelSelector="!workflows.argoproj.io/phase,!workflows.argoproj.io/controller-instanceid" managedNamespace=argo-workflows
time="2023-03-21T17:50:53.141Z" level=info msg="Get leases 200"
time="2023-03-21T17:50:59.253Z" level=info msg="Get leases 200"
time="2023-03-21T17:51:05.102Z" level=info msg="Get leases 200"
time="2023-03-21T17:51:15.623Z" level=info msg="Get leases 200"
time="2023-03-21T17:51:23.700Z" level=info msg="Get leases 200"
time="2023-03-21T17:51:29.266Z" level=info msg="Get leases 200"
time="2023-03-21T17:51:34.544Z" level=info msg="Get leases 200"
time="2023-03-21T17:51:39.914Z" level=info msg="Get leases 200"
time="2023-03-21T17:51:46.773Z" level=info msg="Get leases 200"
time="2023-03-21T17:51:50.315Z" level=info msg="List workflows 200"
time="2023-03-21T17:51:50.315Z" level=info msg=healthz age=5m0s err="<nil>" instanceID= labelSelector="!workflows.argoproj.io/phase,!workflows.argoproj.io/controller-instanceid" managedNamespace=argo-workflows
time="2023-03-21T17:51:54.268Z" level=info msg="Get leases 200"

Logs from in your workflow's wait container
Failed to load logs: container "wait" in pod "perf-testing-95gm4-get-abcd-3390977405" is waiting to start: PodInitializingReason: BadRequest (400)

Can you try v3.4.6? It should be fixed.

i guess https://github.com/argoproj/argo-workflows/pull/10740 was the fix


Make available on CDNJS?

This is a very useful plugin, but doesn't have a CDNJS location to link to.  Even though it is very small, it would be nice if it was available via CDNJS for the various performance benefits it provides.

+1


Request: Allow Xamarin.UITest to have a App.config and support System.ConfigurationManagner

After working with the app-center support team it was brought to my attention that System.ConfigurationManagner is not supported when running tests in the app-center device cloud. This has made it an issue to have an App.config file for my automation project that would be nice to have to set certain configurations via the config file instead of using hardcoded strings.
Here is an example of code that does work just fine locally but not in app-center:
        /// <summary>
        /// Get and set for Android Bundle Id
        /// </summary>
        public string AndroidBundleID
        {
            get
            {
                _androidBundleId = ConfigurationManager.AppSettings["AndroidBundleId"].Trim();
                if (!string.IsNullOrWhiteSpace(_androidBundleId))
                    return _androidBundleId;
                else
                    throw new ArgumentNullException("\t\tMissing Android Bundle Id info.");
            }
            set
            {
                _androidBundleId = value;
            }
        }

I hope to see this supported in the feature, thank you, app-center team!

Hello, @Moshex! Thank you for the feature request. Just want to confirm some points.
If you desire to create a config file for MyTest.dll you should name it accordingly: MyTest.dll.config. Also, to make that file accessible in App Center Test, you should provide it in the CLI command with --include option.
Example
ProjectName: ConfigurationTests
Tests.cs

using ConfigurationManager = System.Configuration.ConfigurationManager;
namespace ConfigurationTests
{
[TestFixture]
public class Tests
{
AndroidApp app;
    [SetUp]
    public void BeforeEachTest()
    {
        app = ConfigureApp
            .Android
            .ApkFile ("/path/to/apk")
            .StartApp();
    }

    [Test]
    public void DisplaySettings()
    {

        TestSettings settings = GetSettingsFromXML();    // From XML with System.Configuration.* -> Works fine with --include

        Console.WriteLine(settings.BrandName);
        Console.WriteLine(settings.BrandGuid);
        Console.WriteLine(settings.TestUsername);
        Console.WriteLine(settings.TestPassword);
        Console.WriteLine(settings.ApiKey);
        Console.WriteLine(settings.ApiSecret);
        Console.WriteLine(settings.ServerName);

        Assert.AreEqual(settings.BrandName, "NameOfTheBrand");
        Assert.AreEqual(settings.BrandGuid, "11111-2222-3333-4444");
        Assert.AreEqual(settings.TestUsername, "my_email@outlook.com");
        Assert.AreEqual(settings.TestPassword, "12345");
        Assert.AreEqual(settings.ApiKey, "221151672");
        Assert.AreEqual(settings.ApiSecret, "a12312lkjh4khj");
        Assert.AreEqual(settings.ServerName, "https://server.name.com");

        app.Screenshot("Settings were set");
    }
}

public class TestSettings
{
    public string BrandName { get; set; }

    public string BrandGuid { get; set; }

    public string TestUsername { get; set; }

    public string TestPassword { get; set; }

    public string ApiKey { get; set; }

    public string ApiSecret { get; set; }

    public string ServerName { get; set; }
}

}
ConfigurationTests.dll.config

Also, please find useful info here: https://stackoverflow.com/questions/5190539/equivalent-to-app-config-for-a-library-dll/5191101

@konstantin-bobkov I hear what you are saying by making the config file a .dll but how does that change the fact that System.Configuration.ConfigurationManager as a line of code does not work in app center? I could use the" --include option."  for just a .config file however it still does not make System.Configuration.ConfigurationManager work, which your code example posted also uses the same line of code.

@Moshex, sorry for the long response. I tested that code in App Center Test Cloud and it works. Could you provide more details, please? Because from my side I can't reproduce the issue you are facing.

2 things on this,

Can a file with just the name "App.config" work in app-center
In the config file, are you able to store the application's bundle id you wish to point the automation code to a project you would like to execute your automation code on?

@Moshex,

App.config is not used for .dll files by ConfigurationManager. Please, find that conversation. If you intend to use App.config or another file you can read settings without using ConfigurationManager. E.g. for me it's convenient to use .json file and read all necessary values from it using newtonsoft library.

Or you use App.config file for your app, not test .dll?

You can provide and automate only one app in a specific test run. Xamarin.UITest will replace your local settings, for example path to application or app id, with parameters of application file in the CLI command. Thereby, you are able to automate only app provided in AppCenter CLI argument.


Add an helper for proxied HTTP/2

The standard library's http.Server supports HTTP/2, but only for tls.Conn. This doesn't work when serving connections behind a reverse proxy which terminates TLS and uses the PROXY protocol.
Supporting this requires some glue code, which the new helper provides.
The example was tested with tlstunnel.
Closes: https://github.com/pires/go-proxyproto/issues/90

coverage: 95.017%. remained the same when pulling 57466e31c54012d92a46a94f2e1546a230a96f7f on emersion:h2 into 864358a1e7a141febccde06762a1643bf872ff80 on pires:main.

Hopefully this addresses your comments. Let me know if something is still unclear.

Thanks a ton, @emersion 🙇🏻


[BUG]: OpenAI Compatible Endpoints completion without chunk

How are you running AnythingLLM?
Docker (local)
What happened?
I tried your new interestring functionnaly "OpenAI Compatible Endpoints"  , the path : /v1/openai/chat/completions
you have write : Send a prompt to the workspace with full use of documents as if sending a chat in AnythingLLM. Only supports some values of OpenAI API.
the system prompt is sending to the llm, but no documents contexts are inserted.
Are there known steps to reproduce?
{
"messages": [
{
"role": "user",
"content": "qu'est ce qu'un système BMS"
}
],
"model": "atelier_bms",
"stream": false,
"temperature": 0
}

In the docker logs you would see if any context was retrieved, but the case here is likely that there just simply are no matches to the prompt given in the vector database.
The search does occur
https://github.com/Mintplex-Labs/anything-llm/blob/7a78ad3960e069dbc783971dc7ff13cf1868c767/server/utils/chats/openaiCompatible.js#L83-L97

I checked by sending the same question from the standard UI and by the API
In both cases, the vector base is well questioned and returns many pieces of documents. On the other hand, since the OPENAI_Like API, these pieces of documents are not added to the context
The docker log does not say much:
[OllamaEmbedder] Embedding 1 chunks of text with nomic-embed-text:latest.
[TELEMETRY SENT] {
event: 'sent_chat',
distinctId: '98297666-e886-4011-9303-5720b1f81b92',
properties: {
LLMSelection: 'lmstudio',
Embedder: 'ollama',
VectorDbSelection: 'chroma',
runtime: 'docker'
}
}
[Event Logged] - api_sent_cha
The distances are almost the same:
{"ids":[["a85d269b-5da2-4f4c-9069-a49cfd6316da","adeb8a8c-95b4-4099-8912-fa2e22455eea","c2cfa314-96f0-495c-bc45-82f580d5c18f","cecfbcd9-c9ab-45e3-a595-becc01d506a7","b7dd0ad5-1313-4db7-aea9-15f7a1a47b56"]],"distances":[[369.6019287109375,371.1099548339844,371.14044189453125,371.15972900390625,371.2540588378906]],"metadatas":[[{"....

if i use only Query, i have the answer ::
There is no relevant information in this workspace to answer your query.
but i see the chromadb answer , i have similarity >=0.25 :
{"ids":[["135a37f6-8eb4-4452-9297-2cd8a0069975","790a133c-2967-4820-a44a-c2e0beabc418","4849c503-4538-4741-b152-150f91455e20","e3b5c32f-8d75-4971-95ac-bb6a3cf02808"]],"distances":[[0.3664718270301819,0.3721543550491333,0.3739575743675232,0.37604087591171265]],"metadatas":[[{"chunkSource":"","description":"Unknown","docAuthor":"Unknown","docSource":"a text file uploaded by the user.","id":"9753b7ca-7218-410b-8273-2ccdb94fe162","published":"6/21/2024, 2:21:04 PM","title":"Guide technique AREA MANAGER - partie 1.md","token_count_estimate":16438,"url":"file:///app/collector/hotdir/Guide technique AREA MANAGER - partie 1.md","wordCount":12105},{"chunkSource":"","description":"Unknown","docAuthor":"Unknown","docSource":"a text file uploaded by the user.","id":"9753b7ca-7218-410b-8273-2ccdb94fe162","published":"6/21/2024, 2:21:04 PM","title":"Guide technique AREA MANAGER - partie 1.md","token_count_estimate":16438,"url":"file:///app/collector/hotdir/Guide technique A

Odd, i dont see a "documents" key in there. There should be ids,distances,metadatas and documents


Causes huge CPU/memory usage on some sites

Open this site in Firefox
with UTM turned on:
http://www.independent.co.uk/voices/41-per-cent-trans-transgender-trans-women-prisoners-sex-offenders-false-study-statistic-this-is-why-a8072431.html
Notice that CPU and memory both shoot up.
It seems to be trying to make requests that are then failing, as part of the general run of the page.  I've attached an example.
ExampleRequest.txt

@andrewducker Why do you think this is related to au-revoir-utm? Try to open that website in a clean (i.e. no addons) Chrome profile and the same thing happens. That site is just badly done with a lot of scripts, ads, and background tasks.

If I open that page without the extension it causes a spike in CPU and memory and then quietens down again.
If I do it with the extension enabled it causes a spike and then the CPU usage stays constant, and memory keeps cycling up and down by a huge amount.  And this will carry on indefinitely.
Would it help if I did some digging?

Same problem here with when I open a blank tab (happens on various others pages too)

I really can't tell what the issue is here. Are you still seing this problem?

Hi, sorry, but I'm not using the extension anymore, the problem was still present when I've switched to an alternative, few days after I left my previous message.
Often, the bug was occuring on the facebook redirecting page ("https://l.facebook.com/l.php?u=") on my side, if it can help.


This comma does not belong here.

It's not exactly clear to me how this did run all those years and apparently worked fine.
Edit: Apparently it worked as a nested loop, iterating over the result of the dot product and using f[i] as iteration variable and working this way.

Merging in 24h.


component-model: export function named new in .wit causes name conflict

Wit code:
interface test {
    new: func()
}

world test-world {
    default export test
}

Rust code:
wasmtime::component::bindgen!({
    path: "test.wit",
});

Error:
1. duplicate definitions with name `new`
   duplicate definitions for `new`
2. other definition for `new`

Expanded macro:
pub struct TestWorld {
    new: wasmtime::component::Func,
}
const _: () = {
    use wasmtime::component::__internal::anyhow;
    impl TestWorld {
        #[doc = " Instantiates the provided `module` using the specified"]
        #[doc = " parameters, wrapping up the result in a structure that"]
        #[doc = " translates between wasm and the host."]
        pub fn instantiate<T>(
            mut store: impl wasmtime::AsContextMut<Data = T>,
            component: &wasmtime::component::Component,
            linker: &wasmtime::component::Linker<T>,
        ) -> anyhow::Result<(Self, wasmtime::component::Instance)> {
            let instance = linker.instantiate(&mut store, component)?;
            Ok((Self::new(store, &instance)?, instance))
        }
        #[doc = " Low-level creation wrapper for wrapping up the exports"]
        #[doc = " of the `instance` provided in this structure of wasm"]
        #[doc = " exports."]
        #[doc = ""]
        #[doc = " This function will extract exports from the `instance`"]
        #[doc = " defined within `store` and wrap them all up in the"]
        #[doc = " returned structure which can be used to interact with"]
        #[doc = " the wasm module."]
        pub fn new(
            mut store: impl wasmtime::AsContextMut,
            instance: &wasmtime::component::Instance,
        ) -> anyhow::Result<Self> {
            let mut store = store.as_context_mut();
            let mut exports = instance.exports(&mut store);
            let mut __exports = exports.root();
            let new = *__exports.typed_func::<(), ()>("new")?.func();
            Ok(TestWorld { new })
        }
        pub fn new<S: wasmtime::AsContextMut>(&self, mut store: S) -> anyhow::Result<()> {
            let callee =
                unsafe { wasmtime::component::TypedFunc::<(), ()>::new_unchecked(self.new) };
            let () = callee.call(store.as_context_mut(), ())?;
            callee.post_return(store.as_context_mut())?;
            Ok(())
        }
    }
};
const _: &str = "";

Thanks! I'll try to work on fixing this soon, probably by renaming new specifically as a bound function to something else or otherwise figuring out a different way of construction that doesn't claim the new identifier.

I've posted a fix for this at https://github.com/bytecodealliance/wasmtime/pull/5692


[python] add type hints for custom objective and metric functions in scikit-learn interface

Created in response to https://github.com/microsoft/LightGBM/pull/4544#pullrequestreview-735574138.
Contributes to #3756.
Proposes introducing more specific type hints for custom objective and metric functions in the scikit-learn and Dask interfaces in the Python package.

Thanks again for the help @StrikerRUS , this one required a lot of investigation 😄


Fix worflow conversion

Hi, that conversion is causing a panic when the result of Value() is nil

<EMAIL_ADDRESS>also released
@ostafen

Thank you very much. Responsive, as always


fix issue:userprofile hide unlisted post(#661)

This update fixes a display issue with the question list in profiles
Main changes:
Change the query conditions of the "GetQuestionPage" method of "question_repo" and decide whether to obtain hidden posts from the database based on the new parameter "showHidden".
The "showHidden" parameter is created in the "GetQuestionPage" method of "question_service" based on the role of the logged in user.
test:
The new filter functionality has been thoroughly tested to ensure it operates as expected in a variety of situations. Testing included checking the visibility of posts for different user roles.
Looking forward to your feedback and suggestions on this implementation.
Thank you for considering this pull request.

Thank you very much for your guidance, I opened a new PR to solve this issue from the dev branch.

The project compiles correctly, I think the reason it didn't compile before was that I forgot to upload a few auto-generated files ?


Removing workflow, as it will be managed externally

Creating this PR as a test for the tests manager

Taking ownership over this PR


SW-4693 Add extra permanent cluster count

To support mandatory permanent clusters in newly-added areas when planting zones
are expanded, add a new value to the zone information to hold the number of extra
permanent clusters that should be included in observations.
The new value is included in the admin UI and is incorporated into the cluster
count calculation in the UI, but isn't directly used by the server-side
application code yet.

Current dependencies on/for this PR:

main

PR #1623   👈

This stack of pull requests is managed by Graphite.


Do not complete --cgroup-parent as _filedir

This is a follow-up on 7d707360159852dde4e75fc5d4778c72abc44a03 as suggested by @tianon and me, see discussion in #11708

ping @tianon @jfrazelle

LGTM

Thanks @albers :heart:
LGTM


Add redirect messages to migrated / renamed examples

As the experiments PR got through - https://github.com/luxonis/depthai-python/pull/77 - and another one, with tweaks, will be merged soon - https://github.com/luxonis/depthai-python/pull/79 - and examples are listed in the gen2 API docs - https://docs.luxonis.com/projects/api/en/docs_python_api/ - we can remove gen2 examples from this repo, as it will be easier to maintain just a single version in depthai-python

Lets remove this once docs cover the description of the examples

Lets remove this once docs cover the description of the examples

Yes, agreed.  And I think we need to keep it as a URL (since we link to it from KickStarter), and then just provide the URL from this to the docs page.
We should always do that also, anything that is linked to, we should try to keep the link alive, with something as simple as a "See our docs here sort of thing".
Thoughts?

Yes, agreed.  And I think we need to keep it as a URL (since we link to it from KickStarter), and then just provide the URL from this to the docs page.
We should always do that also, anything that is linked to, we should try to keep the link alive, with something as simple as a "See our docs here sort of thing".
Thoughts?

Yes, agreed. And I think we need to keep it as a URL (since we link to it from KickStarter), and then just provide the URL from this to the docs page.
We should always do that also, anything that is linked to, we should try to keep the link alive, with something as simple as a "See our docs here sort of thing".
Thoughts?

If we link against commit instead branch:
e.g.
https://github.com/luxonis/depthai-experiments/blob/0f7fbbdd858b012c999a1cba6f3bd13723dca1bc/gen2-camera-demo/main.py
instead:
https://github.com/luxonis/depthai-experiments/blob/master/gen2-camera-demo/main.py
then the link will be valid and alive until we rewrite the git history.

Yes, agreed. And I think we need to keep it as a URL (since we link to it from KickStarter), and then just provide the URL from this to the docs page.
We should always do that also, anything that is linked to, we should try to keep the link alive, with something as simple as a "See our docs here sort of thing".
Thoughts?

If we link against commit instead branch:
e.g.
https://github.com/luxonis/depthai-experiments/blob/0f7fbbdd858b012c999a1cba6f3bd13723dca1bc/gen2-camera-demo/main.py
instead:
https://github.com/luxonis/depthai-experiments/blob/master/gen2-camera-demo/main.py
then the link will be valid and alive until we rewrite the git history.

Oh, good idea.  I will do that from now on.  In this case, KickStarter does not allow editing (after 30 minutes, and the post was days ago) so we will have to keep this around with a link to the docs.

Oh, good idea.  I will do that from now on.  In this case, KickStarter does not allow editing (after 30 minutes, and the post was days ago) so we will have to keep this around with a link to the docs.

@Luxonis-Brandon the examples are now in the docs, can we remove them so that we don't have to maintain them in both repositories?

Yes, I think so.  But I think we should leave a readme of the same name, that points to the docs, so that folks don't end up with broken links.  (And we should always do this, broken links are the worst in terms of UX.  But having a document that just points you to the new, actual documentation, is perfectly fine and refreshing.)
So two things:

Let's do this little redirect/description page back to the docs in this case.
Let's do this little redirect/description page in all other cases/situations.

Thoughts?

Agreed @Luxonis-Brandon, I'll add these redirects in this PR and circle back

Thanks!

@Luxonis-Brandon I've added info about migrated examples. Also added the placeholders for gaze-estimation and pedestrian reid, that were renamed in #69

Great thanks!


fix(es/codegen): Don't print comments before directives

Related issue:

Closes https://github.com/swc-project/swc/issues/5675.

I think this is not required


Add support to Diners

https://github.com/d-edge/Cardidy/issues/67

[ ] @aloisdg
[ ] @ytyukhnin

Please review the whitespaces changes (to avoid useless edition battle and huge diffs for nothing please :) besides that, LGTM, waiting for the next commit to approve


Going back to the Homarr tab after using the search bar causes Homarr to freeze completely

Environment
NodeJS
Version
0.3.1
Describe the problem
Using the search bar will open your search results in a new tab. However, whenever you go back to the homarr tab, Homarr freezes. You will have to refresh the tab for any functionality to work again.
Additional info
There are no errors in the console logs, and I can't find anything that could be the root of this bug.
Please tick the boxes

[X] You've read the docs
[X] You've checked for duplicate issues
[X] You've tried to debug yourself

Fixed in https://github.com/ajnart/homarr/commit/e3d47d78e0d1cc3c0ca62cf170205540d4923113


utoipa-swagger-ui Release 7.0.2

Hello,
I wonder if we could have a release 7.0.2 of utoipa-swagger-ui  which allows specifying the SWAGGER_UI_DOWNLOAD_URL starting with file://. At the moment I can't upgrade to 7.0.1 since I package my application with the nix package manager, which doesn't allow downloads during build. But I could hand over the downloaded zip to the build process using file://.
This functionality was added in the recent change https://github.com/juhaku/utoipa/pull/923
Thank you.

Sure, I was wondering that same thing actually that the release could be made from the utoipa-swagger-ui.

https://github.com/juhaku/utoipa/releases/tag/utoipa-swagger-ui-7.0.2 Should be available shortly :gift:

Great, working for me! Thanks!

Anytime, FYI there is now also a vendored version of Swagger UI. I noticed that there is a need for such since the docs.rs is a sandbox and does not resolve names outside the specific addresses like crates.io.


05/20/2018 21:16 : Create Pull Request for branch master -> prTesting1_2018052021

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

split/updateTestCon1.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Hostname generation possible outside of the UI?

What kind of request is this (question/bug/enhancement/feature request):
Question
I'm trying to automate my deployments to Kubernetes(Rancher) using Helm. Currently, we're taking advantage of the automated hostname generation for Ingress' through the UI (which works very nicely). I was wondering if there is a way to do this via a plain Kubernetes Ingress yaml file. We'd like to be able to package our Ingress definitions in our Helm charts, but this is currently not possible when relying on these hostnames. Maybe there's a label or annotation that would trigger this? I haven't been able to find any information yet.
Thanks

There is a host field in ingress yaml. The auto-generation will work without any rancher related labels or annotations
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  labels:
    app: wordpress-wordpress
    chart: wordpress-2.1.10
    heritage: Tiller
    release: wordpress
  name: xip.io-wordpress
  namespace: wordpress
spec:
  rules:
  - host: xip.io
    http:
      paths:
      - backend:
          serviceName: wordpress-wordpress
          servicePort: 80

Just tested this out and it worked great! Thanks.


cannot fork() for git-remote-https: Resource temporarily unavailable

When I try to install laptop, I get this error message when installing Homebrew:
==> Downloading and installing Homebrew...
error: cannot fork() for git-remote-https: Resource temporarily unavailable
Failed during: git fetch origin master:refs/remotes/origin/master --tags --force
failed

I'm trying to install the script on MacOs High Sierra
thanks for your help,
Anthony

after installing Homebrew manually the laptop script seemed to run fine. The only thing I'm missing though is the 'tat' command to startup a tmux session.

I'm going to close this, since it has been a couple years and it never got a response. 😢
The fork() system call failing might have been an indication that there were too many processes running. Rebooting might have helped. I don't think there is much we could have done within the laptop script to fix that. If I am wrong about that, we can reopen this issue.


Add marko-web-native-x-query component

Allows one or more native-x ads to be returned for further processing/formatting.


Short solution needed: "How to rename  atable" (clickhouse)

Please help us write most modern and shortest code solution for this issue:
How to rename  atable (technology: clickhouse)
Fast way
Just write the code solution in the comments.
Prefered way

Create pull request with a new code file inside inbox folder.
Don't forget to use comments to make solution explained.
Link to this issue in comments of pull request.

How to rename a table


Demo/Training: Update Device List to Match Production

Why should we do this?

Current Experience: The list of devices available for selection on the Demo/Training site for SimpleReport does not accurately reflect the devices available in Production. This discrepancy creates confusion for new users who are familiarizing themselves with the application, and makes it difficult for the Customer Support team to effectively troubleshoot device issues.
Why We Want to Make This Change: Customer Service should be able to confidently use the demo and training websites to troubleshoot issues customers are having with the same devices on production.

User story
As a New User I want the list of devices available in Demo/Training to be identical to the list in Production so that I can learn the application efficiently and avoid errors when using it in my facility.
Action Requested
Update the devices available on the demo.simplereport.gov and training.simplereport.gov websites to ensure they are identical to the devices available in the Production application.
Acceptance Criteria
[ ] The devices available on the demo.simplereport.gov and training.simplereport.gov websites and reviewed and confirmed to match the devices available in Production.
[ ] Functionality is tested to confirm all listed devices in Demo/Training can be selected and used as intended.

Need to re-evaluate

Blocked until we get an security question answered.

We've gotten the green light from @alismx  / DevSecOps to expose device data in a public endpoint, which is how we want to drive the device seeding in demo / training.  Should be able to work towards that goal now.

Tasks:

[ ] Add secrets to vault and terraform files (for storing token to make requests to prod for device data, etc...)
[ ] Add public devices endpoint protected by token that was added above
[ ] Create endpoint and functionality to sync current env's DeviceType data with prod's

Apologies that I never added this detail to the ticket itself.  There is a concern based on some old conversations that removing the @JsonIgnore tag would potentially cause issues.  We should make sure that we try to test this as best we can.


DWA — Add favicon

Project
Days Without Alcohol
Description
A feature request to add a favicon.ico to the page.

Fixed by this commit.


Waypoints for trusted starting point

Motivation for using Waypoints
A node that comes online after being disconnected for a long period of time faces a problem of the initial syncup because it might no longer trust the old public keys of the historical validators it is aware of, which could have been compromised since then (the so called “long range attack”).
We’d like to use Waypoints as an off-chain mechanism for providing the initial trusted set of validators and a point in the accumulator history. Waypoints are going to be published by the association on a regular basis (e.g., on GitHub once in two weeks), and should be embedded within the nodes (clients / full nodes / validators) as a trusted “starting place”.
The Waypoints as “initial trusted starting point” can then be used in the following situations:
Quick trusted recovery starting from a recent point in time after a long offline period.
Configuring genesis: a genesis waypoint certifies the genesis with its initial validator set.
Hard forks: in case of a fork the chosen branch is stamped with the waypoint.
Obviously, being an off-chain mechanism there is no way to “prove” a waypoint, the nodes trust waypoints in order to jumpstart.
Waypoint properties and debate
We considered several alternatives for implementing the waypoints, and after several iterations of discussions we partitioned the differences along the following lines:

Simplicity of verification using waypoints.
What is the protocol for verification of the latest ledger info given a waypoint?
We’d like the verification to be intuitive and straightforward. If the waypoint verification is not obvious, clients might choose not to use it, and we'll have a hard time putting it in TCB.

Waypoints in the middle of epochs.
Do we want to be able to generate waypoints for arbitrary versions in history, or we can limit ourselves to epoch boundaries only?
We are generally planning to have smart contracts for generating epochs on a regular basis (e.g., once a day). Epoch increments can happen even without external requests, and they are cheap (two empty blocks).
In case of a hard fork we should start a new epoch for the newly started branch as well.
There seems to be no value in adding a waypoint in the middle of a previous epoch because they change frequently enough. There is also no value in adding a waypoint in the middle of the current epoch, because if we suspect that there might be a fork in the current epoch it means we don't trust the current validator set and we should absolutely move to the next epoch anyway.

Waypoints that cannot generate partially correct synchronization.
Is it possible to construct a malicious waypoint, which, together with a malicious remote storage, could trick a client to synchronizing to the latest ledger info with a correct root hash but a wrong validator set?
Obviously that would be very bad for the node (that said, it can happen only if a waypoint is intentionally malicious, which contradicts the whole idea of trusted off-chain info).

Previous waypoint proposal
Our previous proposal for implementing waypoints is thoroughly described in https://github.com/libra/libra/issues/1013. It is working fine and achieves properties 2 and 3, however, we had some concerns regarding the simplicity of verification. Hence, we tried to come up with a simpler solution via sacrificing property number 2 and temporarily relaxing property 3.
The simplified waypoint design
The basic idea is to issue waypoints that can certify epoch transitions only. By giving up on the ability to put waypoints on the arbitrary versions in the middle of the epochs (property 2) we can leverage the fact that storage keeps the latest LedgerInfos per epochs and these LedgerInfos include both the accumulator hashes and the validator sets:
pub struct LedgerInfo {
   /// The version of the latest transaction in the ledger.
   version: Version,
   /// The root hash of transaction accumulator that includes the latest transaction.
   transaction_accumulator_hash: HashValue,
...
   /// An optional field keeping the set of new validators to start the next epoch.
   /// The very last ledger info of an epoch contains the validator set for the next one,
   /// other ledger info instances are None.
   next_validator_set: Option<ValidatorSet>,
}

The regular verification across epochs includes a series of ledger infos that can be verified starting with a trusted validator set corresponding to the epoch given by the client.
pub struct UpdateToLatestLedgerResponse<Sig> {
   ...
   /// The validator change events is a vector of transitions that help a client
   /// to verify the latest validator set given the initial trusted validator set.
   pub validator_change_events: Vec<ValidatorChangeEventWithProof<Sig>>,
   ...
}

pub struct ValidatorChangeEventWithProof<Sig> {
   /// The latest ledger info of an epoch keeps the validator set of the next epoch.
   ledger_info_with_sigs: LedgerInfoWithSignatures<Sig>,
   ...
}

The goal of waypoints is to provide a client node with the initial trusted root hash and validators; in other words, it is enough for the waypoint to include the information about a LedgerInfo on the epoch boundary. We don’t want Waypoint representation to be a large string (LedgerInfo is relatively large because it includes info about the validators of the next epoch), hence the waypoints will keep the hash of LedgerInfos:
pub struct Waypoint {
   /// Version of the last txn in the chosen epoch
   version: Version,
   /// Hash of the latest LedgerInfo of that epoch
   ledger_info_hash: Hash,
}

Waypoints are published via strings version:ledger_info_hash.
What should a client do with the waypoint upon restart?

Well, almost the same regular thing that it does for any other validation!
It’s sending the UpdateToLatestLedgerInfoRequest to the remote storage with the version of the waypoint.
The only difference is that the very first LedgerInfo in the returned vector of validator_change_events is verified differently. Instead of a typical verification that is using the signatures of the current trusted validator set, we’re verifying the first LedgerInfo by comparing its hash with the hash of the waypoint.

The simplified waypoint design ++
The simplified design depicted above does not satisfy property 3, because a malicious waypoint might contain a hash of a ledger info with the proper accumulator root hash but a bogus validator set.
If we want to make sure that the validator set matches the accumulator root hash, we must provide a proof from the corresponding reconfiguration event to the accumulator root hash.
Note that this additional verification (proof from reconfiguration event to the root hash) is not specific to the waypoints. It’s a property of any verification that goes through epochs.
It’s important to emphasize that this additional level of verification is not necessary if we trust the waypoints.
In order to obtain the additional level of protection we should extend the ValidatorChangeEventWithProof struct to include the proof of event:
pub struct ValidatorChangeEventWithProof<Sig> {
   /// The latest ledger info of an epoch keeps the validator set of the next epoch.
   ledger_info_with_sigs: LedgerInfoWithSignatures<Sig>,
   /// The proof connecting the reconfiguration event with the accumulator root hash of LI.
   event_with_proof: EventWithProof,
}

Our plan is to first implement the basic simplified waypoint design, and implement the additional level of verification as a second step.

A LedgerInfo now looks a bit different, with the important parts highlighted:

If I understand correctly, the additional level of security mitigates an attack where I give you a fake waypoint which makes you sync to the correct state of the chain but with the wrong validator set.
But an attacker can do even worse right? He can give you an incorrect state as well. In which case the additional security checks wouldn't be able to do much.
Knowing that, is there really any benefits in these additional checks?

[ ] Waypoint distribution and consumption #2425

Waypoint property 2:

…if we suspect that there might be a fork in the current epoch it means we don’t trust the current validator set and we should absolutely move to the next epoch anyway.

Could someone please elaborate this statement a little bit? How would you expect a client to detect fork within an epoch? Is it expected to use LedgerConsistancyProof?

Current waypoint implementation does not provide frozen subtrees in order to use consistency proof.
For example, a client is inited with a waypoint 1234:xxxxx, by querying the ledger with KnownVersion=1234, it can verify the waypoint, but cannot gain the frozen subtrees from 0 through 1234. Without those subtrees, it can not detect forks in subsequent queries.
I'd suggest to include frozen subtrees (e.g. for version 0 through 1234) into LedgerInfos at epoch boundaries (e.g. version 1234), so that these information also gets hashed into the Waypoint and returned with ValidatorChangeProof, just like the next validator set. Thus, by querying and verifying a LedgerInfo at the version specified in a Waypoint, a client can also learn the frozen subtrees, with which it can make use of LedgerConsistancyProof and detect forks later.

@the729 thanks for the question. Note that the waypoint is covering the hash of the fields of LedgerInfo, which include the root hash of the accumulator. Given a trusted root hash / version, a client can verify any other AccumulatorConsistentyProof with respect to that hash and version, hence there is no need to keep any of the frozen subtrees explicitly in order to verify information.

@dmitri-perelman thanks for the reply. But I believe that knowing the root hash without frozen subtrees is not sufficient to verify AccumulatorConsistencyProof. I'm referring to the comment here which refers to Accumulator::append_subtrees.
That's why I think maybe the waypoint should also cover frozen subtrees.

@the729 interesting, I guess there is some miscommunication here. I don't understand the circumstances in which the client needs to use AccumulatorConsistencyProof. Here's my understanding of it:

Client typically needs to know the root hash of the ledger because all the proofs about transactions / account state / events are built relative to this root hash.
A root hash of the ledger is delivered to the client in the LedgerInfoWithSignatures struct. The struct is verified using the trusted signatures of a validator set.
In a world with reconfigurations, the trusted signatures are updated upon epoch change. The last LedgerInfo of epoch n carries a validator set for the next epoch n+1 (signed by the validators of epoch n).
If we don't fully trust some old keys anymore (long range attacks) a client needs to have another mechanism of validating the LedgerInfo carrying the new validator set: it verifies this LedgerInfo using a waypoint.

@dmitri-perelman I noticed the reference CLI client does not verify AccumulatorConsistencyProof. I thought it is work-in-progress, since the proof is returned in the gRPC response message. But are you suggesting that a client don't need to verify it at all?
Regarding the 4th point you mentioned, before a client can reset from a new waypoint, it has to detect a hard fork or an attack in the first place. Without consistency checks, how can the client know if it needs to reset from a waypoint?
For example, a client is at v103, but some validators are compromised since v102. Forturnately the attack is detected by the Association, and a hardfork is issued from v101, generating a new branch v102' through v104'. Now, when the client queries the ledger again, it might think 104' is directly following 103.
If the client only cares about the latest states, it sees 104' and there is no problem. But if it also cares about the evolution of the states (for example a blockchain explorer), there is a problem.
Truth:
100 --- 101 --- 102 --- 103
          \
            --- 102' --- 103' --- 104'

Client thinks:
100 --- 101 --- 102 --- 103 --- 104'

p.s. This discussion seems have diverted from waypoint to consistency check. :-)

@the729 yup, the discussion is getting more interesting and high level :)

The "typical" usage of waypoints is to add additional level of security for starting the client nodes / Full Nodes. Consider a client that has been offline since epoch 20 for one year: if the latest epoch of a ledger is 2000 then this client needs to retrieve the ValidatorChangeProof starting from 20 to 2000. Each epoch transition in this proof is signed by the old keys that are not in use. In order to make sure this client does not diverge in case some of these old keys are compromised, a client can use a Waypoint issued by the association for some relatively recent epoch 1985. The client verifies the LedgerInfo with the validator set for 1985 using the waypoint, and will verify the rest of the epoch changes using relatively recent keys.
The "non-typical" usage of waypoints is to stamp reconfiguration transactions that do not go through regular consensus protocol (note that this is a last-resort measure for emergency situations, which should hopefully never happen). A good example would be a disaster with all the private keys of the validators being lost and the system being stuck. In this case there are two options:
2.1. Client's last version is less than the version of the "emergency reconfiguration". In this case when a client restarts it downloads the fresh waypoint and successfully verifies the validator set established by the association.
2.2. Client's last version is higher than the "emergency reconfiguration" (this is the case depicted in your figure above). This would be an extremely visible situation (reverting transactions!!). In this case, as you correctly pointed out a client will fail to verify the LedgerInfo sent by the ledger because it'll be signed by the keys that are not recognized by the client. A client would need to forcefully reset some of its state in order to "forget" transactions 102 and 103 in your example.

By the way, we tried to describe some thoughts about the verification with respect to the waypoints and reconfigurations in the following tech-paper that you might find interesting: https://github.com/libra/libra/blob/master/tech-papers/lbft-verification/lbft-verification.pdf


file history view "open changes with working file" does not work for the very first commit

GitLens Version: v11.3.0
Git Version: 2.7.4

VSCode:
Version: 1.54.3 (system setup)
Commit: 2b9aebd5354a3629c3aba0a5f5df49f43d6689f8
Date: 2021-03-15T10:55:45.459Z
Electron: 11.3.0
Chrome: 87.0.4280.141
Node.js: 12.18.3
V8: <IP_ADDRESS>-electron.0
OS: Windows_NT x64 10.0.19042
Steps to Reproduce:

In FILE HISTORY view, scroll to the very first commit at bottom and click "Open Changes with Working File" button. Nothing shows up.
"Open Changes with Working File" works for all commits in the FILE HISTORY list except the very first one at bottom.
The issue happens since gitlens version 11. I believe it worked correctly in version 10.

Why does no one care about this problem?


Performance Improvements and Native Routing Mode for Cilium

This PR modifies the Cilium configuration to achieve the best possible performance and also native routing functionality for Cilium, allowing configuration of a fully integrated network model. For more background information, please have a look here: https://github.com/kube-hetzner/terraform-hcloud-kube-hetzner/discussions/911
Changes:

Fixed decoupling issue between CCM IPAM and the Cilium IPAM. Now Cilium honors the IPAM from the CCM and Hetzner Network Routes are set accordingly to allow native routing directly to pod IPs as well. See also https://github.com/kube-hetzner/terraform-hcloud-kube-hetzner/pull/902#issuecomment-1648189450
Updated Cilium options according to the latest deprecation warnings: https://docs.cilium.io/en/latest/operations/upgrade/#deprecated-options
The Cilium version is now maintained explicitly. This PR sets it to 1.14.0 and some settings require that as the minimum version.
Enabled per endpoint routes instead of routing via the cilium_host interface.
Native routing mode has been added so that even a fully integrated network model (flat model) can be configured with Cilium
Enabled eBPF-based masquerading, considered the most efficient implementation.
Added LoadBalancer & NodePort XDP Acceleration (eBPF is operating directly in the networking driver instead of a higher layer)
Added option to enable the Egress Gateway for Cilium (disabled by default)

The native routing mode is disabled by default as we have been using tunnel mode so far. As we gain more experience with this setup, I would suggest changing the default to native. This also appears to be the setting Hetzner uses when testing their CCM with Cilium.
I've done my best to test many different cases, but I'd be very grateful for a thorough review :slightly_smiling_face:

Will give 24h-48h for others in the team to review if they want, and will merge, this is huge! 🚀

@M4t7e Are there any known issues with native routing on Hetzner?

@aleksasiriski No issues I am aware of. With the new setup the Hetzner CCM takes care about all Pod routes and updates the Hetzner Network Routes accordingly. The old setup bypassed the Hetzner CCM entirely and that was leading to connectivity issues if a native routing setup (routingMode: native) was used.
Old (dedicated IPAM that bypasses HCCM):
ipam:
 operator:
  clusterPoolIPv4PodCIDRList:
   - ${var.cluster_ipv4_cidr}

New (native K8s IPAM with HCCM support):
ipam:
  mode: kubernetes
k8s:
  requireIPv4PodCIDR: true


Package unavailable for task

Package unavailable for task: com.shopee.sg/com.firebase.jobdispatcher.GooglePlayReceiver{u=0 tag="DataPointService" trigger=window{start=0s,end=7200s,earliest=-5518114s,latest=-5510914s} requirements=[NET_CONNECTED,CHARGING] attributes=[PERSISTED,RECURRING] scheduled=-5518114s last_run=N/A jid=N/A status=PENDING retries=0 client_lib=FIREBASE_JOB_DISPATCHER-1}

Doesn't seem related to this library, right? Feel free to provide more info if otherwise, and I'll reopen.


Failed to sign vote

We have a horcrux setup with 3 signers up and running but proposal block can be committed #30 .
As the Raft feature is implemented, I added "raft-listen" and "raft-add" into the config.yaml but horcrux service is unable to sign the vote as below error
Feb 07 01:52:08 infra-m-signer-3-ln-sg horcrux[885633]: D[2022-02-07|01:52:08.569] I am not the raft leader. Proxying request to the leader module=validator Feb 07 01:52:08 infra-m-signer-3-ln-sg horcrux[885633]: E[2022-02-07|01:52:08.569] Failed to sign vote                          module=validator address=tcp://<IP_ADDRESS>:1234 error="unable to find leader cosigner from address <IP_ADDRESS>:10023" vote_type=SIGNED_MSG_TYPE_PRECOMMIT height=4114554 round=0 validator=160D942A71109538206E0A897DEBDBF8DDB06BD4

Is <IP_ADDRESS>:10023 the raft bind address of one of your signers, but you are using a different address in the raft peers? They need to be the same address in v2.0.0-beta2. I have a PR up in #51  to solve this, as I ran into the same thing when setting up horcrux within a kubernetes service, as the bind address is not the same as what's given in the peers list due to kubernetes service routing where the node has a different IP than the pod.

The raft bind-address is same as raft-add in peers list

Signer 1

cosigner:
   raft-listen: <IP_ADDRESS>:10023

Signer 2

peers:
 - share-id: 1
   raft-add: <IP_ADDRESS>:10023

Signer 3

peers:
 - share-id: 1
   raft-add: <IP_ADDRESS>:10023

Might just be a config issue, raft-add should be raft-addr.

Oh!! Silly me, it should be raft-addr! Close the issue as signers are voting.


[FR]: C# formatter

Part of aspect-build/bazel-super-formatter#6 (just starting a new issue specific to C#, so that the discussion can be more focused)

any possibility a C# entry can be added with some kind of dummy formatter in the meantime ? we are using rules_dotnet and we would like to use csharpier as the formatter for C# files

Is adding a dummy formatter easier than a real one? I don't think this is hard, it just needs a bounty or a PR contributed.