TypeError: LRU: key must be a string or number. Almost certainly a bug!

This error has returned as of 1.6.6 when running bower install --allow-root --quiet.
TypeError: LRU: key must be a string or number. Almost certainly a bug! undefined
    at typeCheckKey (/my-app/node_modules/bower/node_modules/lru-cache/lib/lru-cache.js:20:19)
    at LRUCache.get (/my-app/node_modules/bower/node_modules/lru-cache/lib/lru-cache.js:230:3)
    at /my-app/node_modules/bower/lib/core/resolvers/GitRemoteResolver.js:122:70
    at _fulfilled (/my-app/node_modules/bower/node_modules/q/q.js:834:54)
    at self.promiseDispatch.done (/my-app/node_modules/bower/node_modules/q/q.js:863:30)
    at Promise.promise.promiseDispatch (/my-app/node_modules/bower/node_modules/q/q.js:796:13)
    at /my-app/node_modules/bower/node_modules/q/q.js:857:14
    at runSingle (/my-app/node_modules/bower/node_modules/q/q.js:137:13)
    at flush (/my-app/node_modules/bower/node_modules/q/q.js:125:13)
    at doNTCallback0 (node.js:408:9)

$  node -v
v2.5.0
$  node -p process.versions
{ http_parser: '2.5.0',
  node: '2.5.0',
  v8: '<IP_ADDRESS>',
  uv: '1.6.1',
  zlib: '1.2.8',
  ares: '1.10.1-DEV',
  modules: '44',
  openssl: '1.0.2d' }
$  node -p process.platform
darwin
$  node -p process.arch
x64

root@da83d9532a93:/# bower install --allow-root --quiet
root@da83d9532a93:/# node -p process.versions
{ http_parser: '2.5.0',
  node: '2.5.0',
  v8: '<IP_ADDRESS>',
  uv: '1.6.1',
  zlib: '1.2.8',
  ares: '1.10.1-DEV',
  modules: '44',
  openssl: '1.0.2d' }
root@da83d9532a93:/# node -p process.arch
x64
root@da83d9532a93:/# bower -v
root@da83d9532a93:/# bower install jquery --allow-root --quiet
root@da83d9532a93:/# ls
bin  boot  bower.json  bower_components  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

@xzyfer I can't reproduce it, can you post your bower.json ?

Same error is pressent on node version 0.12.5.

I'm having the same issue with bower 1.6.6 and node 4.2.2.
In my case seems like the problem occurs if you set a branch name in some dependency version. Like this:
"jquery.easy-pie-chart": "master"

or
"jquery.easy-pie-chart": "rendro/easy-pie-chart#master"

or similar.
I also notice that the error occurs just for the first dependency matching this pattern while resolving.
Commit hashes works fine here.

I had the same problem with both Bower 1.6.6 and 1.6.7 on Node 4.2.2 and 5.1.0. Removing the ~/.cache/bower folder solved the problem for me, for some reason.

I can confirm the fix @Tenzer suggests, on v4.0 but wont fix on v0.12.5.

I cannot confirm the fix by @Tenzer, I am not bower 1.6.6 and node v4.2.2.

#2040 would fix this issue

I've merged the fix and I'm going to release soon.

bower update

Thanks, never knew that the command existed.


Util.py:135  type_ Undefined Error

Is there a type-o in line util.py, line 135? type_ is undefined.
Did you mean "if t in _STRING_TO_TF else t for t in types

Fixed by #2


SVG text highlighting

Hello,
Do you think it would be possible to highlight text in a SVG element ?
I have a SVG file loaded in the DOM. It has some text :
<svg height="30" width="200"><text x="0" y="15" fill="red">I love SVG!</text></svg>

I have tried to manually add to the file :
<svg height="30" width="200"><text x="0" y="15" fill="red"><tspan class="hightligh">I love SVG!</tspan></text></svg>

This add a color to my text. However, when I apply your "highlightSelection()" function (and modify it a little to add "tspan" instead of "span" ), I get exactly the same result in the DOM, but as a result the text disapears. It seems that the CSS does not apply the same way
Thanks for any idea

Well,
I have edited your rangy-classapplier.js, replaced "createElement" with doc.createElementNS("http://www.w3.org/2000/svg"
and i am happy to say that :

highligting works on svg (no background color but fill color)
serialisation works too
Then maybe I need to add something detecting  if this is svg or html document to apply createElementNs or simple createElement. To be continued

Have you tested in IE? I seem to remember there's an issue with classList and className (which the class applier module uses) in IE that I've had to work round in other projects involving SVG.

No, I have only tested on chrome ... I have to try

I don't know the exact issue you guys are talking around, but I thought I'd chime in with a known-issue in IE11 w/r/t classList:
the classList.toggle method is a bit incomplete in IE. It doesn't take a second argument which will force toggling on/off based on whether or not a truthy value is passed to it (source), so you have to use a combination of classList.add and classList.remove instead.

This actualy only works on firefox & chrome.
I am distraught.

@parisni It may be fixable. I'll get back to you.

I have it working in IE 11. The issue, which I've seen before, is that classList doesn't exist and className has another meaning for SVG elements in IE, so Rangy's addClass, hasClass and removeClass methods don't work. I've ported some more careful implementations of these from another project of mine and got instant success. I'll think about how to integrate this properly.
In the meantime, here is a patched class applier file:
https://gist.github.com/timdown/d9e753c61680ec566e50

Good news ! Even if  only works on IE11
I will try it  on monday.
Anyway thanks for helping

Works on IE 9 as well.

Hello Tim,
Well I have tested it a little (replaced the classapplier.js you give there https://gist.github.com/timdown/d9e753c61680ec566e50)
Some remarks with the patched version :
What works :

Highlight works on SVG (with elementTagName:"tspan") (I only found a IE8 computer, still waiting to test on later version)
Highlight works on html
serialisation module works on svg too

What does not work :

Highlight does not work on other stuff like html div h1 , and other html element. The text choosen disapears. (actually when I inspect the DOM, the span is an svgElement and not a htmlElement)
Removing highlight on svg does not work. Is there a solution ?

Surely I am mis-using your library
Thanks by advance

Have you got a demo page so I can see exactly what you're trying to do?

Everything works as expected for me with the latest release.

I an facing the same issue, I have a page which contains both HTML elements as well as some Svg elements now the library is able to parse through the HTML elements but it is making the SVG Text to disappear .
Example:
Say I have a text "Hello world" in one of the Html Element and in the SVG Text element I have a Tspan element which contains the text as "Hello Hello" , now if i Search the letter 'H' it is getting highlighted in the HTML element but it is getting disappeared in the SVG element it shows "ello ello"
Is this Problem/Issue is solved by you or still pending? , I am using your library and its awesome but I am stuck in this ,Please help!
Thank in advance

as far as I remember, this problem is related to navitator. Firefox was running fine, chrome & IE was buggy. Personnaly I mooved on annotatorjs/HTML/pdf2htmlEX and gave up svg.

In firefox also the letter is getting disappeard , so there is no solution for this ?


SelfHostDeployer logs debug regardless of parent process log level

This causes a lot of useless spew inside logs for repositories like Universe (whose log files are currently 50mb+, ~50% of which comes from SelfHostDeployer) and hides more important log messages among it.

Won't fix.

@ryanbrandenburg if you want a fix, please take a look :)


Use cases and thoughts

This is an interesting superset of JSON and I'm curious what use cases you have in mind for it?
I've been exploring ideas around design tokens and generative/automated design to create design systems. One thing which I noticed was that although JSON files appear appealing at first to store configs about a design, they soon become quite limiting when you try to keep things dry. At some point I realised that CSS got a lot of things right when it comes to specifying a design. Seems obvious I know, but with design tokens gaining a lot of traction I'm seeing a few people moving away from specifying styles in CSS and into JSON. Something like the ideas shown in CSSON might possibly work to bridge this gap I've been exploring.
I'd love to hear your thoughts.

Interesting to hear! I'm not 100% sure what I'll use this for but I know I want comments. There are a few different uses I had in mind that could work
1. Use as a JSON superset with comments
The simplest usage would be to write JSON with either more lax syntax (though still strict to CSS) or even just to add comments to existing JSON.
2. Use as CSSON for the extra types
The next use of CSSON I can think of would be when you're writing or working with CSSON in JavaScript, handling type types of things CSSON handles, and working with the CSSON without ever converting it to JSON or anything else
3. As a JSON alternative for CSS tooling to work with
In the JavaScript world, package.json is a de facto standard for JavaScript tooling and bundlers to express their configuration. JSON is fine and could (does) work for configuring CSS tooling, and JSON data can be embedded in CSS syntax…but what if you could simplify all of CSS syntax to a much more limited subset of CSS that only makes sense when used in this JSON-like way. That's kind of the idea that can only be explored by making this.
So for myself, I've only used it so far as #1, thinking in JSON but using a nicer syntax. I haven't yet had a chance to use it in #2 way, 'thinking in CSSON', and I'm really hoping this year as I work on more CSS tooling that I can use CSSON if it makes things easier than embedding information in JSON like #3.

I think your third use case has a lot of potential. I have gone in a somewhat full circle through experimenting with the use of design tokens. In my design system I aspired to moving all key design decisions to a JSON like config. I created my own design token / preprocessor for converting JSON configs to CSS (or any nother language you want). What I found though, was I missed some of the declarative features that CSS offers.
Then I started to look at it from a different point of view, and instead of having a separate config file to store tokens I thought about using CSS to define those tokens. A tool could then be used to extrapolate the design tokens from CSS into JSON for use in other languages or environments. Then I started to play around with mixing CSS with syntax borrowed from JavaScript arrays, objects, spreads etc. When I saw CSSON it reminded me of this. I only explored this conceptually and haven't since had chance to think about much more. I've briefly had similar ideas to you that maybe you could create a subset of CSS but I wonder if some meta data might be needed to be included with the outputted JSON so it could be interpreted in reverse.
I had some mockups of combining JS like arrays and objects with CSS I can share when I get chance.
I will be keen to see what other things you try with this.


Running Tredly-host on virtual box using Wifi adapter does not work

Currently it is not possible to run Tredly locally when the host machine is using a Wifi network adapter.

Virtualbox has a problem where WIFI adapters cannot be placed into promiscuous mode. This affects Tredly's ability to bridge traffic between the local public LAN and the bridge0 (public) interface. As a result of this, containers with public IP addresses running on WIFI will not work.
This is not an issue for ethernet cable connected Virtualbox VMs. Note that cable connected VMs require the bridged adapter to have promiscuous mode "Allow All" enabled within Virtualbox.

Moved to https://github.com/tredly/tredly/issues/41


Fix relative imports in //BUILD.api

go_proto_library(
    name = "istio/config/v1",
    imports = [
        "../../external/com_github_google_protobuf/src"

prior comments:
geeknoid: Definitely not the right way to do this. I think the importmap feature is what you need here.
douglas-reid: importmap isn't needed for "well-known" protos. but you do need to specify where to find the sources for imports.
geeknoid: This can't be the right way to find these files. This is assuming the structure of the blaze output directories.

It most definitely exploits knowledge of bazel's build structure to accomplish its goal. I'll take another look at some point, but I believe when setting this up I tried the "obvious" workarounds and this was the only way that seemed to work.

BTW, there is a PR that is out (and has been for awhile) to the pubref repo that would fix this issue. Perhaps we should start voting for its inclusion.

How are we doing on this front? Any chance this will be addressed in 0.3? If not, let's just move the item to a different milestone.

no changes recently. although, any changes to the repo structure for the project may alter the impact of this issue.


Switching to using an Express Router

... rather than an Express app.
That's in order to be less confusing since we are really only routing a sub-path and there is already an express app that is ran somewhere by Cloud Functions.

cc @katowulf :)

Nice! 🚀🚀🚀


NOISSUE - Fix hardcoded env var values

Codecov Report

Merging #1283 (c99105b) into master (f1aa32d) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #1283   +/-   ##
=======================================
  Coverage   67.52%   67.52%
=======================================
  Files         108      108
  Lines        7316     7316
=======================================
  Hits         4940     4940
  Misses       1936     1936
  Partials      440      440

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 f1aa32d...c99105b. Read the comment docs.


Update Rust Analyzer to 2023-05-15

Heya, the 2023-01-30 version of rust analyzer isn't able to expand proc macros.
I've updated the rust-analyzer tag, but haven't gone through all of the settings diff -- I'm not sure how to update sublime-package.json (do you copy all of the RA properties as is?).
Sublime also began showing an error message when you code complete object.method, because RA now sends a triggerParameterHints command. I don't know whether returning True is the right thing to do, but it seems to be, based on:

the plugin docs
sublime no longer showed the error message, and inserts the parameter hints

Thanks for the PR!


Disable grafana external images

Disable grafana external images

Release Note Category

[ ] Feature changes/additions
[ ] Bug fixes
[ ] Internal Infrastructure Improvements

Release Note Description
Disable grafana external images

For helix-service: !44579

For dotnet-release: !44580

These three PRs should cover everything. I found no other references in my searches.


ARROW-5394: [C++][Benchmark] IsIn and IndexIn benchmark for integer and string types

CI errors seem unrelated

Not too proficient with git so hopefully, I rebased correctly.  Added changes as you recommended.

Ok, it seems the git situation is still a bit messed up, I'll fix it up :-)


fix: defining of isOverflowing may be not presize.

Hi @Grsmto , thanks for your awesome scroller!
I had a issue with some deep nesting offsets. Particularly I had situation in the Storybook (https://github.com/storybookjs/storybook) when vertical scrollbar must be visible, but it wasn’t.
I propose to changed offsetWidth and offsetHeight to clientWidth and clientHeight for more accurate defining of isOverflowing.
You can see the difference in the log:

I'll try to produce a simple example. To be honest, the described behavior looks like a corner case, and definitely needs more investigation.

Okey, I think the problem is that the scrollbarWidth is not considered while determining of this.axis.x.isOverflowing and this.axis.y.isOverflowing. By default scrollbarWidth is 10px, so the real simplebar box width and/or height is 10px large than the visible part (is scrollbars are visible).
Here are the examples:

If the horizontal scrollbar is rendered and you get in the 10px gap the element will be partially visible, but isOverflowing will be false and scrolling will be impossible.
https://jsfiddle.net/fw0z3p5L/

If the horizontal scrollbar is rendered and you overflow the 10px gap, the isOverflowing will be true and vertical scrolling will be possible.
https://jsfiddle.net/f78hv1m0/

simplebar-offset can be overridden manually, and the hidden content part may be respectively larger. Probably it's quite stupid to tune simplebar-offset manually from client code, but it is possible.
https://jsfiddle.net/k8syn5ej/

And here is the case 1 with the simplebar with proposed changes (built).
https://jsfiddle.net/acu174vx/
What do you think?

Thank you very much for your work @MontolioV !
I think we had a very similar logic on the previous major version of the plugin but I don't remember exactly why I removed it :o
I'll give it a try and let you know!

Can you tell me on what browser/os you're working on?

Another request, what would be the best test case you could imagine for this bug?
So taking this page http://grsmto.github.io/simplebar/examples do you think what you did on jsfiddle could be reproductible there so we can have it directly in that page?
FYI it's in packages/simplebar/demo/examples.html

Hey @MontolioV based on your branch I create another one #359 as I found some issues when browsers have a floating scrollbar with scrollbarWidth === 0 (like on mac).
If you could test that out as well and tell me what you think.

Can you tell me on what browser/os you're working on?

Obviously described behavior depends on the native scrollbar size. The previous examples were working on Ubuntu/Firefox.
Here are the examples for Windows/Firefox and Windows/Chrome :
https://jsfiddle.net/gkd5sec0/
https://jsfiddle.net/gkd5sec0/1/
https://jsfiddle.net/gkd5sec0/2/
The first and the last behaves as expected, the middle is the misbehavior due to scrollbar size is not accounted in content size calculations (the gap in ${scrollbarWidth}px).
As for Mac, I haven't got much environment for testing, naturally scrollbarWidth === 0 makes described behavior impossible.

Another request, what would be the best test case you could imagine for this bug?
So taking this page http://grsmto.github.io/simplebar/examples do you think what you did on jsfiddle could be reproductible there so we can have it directly in that page?
FYI it's in packages/simplebar/demo/examples.html

I won't be able to write code next 2 weeks, but when I come back again I'll provide appropriate tests.

Closing since I think this should be fixed (hopefully) in latest version. Thanks again @MontolioV for your help.


Add indents to every line in the snippet.

Fixes #2242.
Adds the correct indent level to every line in a snippet.
Is there any edge cases I'm missing where this could fall apart?

@CrossR I think if the snippets are subdivided by line then adding an indent should be fine worst case a line might wrap because of indentation but I dont think anything would blow up, also from the indent lines plugin Im pretty sure detect indent handles empty lines fine as well

Just gave this an actual test (vs just a visual test of the lines) and realised the way I was doing it wasn't updating the placeholders, so tabbing through left you in the old positions.
I'm pushing up a change for that now, that fixes it on my end.

Unit tests added now, is it worth adding some for the tabbing through placeholders? Technically I didn't actually change any of that, since the stuff I've added is all done before that.

Unit tests added now, is it worth adding some for the tabbing through placeholders? Technically I didn't actually change any of that, since the stuff I've added is all done before that.

This is great! Just glad we have the indentation behavior covered. I think if we find bugs with the placeholder behavior we could add some additional ones to cover it, at that time.


async forEach breaks when items exceed 2050 in an array.

I wanted to asynchronously loop through 10000 items. It broke. I kept on decreasing the items until I reached 2050. It runs successfully when items are <=2050 but not >2050.
It showed me this:
Error: at next (...\node_modules\async-foreach\lib\foreach.js:46:23)
I was unable to read the complete error as the console had an overflow of this error.
It kept repeating the same line over and over...
Though when I removed the this.async line, it ran perfectly.

Sounds like a memory overflow


Confused about the sample_cuboids constraints

Hi, thanks for your work! Helps a lot!
I have a question about the constrains in sample_cuboids
https://github.com/MCG-NJU/MOC-Detector/blob/686b26e210894099010d16a2753bd505704c945f/src/ACT_utils/ACT_aug.py#L128-L142
In the above codes, ious is the ious between the sampled cuboid and the gt tubes. And the constrains are:

min_jaccard_overlap: I thought it means all ious shoud be larger than min_jaccard_overlap, aka ious.min() >= constraints['min_jaccard_overlap']. However, in the above code ious.max() >= constraints['min_jaccard_overlap'], which means at least one gt tube has iou > min_jaccard_overlap

max_jaccard_overlap: I thought it means all ious should be smaller than max_jaccard_overlap, aka ious.max() <= constraints['max_jaccard_overlap']. However, in the above code ious.min() >= constraints['max_jaccard_overlap'], which means all ious should be larger than max_jaccard_overlap

Could you please explain these constrains?

Hi, this part of codes are provided by ACT.
In my opinion, min_jaccard_overlap is a lower limit condition which means at least one GT got matched. On the other hand, max_jaccard_overlap restricts all GT should be taken into account.

Got it, thanks for clarification.


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.

OPS Build status updates of commit 668f38c:
:clock10: Preparing: average preparing time is 5 min(s) 55 sec(s)

OPS Build status updates of commit 668f38c:
:clock10: Incremental building: average incremental building time is 187 min(s) 34 sec(s)

OPS Build status updates of commit 668f38c:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs-ref-autogen/azure-datalake-store/azure.datalake.store.lib.DatalakeRESTInterface.yml
:white_check_mark:Succeeded
View (azure-python)

docs-ref-autogen/msrest/msrest.serialization.Model.yml
:white_check_mark:Succeeded
View (azure-python)

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.

OPS Build status updates of commit ea6f1e0:
:clock10: Preparing: average preparing time is 5 min(s) 54 sec(s)

OPS Build status updates of commit ea6f1e0:
:clock10: Incremental building: average incremental building time is 187 min(s) 39 sec(s)

OPS Build status updates of commit ea6f1e0:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs-ref-autogen/azure-datalake-store/azure.datalake.store.lib.DatalakeRESTInterface.yml
:white_check_mark:Succeeded
View (azure-python)

docs-ref-autogen/msrest/msrest.polling.async_poller.AsyncNoPolling.yml
:white_check_mark:Succeeded

docs-ref-autogen/msrest/msrest.polling.async_poller.AsyncPollingMethod.yml
:white_check_mark:Succeeded

docs-ref-autogen/msrest/msrest.polling.async_poller.yml
:white_check_mark:Succeeded

docs-ref-autogen/msrest/msrest.polling.yml
:white_check_mark:Succeeded
View (azure-python)

docs-ref-autogen/msrest/msrest.serialization.Model.yml
:white_check_mark:Succeeded
View (azure-python)

docs-ref-autogen/toc.yml
:white_check_mark:Succeeded
View (azure-python)

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.

OPS Build status updates of commit 0c19161:
:clock10: Preparing: average preparing time is 5 min(s) 55 sec(s)

OPS Build status updates of commit 0c19161:
:clock10: Incremental building: average incremental building time is 187 min(s) 45 sec(s)

OPS Build status updates of commit 0c19161:
:clock10: Preparing: average preparing time is 5 min(s) 55 sec(s)

OPS Build status updates of commit 0c19161:
:clock10: Incremental building: average incremental building time is 187 min(s) 45 sec(s)

OPS Build status updates of commit 0c19161:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs-ref-autogen/azure-datalake-store/azure.datalake.store.lib.DatalakeRESTInterface.yml
:white_check_mark:Succeeded
View (azure-python)

docs-ref-autogen/msrest/msrest.polling.async_poller.AsyncNoPolling.yml
:white_check_mark:Succeeded

docs-ref-autogen/msrest/msrest.polling.async_poller.AsyncPollingMethod.yml
:white_check_mark:Succeeded

docs-ref-autogen/msrest/msrest.polling.async_poller.yml
:white_check_mark:Succeeded

docs-ref-autogen/msrest/msrest.polling.yml
:white_check_mark:Succeeded
View (azure-python)

docs-ref-autogen/msrest/msrest.serialization.Model.yml
:white_check_mark:Succeeded
View (azure-python)

docs-ref-autogen/toc.yml
:white_check_mark:Succeeded
View (azure-python)

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.


READ ME

(To be added on about me section)
Team Name: Cyber Shield
Team Members: Josh Constantino, Alexander Jones, Joshua Rio, Kristine Rivera, Hangbo Zhang
Team Member Contribution: (lets create tasks on github?)
Repository: https://github.com/cybershield427/OpenTab


How to Cite?

Hey,
just a general question:
Is there a preferred way to cite this tool?
I'm using it in my research projects and want to reference it in my paper :)
Thanks in advance and regards

I'll keep this open until we published the tech report and included the citation in the README

What I would do is to write a 4 pages technical description and put it on arxiv.org

What I would do is to write a 4 pages technical description and put it on arxiv.org

We are working on a little bit more detailed description, we are planning to release it end of April.

Any update to this? :)

Any update to this? :)

The paper we submitted is currently in review.

In the meantime we could implement this: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-citation-files

We decided to publish a quick write-up of the CPG on arXiv. https://arxiv.org/abs/2203.08424
More related papers are incoming and in review.


Option to toggle html editor

What I'm trying to achieve
Medium editor is nice but it has only very limited set of features.
My use-case is to have complex product pages with images, etc. so I typically need to add classes to some elements, etc.
Describe a proposed solution
For more complex pages, it would be good to implement Toggle html editor button in dashboard to switch into direct HTML editing mode.
It should be simple but I am not very familiar with Javascript to implement this correctly.

Our intention was to keep the editor simple just as Medium does and provide features that work in most cases. I understand however that some people may want to use it to build more complex pages. My only concern is what to do with the HTML sanitization we have in the backend (see ALLOWED_TAGS in settings.py). We would have to either extend it to allow for more common tags (which sounds a bit cumbersome) or exclude those that are forbidden, like scripts or iframes.

Scripts are useful as well, for showing some dynamic components like maps.
So that's quite difficult to know what we should allow or not. Maybe we could have a permission that allows "advanced tags/ content" in the rich text editor, and if someone that doesn't have that permission tries to edit/ create a page with a script tag for example, would get an error (no sanitization, otherwise they break the page content).

Or enhance medium editor by developing plugin that would allow setting classes on objects + implement couple of extensions:

http://linkesch.com/medium-editor-insert-plugin/
https://github.com/yabwe/medium-editor-tables

Maybe some more from the list https://github.com/yabwe/medium-editor/wiki/Extensions-Plugins

What would be perfect in the case of a e-commerce website would be a wysiwyg editor with grid layout to allow users to build easily a user friendly and responsible page. Which would allow users to be able to make great product show cases for the customers.
A good example is mailjet's editor: https://www.mailjet.com/feature/passport/
There is also wix that some people use, which is also achieving a responsive design and fully customization page (but seriously not to use, it's filled with position: absolute and pages are taking 5 minutes to load so much the generated pages are heavy).
I can't get my hands onto a wysiwyg editor allowing users to use grids as layout.

That would be great :-)
Anyway for now, having just this simple option would be sufficient. There's currently no way how to customize style in pages.
Does anyone know about easy way how to implement this toggle?

Is anyone able to help me with implementing html editor toggle for Medium Editor?
I suppose it should be trivial, javascript only thing.

@fpytloun Have you looked for a solution in the medium-editor repository? I'm not sure, but maybe there is such option in the configuration. I would also search for an answer in their issues.

This is sort of possible to do without massive amount of editing.
First edit /saleor/static/dashboard/js/components/editor.js file to add the following to the toolbar buttons object:
      {         name: 'html',         aria: pgettext('Rich text editor option', 'HTML')       },
Then edit /saleor/dashboard/products/forms.py file to strip out the cleaning methods of the RichTextField e.g:
`class RichTextField(forms.CharField):
"""A field for rich text editor, providing backend sanitization."""
widget = RichTextEditorWidget

def __init__(self, *args, **kwargs):
    super().__init__(*args, **kwargs)
    self.help_text = pgettext_lazy(
        'Help text in rich-text editor field',
        'Select text to enable text-formatting tools.')

def to_python(self, value):
    # tags = settings.ALLOWED_TAGS or bleach.ALLOWED_TAGS
    # attributes = settings.ALLOWED_ATTRIBUTES or bleach.ALLOWED_ATTRIBUTES
    # styles = settings.ALLOWED_STYLES or bleach.ALLOWED_STYLES
    value = super().to_python(value)
    # value = bleach.clean(
    #     value, tags=tags, attributes=attributes, styles=styles)
    return value

`
Making these changes will allow admins to write html, highlight it and then click a HTML button in the editor to turn it into proper HTML. A few things to be aware of:

This is potentially dangerous! The code is stripped of tags to ensure that staff members don't add code that could cause problems, such as changing their account to be a super-user, if you don't 100% trust your users then don't make this change.
The remove formatting can be a little buggy so the best way to write / update any text added like this is to write it as HTML in an external editor then copy and paste it into Saleor before hitting the HTML button

@petedermott Thank you! It's not exactly a html toggle implementation but works as a workaround for now :-)

You could also add a settings key EDITOR_ALLOW_UNTRUSTED_CODE or something like that. So you don't end up with failing tests.

There are two parts to it: server-side filtering of tags and the editor. The filtering is fine, however the editor is pretty much unusable for me. As soon as it gets to placing images for example it gets pretty much impossible to design a good page. There are better alternatives out there, but a button to switch to pure HTML would help a lot!


update to latest version v1.0.0

@lilyclemson I am curious what triggered the recent PR - have you been actively working on it, or it was checking in some long standing changes.
@stuartort possibly something that could help documentation - e.g. generate documentation for the standard library or ML.

@lilyclemson I am curious what triggered the recent PR - have you been actively working on it, or it was checking in some long standing changes. @stuartort possibly something that could help documentation - e.g. generate documentation for the standard library or ML.

@ghalliday  Stu @stuartort  mentioned that you were experiencing dependent bots error and the this repo is one of the cause. So I updated the code base with the branch that hasn’t had dependent bot error since pushed to the remote. I forwarded the email thread about our convo around this. If it's no long needed, I can close this PR accordingly. Please feel free to let me know if any concerns.


F-Droid: Fastlane & Badge

The app is now live on F-Droid so it must be done. The original screenshots are not removed.
cc. @IzzySoft might wanna remove the app from your repo
closes #11
closes #35

Thanks for the contribution

Marked for removal from my repo as requested. My dupe-checker did not yet suggest it (probably my repo currently has a newer version than F-Droid), so I marked the date; I usually give it an overlap of 7..10 days so people have time to adjust – so it would be due next week (was added to F-Droid 2021-07-05).

@IzzySoft uh... it seems like fdroid checkupdates bot is not picking up tag 2.2

No, that tag will be ignored. Because.

My Bad!
@IzzySoft Thanks for pointing it out.
Fixed it! Hope it will work now.

Happens more often than you think :wink: Thanks!


[BUG-238] Add prop to hide all day overlay

Another PR due to wrong base branch. I have applied changes to hc_master branch which is seems to be pointed by hc-web.

@manishsingh08 I'm merging that PR, it's exactly that same as #13 only different base branch (hc_master instead of master)


Use TapTweakHash::from_key_and_tweak() method in computing tweak for UntweakedPublicKey

Quick follow up PR to #691 using a method from #677.
Changes

Updated UntweakedPublicKey::tap_tweak(...) to use TapTweakHash::from_key_and_tweak(...)

Needs rebase

rebased

I have tried to rebase but noticed that in #707 , the merkle_root parameter for Address::p2tr has been updated to take in Option<&TapBranchHash> but in TapTweakHash::from_key_and_tweak() it is Option<TapBranchHash> without the reference as it's parameter.
Should TapTweakHash::from_key_and_tweak() be updated and changes reflected accross taproot.rs (a couple of spots need to be updated to use reference) or is this out of the scope of the PR?

Generally I think we should take Option<TapBranchHash> and pass it by value. First, it's small enough and meets our agreement on pass-by-value we discussed recently; secondly it will be passed as Some(hash) and not variable to this API, so it does not make sense to force users to write Some(&hash) instead

@nlanson: https://github.com/rust-bitcoin/rust-bitcoin/pull/695#pullrequestreview-815310088

Updated the following methods to take Option<TapBranchHash> as value instead of reference:

TapTweak::tap_tweak(...)
Address::p2tr(...)

ACK 5b21a9cb1fa818607d18a5654cd18a11efaaab4b
(sorry for forgetting to add this into approve message - IDK if relevant)


Black background in Windows Terminal when using Cmd'er

When using Cmd'er inside windows terminal I get black bars under ther default text, which looks annoying.
I have been using Windows Terminal with Cmd'er since November 2020, and this is the first time I have had the issue.
The two lines at the bottom is how the black bar looks when I open the terminal - while resizing the terminal makes the whole line black. The issue is not present in any other terminal.

I have followed this Medium-Blogpost to setup Cmd'er and Windows Terminal so it should be fairly simply to follow.
Lastly I run this on a Surface Pro running windows 10 pro version 19041.867

Right, so, this happens when an application explicitly requests the black background color. On Consoles that existed before Windows Terminal, this would automatically resolve to "the DEFAULT background color". Unfortunately, since we have acrylic or an image or some other background color, we had to make it possible for applications to differentiate "background" from "black". Applications are generally well-behaved, and this works perfectly fine with well-behaved applications.
Do you happen to know the prompt settings for the default cmder/clink setup?

Sorry, I don't know the promt-settings for the default cmder setup since I'm not completely sure where to find the prompt setting.. :)
It is possible that it is a cmder issue more than a windows terminal issue - just wanted to let it be known since I have Cmd'er/WT combo on my workpc without the black box. (Though not near the workpc due to easter).

ALRIGHT, Found it!
https://github.com/cmderdev/cmder/blob/c34eb735556d5f2ccf59b042d17d5f2880414356/vendor/clink.lua#L50
This is in the source for cmder. It comes with a "prompt hook" that prints some raw control sequences. Many of them are used to set the color (\x1b[...m).
The one that is using 40 (\x1b[1;32;40m) is requesting the black boxes, explicitly. 40 is the graphical representation code for "background in ANSI color 0 (which is typically black)".
Might have to mark this one external :smile:
I will file the bug on cmder, as I have the most context here. We had to file a similar bug on PowerShell, after all!

Thank you for the amazing explanation (Way more than I expected when I posted)! Have a good day!

I've moved this upstream to /dup https://github.com/cmderdev/cmder/issues/2516
Thanks for the report!


feat(pro): display all data in beneficiary page

:tada: This PR is included in version 1.5.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Add blueprint generator dependency to package.json

Closes #76.
There may be a better way to retrieve blueprint generator version, feel free to comment if so.

Please make sure the below checklist is followed for Pull Requests.

[x] Travis tests are green

[x] Tests are added where necessary

[x] Documentation is added/updated where necessary

[x] Coding Rules & Commit Guidelines as per our CONTRIBUTING.md document are followed

LGTM, let's wait Travis


Bubble theme: Invisible cover position value in "more info"-dialog

Describe the bug
If you open the "more info"-dialog for any cover and use the slider to change the cover position, the value for new position is not visible. This happens if Bubble theme is set as default theme.
To Reproduce
Steps to reproduce the behavior:

Set Bubble theme as default theme in profile
Open the "more info"-dialog of any cover
Change cover position by dragging the slider
The value is not visible

Expected behavior
Change font color of position value in more-info dialog
Screenshots
when Bubble theme is set (value not visible)

when default theme is set (value is visible)

Informations (please complete the following information):

OS: iOS 17.5.1 / macOS 14.5
Browser: Safari / Home Assistant app
Bubble Card version: 2.0.1
Home Assistant version: 2024.5.5

Thank you! 🍻

I can reproduce the behaviour and see exact the same thing. It's a theme/bubble-card thing...

Thank you for the feedback guys, I will have to take a look at this but Bubble Card is taking too much of my time 😅


Support "droplet" argument for cf run-task

Very small request here.
What's the user value of this feature request?
Being able to nominate a droplet at task creation time allows the user to avoid potential race condition pitfalls relating to setting the app's "current" droplet.
(See also: what the user value was for adding this possibility to the underlying v3 api at all)
Who is the functionality for?
Likely people who are using cloudfoundry in a fairly automated fashion, with frequent rolling deployments and multiple droplets.
How often will this functionality be used by the user?
Well, we're looking at using it in our pipeline for database migrations so for us it would be run as part of every new deployment.
Who else is affected by the change?
Does this feature cause a breaking change? No.
Is your feature request related to a problem? Please describe.
I think I've probably already described this, but when you have quite a lot of things going on with your app, performing a mutation to it (by setting the "current droplet") is a bit of an unnerving thing to do if you don't necessarily know all the consequences.
Describe the solution you'd like
Probably a --droplet-guid flag for cf run-task.
Describe alternatives you've considered
We're currently using cf curl. It works. But this (really neat) possibility is very undiscoverable because it's not exposed in the cli.

Thank you for your submission. Have added this issue to our backlog. Will get back when we have an update.


Add utility type Registry to the sync module

This type is shared among Mutex and channel for now, but would also be useful for implementing RwLock and Barrier - it'd make the code cleaner and more efficient at the same time!
We can integrate Registry into Mutex and channel in a follow-up PR. It might even be useful for implementing Condvar.
Comparing benchmarks from PR #370...
master branch:
test mutex_contention        ... bench:   3,535,766 ns/iter (+/- 284,716)
test mutex_mimick_contention ... bench:       1,686 ns/iter (+/- 414)
test mutex_no_contention     ... bench:     347,171 ns/iter (+/- 58,254)
test mutex_unused            ... bench:          35 ns/iter (+/- 2)

PR #370:
test mutex_contention        ... bench:   1,943,831 ns/iter (+/- 175,483)
test mutex_mimick_contention ... bench:       1,242 ns/iter (+/- 152)
test mutex_no_contention     ... bench:     261,742 ns/iter (+/- 66,615)
test mutex_unused            ... bench:           0 ns/iter (+/- 0)

This PR:
test mutex_contention        ... bench:   1,430,417 ns/iter (+/- 121,264)
test mutex_mimick_contention ... bench:       1,359 ns/iter (+/- 142)
test mutex_no_contention     ... bench:     277,573 ns/iter (+/- 46,106)
test mutex_unused            ... bench:           3 ns/iter (+/- 0)

@nbdd0121 It would be interesting to see how to consolidate efforts of this PR and PR #370. They're not necessarily in conflict - in fact, they're probably complementary.
This PR factors out the Registry utility that is useful in almost all synchronization primitives, not just Mutex. PR #370 essentially improves on this Registry before it was factored out.

It might even be useful for implementing Condvar.

Condvar is likely just going to be implemented as a thin wrapper around Registry, with wait call also handling unlock and re-lock.
The Registry type is pretty much similar to my WakerListLock type, but with better API design. Most improvements in #370 still applies, such as using linked list, and various techniques used to shorten hot path and de-bloat the generated code. I can surely rebase my PR on top on this.
Some of my concerns:

About NOTIFY_ONE and NOTIFY_ALL, is there any reason for the change? I can't think of a simple case where it is useful without spurious wake ups. If they're concrete cases supporting it over a simple empty flag I'd be glad to hear.
The code have quite a lot SeqCst, which is somehow worrying as their performance isn't ideal on non-TSO, weak memory consistency model systems.
Spinlock type is removed. It might be useful to have a copy of it left in sync module to be used by the entire crate, e.g. #286.

I am quite surprised about the performance improvement by this PR. I think mostly it's due changing the type to AtomicBool. I can dig further on the underlying reason.

About NOTIFY_ONE and NOTIFY_ALL, is there any reason for the change? I can't think of a simple case where it is useful without spurious wake ups. If they're concrete cases supporting it over a simple empty flag I'd be glad to hear.

The reason is that empty flag doesn't tell us much. If the list of registered items is not empty, a notify_one() operation will lock the entry list, get the first entry, and wake it. But it's possible that the first entry was already woken up and contains a None. In that case, we've just wasted time locking the entry list.
In other words, a notify_one() operation has work to do only when the list is non-empty and all items are Some. Similarly, a notify_all() operation has work to do only if the list is non-empty and there is at least one Some entry.

The code have quite a lot SeqCst, which is somehow worrying as their performance isn't ideal on non-TSO, weak memory consistency model systems.

Unfortunately, I don't know how to do this more elegantly without SeqCst. Any ideas?

Spinlock type is removed. It might be useful to have a copy of it left in sync module to be used by the entire crate, e.g. #286.

It's not used anywhere anymore, but I have no reservations about keeping it if it is useful.

The reason is that empty flag doesn't tell us much. If the list of registered items is not empty, a notify_one() operation will lock the entry list, get the first entry, and wake it. But it's possible that the first entry was already woken up and contains a None. In that case, we've just wasted time locking the entry list.
In other words, a notify_one() operation has work to do only when the list is non-empty and all items are Some. Similarly, a notify_all() operation has work to do only if the list is non-empty and there is at least one Some entry.

But considering that the item will only be turned into None when they're waken up, and they will either re-register, cancel, or complete in such case, surely most times when we call notify, emptiness usually is a good-enough indicator of whether we need to do any work?
The main reason that I think empty flag is better is that when Registry is switched to use linked list rather than slab, emptiness checking is essentially free and requires no special book-keeping to manage.

Unfortunately, I don't know how to do this more elegantly without SeqCst. Any ideas?

You're right. I am being naive originally thinking some sort of Acq/Rel would be sufficient. I ended up spending a few hours reading through relevant standards and research papers, and realized that this cannot be done without protecting the read in some sort of lock. The fundamental reason is that there are no easy way to turn thread-local sequenced-before relation to inter-thread happens before other than using sequential consistency.
I think the current Mutex's approach of having 1 bit indicating if anything has been blocked is much easier to reason about, as everything is protected by locks.

I don't think it's a Map. It's more like a set (or a list, if backed by a linked list rather than a slab).
I am not convinced by replacing cancel with remove and notify_one. If the waker is never woken up and cancelled, we don't need to wake up anyone.
In general to prefer the old names to the current one. Or maybe we can call the methods park/unpark.

But considering that the item will only be turned into None when they're waken up, and they will either re-register, cancel, or complete in such case, surely most times when we call notify, emptiness usually is a good-enough indicator of whether we need to do any work?

That's true, but I did find some performance benefits under heavy contention where we avoid locking the entry list when there's nothing really to notify.
Although, I think checking if the first entry is turned into None rather than all of them should work just as well as an optimization...

I am not convinced by replacing cancel with remove and notify_one. If the waker is never woken up and cancelled, we don't need to wake up anyone.

You're right, that was an oversight.
Okay, so we need the following methods:

insert(waker)
update(waker, key)
complete(key)
cancel(key)

Do these method names sound okay?
I renamed the type to WakerMap after suggestion by @yoshuawuyts because it's essentially a mapping from usize to Option<Waker>.

Do these method names sound okay?
I renamed the type to WakerMap after suggestion by @yoshuawuyts because it's essentially a mapping from usize to Option. The name Registry is a bit meth because it's so generic, wheres I feel it should contain "waker" somewhere in its name tobe a bit more specific... :)

Vec is also kinda mapping from usize to Option<Waker> as well... The usize is just a handle to locate the waker. So I don't think WakerMap is a good name. Would WakerRegistry be a sensible name?
For the method name I tend to stick with register and reregister, which reflects more information than insert and update, and makes more sense when paired with methods like notify, complete or cancel.

@nbdd0121 API-wise the difference between a "map" and a "list" is that with a list you provide the key, but with a map the key is provided for you:
// Map -- key is generated for you.
fn insert(&mut self, val) -> key;

// List -- you provide the key.
// Operations like `push` are just shorthands on top of this.
fn insert(&mut self, index, val);

In this case the key is generated, which means it's more similar to a HashMap than to a Vec.

@nbdd0121 API-wise the difference between a "map" and a "list" is that with a list you provide the key, but with a map the key is provided for you:
// Map -- key is generated for you.
fn insert(&mut self, val) -> key;

// List -- you provide the key.
// Operations like `push` are just shorthands on top of this.
fn insert(&mut self, index, val);

In this case the key is generated, which means it's more similar to a HashMap than to a Vec.

Not really. A map can never generate a key, because the key is always supplied by the user.
// Map: User must supply the key
fn insert(&mut self, k: K, v: V)

You cannot insert anything to a map without providing a key.
On the other hand, set (or vector and list) can return an iterator upon insertion:
// Set: An iterator is provided to the user.
std::pair<iterator,bool> insert( value_type&& value );

The fact that we use a usize and call it a key does not just turn the whole concept from a Set into a Map. In fact, we're just working around Rust's lifetime constraints which made Rust incapable of representing C++'s iterator safely.

What if we just call it WakerSet?

Can we do another round of review and merge if this looks good?
@nbdd0121 I still want us to have your optimizations on top of this PR :) I'm also particularly interested in having a doubly linked list because it allows us to have stronger fairness guarantees than what slab provides (i.e. the first waker to be inserted should be woken first).
In fact, it'd be great if we just removed the slab crate as a dependency and replaced it with doubly-linked lists everywhere :)

MutexGuard::drop uses AcqRel now, but it probably needs to be SeqCst. Acquire can only establish an inter-thread happens-before order if we use its value to make decisions. The current code works because swap(false, SeqCst) and swap(false, AcqRel) compiles to the same sequence on x64.
This leads to a broader issue. Currently it's very difficult to use WakerSet correctly, due to NOTIFY_ONE and NOTIFY_ALL fields. Maybe we still want the old approach, to store the BLOCKED bits inside the mutex, and let WakerSet logically be strictly identical to a Mutex<Inner>.

I switched to SeqCst orderings now, that suggestion was on spot. Thank you for pointing the issue out! I also switched to SeqCst in the try_lock() method to be on the safe side. We similarly use SeqCst in try_recv() and try_send() inside channels.
@nbdd0121 I agree the previous approach with BLOCKED is easier to follow on its own, but don't think the one in this PR is significantly worse. In fact, it looks exactly the same as in channels and this approach is unifying the same pattern across many synchronization primitives.
Here are latest benchmarks. PR #370 :
test contention    ... bench:   1,927,725 ns/iter (+/- 248,164)
test create        ... bench:           0 ns/iter (+/- 0)
test no_contention ... bench:     243,104 ns/iter (+/- 50,678)

This PR:
test contention    ... bench:   1,286,675 ns/iter (+/- 153,616)
test create        ... bench:           3 ns/iter (+/- 0)
test no_contention ... bench:     251,007 ns/iter (+/- 173,492)

The difference in the highly contended cases is noticeable, at the expense of a smaller speed bump in uncontended cases, even with so many SeqCst orderings.


Add "floor" and "link" options to Contact page

add stairs icon to icon font first

Add website icon - I will get you that

Also add a "link" icon for contact URLs

Added icons to Visual -> Icons -> Contact
I also changed the floor icon to a counter image to be more clear that that is the floor they take for an in-person interaction. And to better clarify that they don't have to take the stairs.


chore: update dependencies

Description

Update craco to latest version 7.0.0 and remove the alpha pre-release version.
Merge dependent bot Pull Request - https://github.com/appsmithorg/appsmith/pull/18141
Merge dependent bot Pull Request  - https://github.com/appsmithorg/appsmith/pull/18183
Remove the following unused dependencies -

caniuse-lite
emoji-mart
flow-bin
instantsearch.js
json-fn
lodash-move
react-base-table
react-infinite-scroller
react-mentions
react-transition-group

Fixes #18260

if no issue exists, please create an issue and ask the maintainers about this first

Type of change

New feature (non-breaking change which adds functionality)

How Has This Been Tested?

Manual

Test Plan

Add Testsmith test cases links that relate to this PR

Issues raised during DP testing

Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR)

Checklist:
Dev activity

[ ] My code follows the style guidelines of this project
[ ] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes
[ ] PR is being merged under a feature flag

QA activity:

[ ] Test plan has been approved by relevant developers
[ ] Test plan has been peer reviewed by QA
[ ] Cypress test cases have been added and approved by either SDET or manual QA
[ ] Organized project review call with relevant stakeholders after Round 1/2 of QA
[ ] Added Test Plan Approved label after reveiwing all Cypress test

/ok-to-test sha=bc761d0

/ok-to-test sha=03a8b53


chore(master): Release 0.16.2

:robot: I have created a release beep boop
aztec-packages: 0.16.2
0.16.2 (2023-12-05)
Features

Add tree snapshots (#3468) (7a86bb3)
AVM: First version for mini AVM (ADD, RETURN, CALLDATACOPY) (#3439) (b3af146)
Circuit optimized indexed tree batch insertion (#3367) (187d2f7)
Devnet (#3473) (97c40c2)
docs: Add simple private voting tutorial   (#3402) (a6e0352)
docs: Document slow update tree (#3416) (8e9f103)
Flavor refactor, reduce duplication (#3407) (8d6b013)
Inclusion and non-inclusion proofs experiment (#3255) (b911e65), closes #2572 #2584
New Poseidon2 circuit builder gates (#3346) (91cb369)
New Poseidon2 relations (#3406) (14b9736)
Pull latest noir for brillig optimizations (#3464) (d356bac)
Refactor StandardIndexedTree for abstract leaves and preimages and optimized it (#3530) (63b9cdc)
Removing historical roots from circuits (#3544) (9f682cb)
Seperate pil files for sub machines (#3454) (d09d6f5)
Throw compile time error if contract has too many fns (#3536) (ad66ad0)
Use tree snapshots in aztec-node/pxe/oracles (#3504) (6e40427)
Yellow paper cross-chain communication (#3477) (d51df8c)

Bug Fixes

Check version, chainid and sender for cross-chain l1 to l2 msgs (#3457) (d251703)
ci: Add DEPLOY_TAG in fork log group (#3510) (f021041)
ci: Check if l1 contracts img has been deployed (#3531) (ac1f03c)
ci: Comment out LB listeners (for now) (#3519) (640aabc)
ci: Count for bootnode discovery service (#3517) (2a38788)
ci: Define REPOSITORY in deploy_l1_contracts (#3514) (b246d1b)
ci: Don't deploy to npm on master merge (#3502) (a138860)
ci: Env vars for deploying l1-contracts (#3513) (27106b2)
ci: Export FORK_API_KEY from setup_env (#3512) (7e81e2c)
ci: Fix docker architecture for devnet packages (#3505) (66d0287)
ci: Fix faucet vars + don't deploy contracts from node (#3553) (c7176f6)
ci: L1 contracts directories (#3545) (63dd0c8)
ci: Login to ecr to fetch contracts image (#3538) (b033538)
ci: Remove unused ADDRESS vars & export private key vars (#3520) (d889359)
ci: Set default value for $TO_TAINT (#3508) (8b6688a)
ci: Terraform listener resources (#3534) (c3b9cce)
ci: Terraform_deploy for devnet (#3516) (ba3803e)
ci: Tf variable references & formatting(#3522) (d37cf52)
Disable e2e-slow-tree (#3459) (5927103)
docs: Update package name of aztec-cli (#3474) (98d7ba0)
Double slash in deployed faucet routes (#3555) (6c704a5)
Faucet lb_listener priority (#3554) (3f56dd7)
Handling low_nullifier.next_value equal to 0 (#3562) (c800502), closes #3550
Remove x86_64 form l1-contracts img tag (#3549) (6828f1a)
Throw error if fn sig has whitespaces (#3509) (7671063), closes #3055

Miscellaneous

(yellow paper) public-vm section of yellow paper (#3493) (8ff3780)
Add mermaid diagram support (#3499) (537d552)
Add yellow paper build check to CI (#3490) (3ebd2f2)
avm: Enable AVM unit tests in CI (#3463) (051dda9), closes #3461
bb: Pointer_view to reference-based get_all (#3495) (50d7327)
bb: Reuse entities from GoblinUltra in GoblinUltraRecursive (#3521) (8259636)
Build the acir test vectors as part of CI. (#3447) (1a2d1f8)
Containers reduced to ~100MB total. ~30s installation. (#3487) (b49cef2)
docs: Fix broken Noir stdlib link (#3496) (787d59a)
Field-agnostic and reusable transcript (#3433) (d78775a)
Fix broken link in txs in yellow paper (#3484) (798565d)
Fix yellow paper build error (32881a4)
Fixed typo in build system (#3501) (3a80ac2)
Increase functions per contract from 16 to 32 (#3503) (ebdeea3)
Naming fixes (#3476) (1db30bf)
Optimise bb.js package size and sandox/cli dockerfiles to unbloat final containers. (#3462) (cb3db5d)
Pin node version in docker base images and bump nvmrc (#3537) (5d3895a)
Recursive verifier updates (#3452) (dbb4a12)
Refactor WitnessEntities to be able to derive WitnessCommitments from it (#3479) (9c9b561)
Remove temporary logging (#3466) (8c8387b)
Transcript handled through shared_ptr (#3434) (30fca33)
Typo fixes (#3488) (d9a44dc)
yellow_paper: Public<>private messaging (#3491) (6ecc406)

Documentation

Add transaction section to yellow paper (#3418) (44bf30b)
Apply comments from Jan on contracts (#3539) (e351873)
Fees update in yellow paper (#3486) (a8b2608)
First go at generated AVM instruction set doc (#3469) (8cc54a4)
Further update to the yellow paper (#3542) (751bb6a)
Yellow paper updates (#3478) (11f754d)
Yellow paper updates for private message delivery (#3472) (6ba9e18)
yellow-paper: Sync, enqueued, and static calls (#3494) (00835c6), closes #3108
yellowpaper: Instruction set updates and fixes (#3515) (bfb61dd)

barretenberg.js: 0.16.2
0.16.2 (2023-12-05)
Miscellaneous

Optimise bb.js package size and sandox/cli dockerfiles to unbloat final containers. (#3462) (cb3db5d)
Pin node version in docker base images and bump nvmrc (#3537) (5d3895a)

barretenberg: 0.16.2
0.16.2 (2023-12-05)
Features

AVM: First version for mini AVM (ADD, RETURN, CALLDATACOPY) (#3439) (b3af146)
Flavor refactor, reduce duplication (#3407) (8d6b013)
New Poseidon2 circuit builder gates (#3346) (91cb369)
New Poseidon2 relations (#3406) (14b9736)
Pull latest noir for brillig optimizations (#3464) (d356bac)
Seperate pil files for sub machines (#3454) (d09d6f5)

Miscellaneous

avm: Enable AVM unit tests in CI (#3463) (051dda9), closes #3461
bb: Pointer_view to reference-based get_all (#3495) (50d7327)
bb: Reuse entities from GoblinUltra in GoblinUltraRecursive (#3521) (8259636)
Build the acir test vectors as part of CI. (#3447) (1a2d1f8)
Field-agnostic and reusable transcript (#3433) (d78775a)
Optimise bb.js package size and sandox/cli dockerfiles to unbloat final containers. (#3462) (cb3db5d)
Pin node version in docker base images and bump nvmrc (#3537) (5d3895a)
Recursive verifier updates (#3452) (dbb4a12)
Refactor WitnessEntities to be able to derive WitnessCommitments from it (#3479) (9c9b561)
Transcript handled through shared_ptr (#3434) (30fca33)
Typo fixes (#3488) (d9a44dc)

This PR was generated with Release Please. See documentation.

Benchmark results
No metrics with a significant change found.

Detailed results
All benchmarks are run on txs on the Benchmarking contract on the repository. Each tx consists of a batch call  to create_note and increment_balance, which guarantees that each tx has a private call, a nested private call, a public call, and a nested public call, as well as an emitted private note, an unencrypted log, and public storage read and write.
This benchmark source data is available in JSON format on S3 here.
Values are compared against data from master at commit a6e03527 and shown if the difference exceeds 1%.
L2 block published to L1
Each column represents the number of txs on an L2 block published to L1.

Metric
8 txs
32 txs
128 txs

l1_rollup_calldata_size_in_bytes
45,444
179,588
716,132

l1_rollup_calldata_gas
222,984
868,112
3,448,016

l1_rollup_execution_gas
842,071
3,595,220
22,203,385

l2_block_processing_time_in_ms
2,051 (+1%)
7,794 (-3%)
31,794 (+1%)

note_successful_decrypting_time_in_ms
336
1,017 (-2%)
3,721 (+1%)

note_trial_decrypting_time_in_ms
44.1 (-6%)
128 (+2%)
201 (+2%)

l2_block_building_time_in_ms
25,385
101,348
404,614 (+1%)

l2_block_rollup_simulation_time_in_ms
17,809
71,177 (+1%)
283,114 (+1%)

l2_block_public_tx_process_time_in_ms
7,528 (-1%)
30,020
120,930

L2 chain processing
Each column represents the number of blocks on the L2 chain where each block has 16 txs.

Metric
5 blocks
10 blocks

node_history_sync_time_in_ms
22,605 (-1%)
44,187 (-1%)

note_history_successful_decrypting_time_in_ms
2,324 (-1%)
4,522 (-2%)

note_history_trial_decrypting_time_in_ms
161 (-28%)
229 (+1%)

node_database_size_in_bytes
3,317,538
3,662,534

pxe_database_size_in_bytes
29,748
59,307

Circuits stats
Stats on running time and I/O sizes collected for every circuit run across all benchmarks.

Circuit
circuit_simulation_time_in_ms
circuit_input_size_in_bytes
circuit_output_size_in_bytes

private-kernel-init
400
43,077
20,441

private-kernel-ordering
127 (+1%)
25,833
9,689

base-rollup
3,196 (+1%)
659,500
873

root-rollup
95.2 (+3%)
4,072
1,097

private-kernel-inner
827
64,484
20,441

public-kernel-private-input
418
25,203
20,441

public-kernel-non-first-iteration
413
25,245
20,441

merge-rollup
10.9 (+1%)
2,592
873

Miscellaneous
Transaction sizes based on how many contracts are deployed in the tx.

Metric
0 deployed contracts
1 deployed contracts

tx_size_in_bytes
10,323
29,083

:robot: Release is at https://github.com/AztecProtocol/aztec-packages/releases/tag/barretenberg.js-v0.16.2 :sunflower:

:robot: Release is at https://github.com/AztecProtocol/aztec-packages/releases/tag/barretenberg-v0.16.2 :sunflower:


Surprising behavior of IORING_OP_TIMEOUT with duplicated user_data (timers).

Scheduling two timeouts with the same user_data and zero count is a bit strange.
I'd expect to either reject the second (if the first one is not expired yet) or override, while it schedules both. Is this intended?
The IORING_OP_TIMEOUT_REMOVE identifies the timeouts by the user_data value, so this could be interpreted in a way that it should be unique. Should it be documented somehow? I assume the easiest way is to say it's implementation specific and may be changed in the future.
Meanwhile it would be great to have a straightforward way to override the timeout forcefully. The IORING_OP_TIMEOUT_REMOVE + IORING_TIMEOUT_UPDATE is racy in a sense that it may fail just because of the original timer has expired. So in my usecase I got to enqueue two operations, IORING_OP_TIMEOUT_REMOVE + IORING_OP_TIMEOUT.

The IORING_OP_TIMEOUT_REMOVE identifies the timeouts by the user_data value, so this could be interpreted in a way that it should be unique. Should it be documented somehow? I assume the easiest way is to say it's implementation specific and may be changed in the future.

user_data is never required to be unique but often reasonably expected to be so. Just as in your case, you can queue up two such timeouts and IORING_OP_TIMEOUT_REMOVE would remove a random one of them. However, apps most likely would want to have two different user_data to distinguish between requests.

Meanwhile it would be great to have a straightforward way to override the timeout forcefully. The IORING_OP_TIMEOUT_REMOVE + IORING_TIMEOUT_UPDATE is racy in a sense that it may fail just because of the original timer has expired.

Which sounds absolutely fine to me, you'd need to rearm the timeout then.

So in my usecase I got to enqueue two operations, IORING_OP_TIMEOUT_REMOVE + IORING_OP_TIMEOUT.

Note, that if you need a periodic timeout, you can use the multishot mode. i.e. you submit a single request and it posts a CQE every N [u,n]sec until you cancel it.

Thanks for the prompt answer.

user_data is never required to be unique but often reasonably expected to be so. Just as in your case, you can queue up two such timeouts and IORING_OP_TIMEOUT_REMOVE would remove a random one of them.

You see, I'm raising this because after reading the man pages I had no clue what would be the behavior. I had two assumptions (override or reject) but experiment showed the third one :-). If this is the intended behavior, would be great to specify it.

The IORING_OP_TIMEOUT_REMOVE + IORING_TIMEOUT_UPDATE

Which sounds absolutely fine to me, you'd need to rearm the timeout then.

In this particular use-case I know for sure that I want a timeout at T1 instead of T0 I armed before. So the possible async error would add some complexity. Would be nice to have a more direct way to express such a demand in code. Yet it's O.K. to cancel+add the timer.

Note, that if you need a periodic timeout, you can use the multishot mode.

Great news, thanks for mentioning! I do see it in the header but seems to be not in man yet.

user_data is never required to be unique but often reasonably expected to be so. Just as in your case, you can queue up two such timeouts and IORING_OP_TIMEOUT_REMOVE would remove a random one of them.

You see, I'm raising this because after reading the man pages I had no clue what would be the behavior. I had two assumptions (override or reject) but experiment showed the third one :-). If this is the intended behavior, would be great to specify it (in man).

That's how all requests work (I believe should be described in some core / non opcode specific man doc) and nothing suggests otherwise. Can be added though if there is a confusion.

The IORING_OP_TIMEOUT_REMOVE + IORING_TIMEOUT_UPDATE

Which sounds absolutely fine to me, you'd need to rearm the timeout then.

In this particular use-case I know for sure that I want a timeout at T1 instead of T0 I armed before. So the possible async error would add some complexity. Would be nice to have a more direct way to express such a demand in code. Yet it's O.K. to cancel+add the timer.

Note, that if you need a periodic timeout, you can use the multishot mode.

Great news, thanks for mentioning! I do see it in the header but seems to be not in man yet.

Yeah, man pages happen to lag behind, unfortunately

Can be added though if there is a confusion.

Yeah, would be great. Please let me know if you prefer me creating a separate request for the man update.
This one can be closed unless you prefer to keep it for some tracking.
Thanks you very much!


CloudFront Certificate ARN - Where can I found it?

Here can I find this information bellow:

Thanks :(

Configuring your site to be accessed over TLS/SSL is recommended, but optional, A certificate is required if you are configuring your site for secure access. The ARN of a certificate can be found in the Amazon Certificate Manager console if the cert was issued by ACM, or in IAM.  See the docs;
http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html
and
http://docs.aws.amazon.com/acm/latest/userguide/gs-acm-manage.html
I recommend, that you use Amazon Certificate Manager to issue a certificate for CloudFront, and/or for your Application Load Balancer.
To use an ACM Certificate with Amazon CloudFront, you must request or import the certificate in the US East (N. Virginia) region.
The certificate with have an Amazon Resource Name (ARN) similar to this;
arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012

@RGuilfoyle Thanks, I will follow your instructions


So i got this error.

Describe your bug here.

note: i was using fnf old engine's chart and was spamming keys without arrows showing up from boredness
Command Prompt/Terminal logs (if existing)
No response
Are you modding a build from source or with Lua?
Lua
What is your build target?
Windows
Did you edit anything in this build? If so, mention or summarize your changes.
only reskins and added extra characters and nothing else

You did not explain when does it happen

it came with xml file

I see
Yeah that's not a bug, your note skin is missing end animations

I see Yeah that's not a bug, your note skin is missing end animations

then why you can't make compatibility for old notes by checking the xml if it has it, if not, just use old note code. why it shouldn't support old notes? i mean it dosen't have to but it could be helpful if your moving mod from another engine that dosen't have it. btw thanks for helping

It uses the same system as base FNF

oh im dumb, i just realized this noteskin is old :/


OS wide app ?

I love the extension. While the icons could be refreshed, wouldn't the extension be much more useful and powerful as a macOS or Windows app directly, allowing us to select things everywhere and not just inside the browser? Or as a PopClip Extension?

I hope to meet everyone's needs as much as possible, but currently I am the only person maintaining this project and it is not a full-time job. Therefore, this feature may be implemented quite late


Tutorial updated to newer APIs and the testing examples have been expanded a bit #2334

https://github.com/http4s/http4s/issues/2334 and https://github.com/http4s/http4s/issues/1501

Both issues are closed, and 0.18.x is history.


feat: expose getByName method for dataSourceCollection

related issue #7837
This PR will allow to fetch dataSource from dataSourceCollection by name with the new .getByName method.

Thank you so much for the pull request @jony89! I noticed this is your first pull request and I wanted to say welcome to the Cesium community!
The Pull Request Guidelines is a handy reference for making sure your PR gets accepted quickly, so make sure to skim that.

:x: Missing CONTRIBUTORS.md entry.

Please add yourself to the contributors file!

:x: Missing CLA.

Please send in a Contributor License Agreement (CLA) and comment back here to let us know to check this!

:grey_question: CHANGES.md was not updated.

If this change updates the public API in any way, please add a bullet point to CHANGES.md.

Reviewers, don't forget to make sure that:

[ ] Cesium Viewer works.
[ ] Works in 2D/CV.
[ ] Works (or fails gracefully) in IE11.

CLA sent

Thanks again for your contribution @jony89!
No one has commented on this pull request in 30 days. Maintainers, can you review, merge or close to keep things tidy?
I'm going to re-bump this in 30 days. If you'd like me to stop, just comment with @cesium-concierge stop. If you want me to start again, just delete the comment.

Thanks again for your contribution @jony89!
No one has commented on this pull request in 30 days. Maintainers, can you review, merge or close to keep things tidy?
I'm going to re-bump this in 30 days. If you'd like me to stop, just comment with @cesium-concierge stop. If you want me to start again, just delete the comment.

Thanks again for your contribution @jony89!
No one has commented on this pull request in 30 days. Maintainers, can you review, merge or close to keep things tidy?
I'm going to re-bump this in 30 days. If you'd like me to stop, just comment with @cesium-concierge stop. If you want me to start again, just delete the comment.

I did everything according to https://github.com/AnalyticalGraphicsInc/cesium/blob/master/CONTRIBUTING.md#contributor-license-agreement-cla

@jony89 would you mind refilling out the Google form for the individual or corporate CLA? I don't see it on our end.

done


feat: impl lsm-tree basic write and read path

Add S3LsmTree and implement basic write and read path.
todo:

[ ] Add unit tests.
[ ] Add concurrent tests.

Ref: #44 .

Codecov Report

Merging #51 (b00b779) into main (5c1c608) will increase coverage by 0.26%.
The diff coverage is 93.61%.

@@            Coverage Diff             @@
##             main      #51      +/-   ##
==========================================
+ Coverage   91.93%   92.20%   +0.26%
==========================================
  Files          28       29       +1
  Lines        2839     2911      +72
==========================================
+ Hits         2610     2684      +74
+ Misses        229      227       -2

Impacted Files
Coverage Δ

rudder/src/meta.rs
10.34% <0.00%> (ø)

storage/src/lsm_tree/manifest/version.rs
94.84% <66.66%> (-0.02%)
:arrow_down:

storage/src/lsm_tree/utils/skiplist/list.rs
78.74% <77.77%> (+0.65%)
:arrow_up:

storage/src/lsm_tree/s3_lsm_tree.rs
98.48% <98.48%> (ø)

storage/src/lsm_tree/components/block_cache.rs
75.00% <100.00%> (+2.77%)
:arrow_up:

storage/src/lsm_tree/components/memtable.rs
100.00% <100.00%> (ø)

storage/src/lsm_tree/components/sstable_store.rs
87.50% <100.00%> (ø)

storage/src/lsm_tree/iterator/memtable_iterator.rs
100.00% <100.00%> (ø)

storage/src/lsm_tree/utils/skiplist/arena.rs
100.00% <0.00%> (+7.14%)
:arrow_up:

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 5c1c608...b00b779. Read the comment docs.

May be add a S3LsmTreeCore and attach RwLock directly on it will be better.


Waffle flag switch calls

Creates a way to avoid nesting code with if/else when changing logic whether flag is active or not. This force the users of the lib of creating more readable and modular code.
It also makes easier to implement automatic removal of flags in  code base using Abstract Syntax Tree tools like astroid.
In this PR users now have a decorator @waffle_callable for marking functions as they are only running based on a flag/switch state. And two helpers: one for flag waffle_flag_call() and waffle_switch_call() where the user pass the WaffleCallables and the required parameter to check the flag/switch state (request and flag name for flags and switch name for switches).
fixes #288

I don't love this API, honestly. It seems to add a lot of indirection and line length for not much value.
What's the need for @waffle_callable as a wrapper? Can someone execute these functions outside waffle?

The @waffle_callable is just to save the arguments for a future execution (inside the helpers, depending on the flag/switch state). You could do this with a lambda function, but that would be harder to find when you're removing the flag of code.
What I'm trying to accomplish here is to make easier to remove the flag, which is an important part of the process of using feature flags. Having old flags is bad because they inactive state usually tends to break after some time and also because your code is harder to read with flags (specially old ones). Unfortunately, removing feature flags is usually postponed indefinitely.
Well, this was my intention, but I'd really love to hear what's your opinion about this. Maybe we can think of other way to make flags removal more automatic in this discussion.

I will try to find time to look at this this week.

I agree that removing flag code is an important part of code maintenance. In the absence of this solution, people have been dealing with it in various ways:

not cleaning up feature flags that are no longer in use
removing unused feature flag code piecemeal, as they find it, during other coding activities
using their IDE's or code editor's find-and-replace functionality to find string literals and remove feature flags in one go

I am a proponent of keeping things simple. I think the proposed mechanism is complicated and does not add much benefit over option 3: find & replace. The cost of not removing features thoroughly is not high, so there is no pressing need for a comprehensive solution for unused feature flag removal.
Find & replace is most effective if features have unique and easy-to-find names. This is something that can be taught through Waffle documentation. There could be section on naming flags and removing ones that are no longer used.
The proposed mechanism is not easy to understand. This will limit its use greatly. Good documentation will ease this.
I am trying to imagine a company with a code base with 20 active developers, both front and back end. One of the senior devs finds this solution and implements it in the code base. They have now gained the ability to remove features easily. However, they have introduces complexity in adding feature flags. I would venture that half the devs will have a hard time understanding why they need to write feature flag code this way. I don't think it would be a net positive for that organization to adopt this way of coding. The benefit does not outweigh the cost.

I just read a post (that of course I can't find again) about strategies for removing flags, and all of them were processes, not tech.
I think my concern here is very closely aligned with @koliber, with one thing in particular standing out: This is a tooling question. I support teams finding ways to automate removing flags, but I don't want to privilege/require a particular solution. There's not one standard "codemod" style tool (at least not that I'm aware of, but I admit I've been more in JS land for a while).
So I think code like this best lives in userland, along with the associated tooling to use it, for the time being. I'm going to close the issue and PR, but thank you for the suggestion and discussion!


Mandeepsplaha/add pytorch pkg to mariner

Merge Checklist

All boxes should be checked before merging the PR (just tick any boxes which don't apply to this PR)

[X] The toolchain has been rebuilt successfully (or no changes were made to it)
[X] The toolchain/worker package manifests are up-to-date
[X] Any updated packages successfully build (or no packages were changed)
[X] Packages depending on static components modified in this PR (Golang, *-static subpackages, etc.) have had their Release tag incremented.
[X] Package tests (%check section) have been verified with RUN_CHECK=y for existing SPEC files, or added to new SPEC files
[X] All package sources are available
[X] cgmanifest files are up-to-date and sorted (./cgmanifest.json, ./toolkit/scripts/toolchain/cgmanifest.json, .github/workflows/cgmanifest.json)
[X] LICENSE-MAP files are up-to-date (./SPECS/LICENSES-AND-NOTICES/data/licenses.json, ./SPECS/LICENSES-AND-NOTICES/LICENSES-MAP.md, ./SPECS/LICENSES-AND-NOTICES/LICENSE-EXCEPTIONS.PHOTON)
[X] All source files have up-to-date hashes in the *.signatures.json files
[X] sudo make go-tidy-all and sudo make go-test-coverage pass
[X] Documentation has been updated to match any changes to the build system
[X] Ready to merge

Summary

What does the PR accomplish, why was it needed?
This PR adds pytorch package to Mariner 2.0 to be used in building Pytorch Golden container.
Change Log

Adding pytorch package to Mariner 2.0
Does this affect the toolchain?

NO
Test Methodology

ARM64 Buddy Build Id: 302791
AMD64 Buddy Build Id: 302786

Can you update the PR title to remove your username?


Bump to 1.10.6

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.


Add "Wine Syscall Handling Method" to the client

This adds an enum "WineSyscallHandlingMethod" to the client to
specify how to deal with the wine syscalls.
Depending on the value set in DataManager, App will communicate
to the client to stop unwinding at the dispatcher or to
record the user stack at the dispatcher.
The option is not yet exposed to the user and the service
will not yet handle the case to record the user stack.
Test: Manual E2E prototype
Bug: http://b/236118579

Requires #3899 to be in in order to have access to the proto.


Allow custom service name for runit service

Cookbook version
5.0.3
Chef-client version
Chef: 12.19.36
Platform Details
RHEL 7
Scenario:
I need to support a deployment where Jenkins instance is called anything other than "jenkins".
This cookbook allows configuration of Jenkins'  user/group/home/logdir  but not the service name.
For consistency and cleanliness, it would be good if runit service name can be made configurable.
Steps to Reproduce:
Deploy Jenkins using 'war' install method with customized Home and Log directory, using any name other than "jenkins".
Notice that while Home and Log directories are customized the service name remains "jenkins", as it is hard coded.
Expected Result:
The service name should follow name of deployed Jenkins instance.
Actual Result:
Service name remains fixed as "jenkins"

Shouldn't you be able to change the service name using
edit_resource!('runit_service[jenkins]') do
  service_name 'my-jenkins'
end

in your wrapper cookbook?

@StephenKing Wow!.  Yes. I can.
It honestly didn't occur to me to go this route.
Thank you.


chore(main): release 0.2.0

:robot: I have created a release beep boop
0.2.0 (2023-08-31)
Features

Fixed SQS and added slack notification ability (3e4a869)

Bug Fixes

Added configuration overriding and made sweeping fixes to configuration settings (b56fa10)
Added way to listen to magerun_output queue, added way to exit listening on output return (879a106)
Allow limitation of listener queues to avoid abuse or mistakes via user misspelling (6bb74ba)
Allow ReleasePlease to create build assets for releases (d7f44ba)
CGO ENV setting (7e0b462)
Correct release.yml behaviour and allow manual running of QOL actions (644dfaa)
Correct tests to work with new functionality (5b82107)
improved  n98 command handler and updated slack output notifier (5b1d7ec)
Include Restricted & Required argument configuration (ebd175b)
readme showed deploy command existed (65cc4a7)
ref_name for autodeployments (40bbfd2)
SQS queues did not work correctly with CorrelationIDs (cdf48cb)
SQS was set to short polling, updated to wait 60s (eb4be08)
Updating CTX wait timeout of SQS (99398e8)

This PR was generated with Release Please. See documentation.

Closing as we do not wish to auto commit any tags or releases that could conflict with magecomms base tags currently


ticdc: support multiple MySQL downstream addresses in sink URI

Is your feature request related to a problem?
In the current version, TiCDC can only connect one server of a MySQL-compatible database cluster in one Changefeed. If the connection is lost, it will be necessary to recreate the changefeed, as it will not automatically connect to other available servers in the cluster.
Describe the feature you'd like
As stated in the title, we can allow multiple MySQL-compatible downstream addresses in --sink-uri option when user create/update changefeed. When one of the downstream servers fails, TiCDC can automatically switch to another available server from the provided multiple optional servers to continue working, thereby providing high availability.
Therefore, the value of the --sink-uri option in the command can be changed to the following format:
[scheme]://[user[:password]@][host[:port]][,host[:port]][,host[:port]][/path][?param1=value1&paramN=valueN]
Related code
In the TiCDC code, the following places are involved in establishing a connection with MySQL-compatible downstream:

newMySQLSyncPointStore(): cdc/syncpointstore/mysql_syncpoint_store.go, needs modification.
CreateMySQLDBConn(): pkg/sink/mysql/db_helper.go
Places where CreateMySQLDBConn() is used:

NewDDLSink(): cdc/sink/ddlsink/mysql/mysql_ddl_sink.go, established a connection with the downstream database for DDL Sink, needs modification.
NewMySQLSink(): cdc/sink/dmlsink/txn/txn_dml_sink.go, established a connection with the downstream database for DML Sink，needs modification.
NewObserver(): pkg/sink/observer/observer.go, established a connection with the downstream database for the Owner to create Observers and periodically query certain performance metrics of the downstream TiDB via SQL, needs modification.
TestNewMySQLTimeout(): cdc/sink/dmlsink/txn/mysql/mysql_test.go，a UT for test timeout, no change needed.
checkBDRMode(): cdc/sink/validator/validator.go，temporarily establish a connection to the downstream database to check if BDR Mode is supported, no change needed.
doVerify(): pkg/upstream/upstream.go，temporarily establish a connection to the upstream database to authenticate upstream user, no change needed.

openDB(): cmd/kafka-consumer/writer.go，used by kafka-consumer to open the upstream database (for checking diff), no change needed.

Describe alternatives you've considered
No response
Teachability, Documentation, Adoption, Migration Strategy
No response

IMO it's better to use another layer like load balancer to solve this problem. CDC sink can only care about output protocol, high availability of downstream is not a responsibility of CDC.

IMO it's better to use another layer like load balancer to solve this problem. CDC sink can only care about output protocol, high availability of downstream is not a responsibility of CDC.

Thank you for your feedback. While using a load balancer is indeed a common solution for high availability, it can also become a single point of failure, especially if not properly configured or if the load balancer itself encounters issues. By allowing TiCDC to support multiple downstream addresses natively, we can add an extra layer of redundancy. This would enable TiCDC to automatically switch to another available server in the cluster if the primary server fails, providing more robust fault tolerance. This approach could be more reliable in scenarios where a load balancer might not be feasible or adds additional complexity.
Moreover, by integrating this functionality directly into TiCDC, we simplify the deployment and management of the system, as users wouldn’t need to rely on external solutions for high availability. This makes TiCDC more resilient and easier to use in a variety of environments.

@BenMeadowcroft Please take a look