PostgreSQLEnumType error "Could not set value of type" with H6 and Panache

We are using hypersistence-utils together with Quarkus, Kotlin, Hibernate 6 and Postgresql 15.
After migrating from quarkus 2 and hibernate 5 we now face an enum issue we hadn't had before.
Could not set value of type [DemoEnum] : DemoEntity.demoEnum (setter)
        at org.hibernate.property.access.spi.SetterFieldImpl.set(SetterFieldImpl.java:86)         at org.hibernate.property.access.spi.EnhancedSetterImpl.set(EnhancedSetterImpl.java:40)         at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:4155)         at org.hibernate.sql.results.graph.entity.AbstractEntityInitializer.initializeEntityInstance(AbstractEntityInitializer.java:844)         at org.hibernate.sql.results.graph.entity.AbstractEntityInitializer.initializeEntity(AbstractEntityInitializer.java:804)         at org.hibernate.sql.results.graph.entity.AbstractEntityInitializer.initializeInstance(AbstractEntityInitializer.java:790)
We also converted the project into Java and get the same issue.
Java: https://github.com/neukunft/pg-issue-java/tree/main
Kotlin: https://github.com/neukunft/pg-issue
Any suggestions highly appreceated.

From the stack trace, it looks like the problem is in Hibernate core.
Why do you think it's related to Hypersistence Utils?

There's this test that works fine on Hibernate 6.2.
So, the first step would be to change it to replicate the issue.
Afterward, you need to check what's needed to be changed to make it work.

If it cannot be replicated in Hypersistence Utils, then it might be a Panache or Quarkus issue.

You're welcome.

As explained here, the problem is actually a Hypersistence Utils problem.

Does this project have testing infrastructure that allows for separating which classes / jars get loaded by which ClassLoader? If so, I'd be glad to add a test if you point me to the relevant bits and some examples.
If it does not, then you'll forgive for not spending all the time necessary to set that up 😉

But apart from that, the analysis of the problem is pretty straightforward, there is nothing really complicated involved (at least from the little time I spent looking into the reproducer) in understanding the general idea of how the problem manifests

Does this project have testing infrastructure that allows for separating which classes / jars get loaded by which ClassLoader?

You will find the answer in the ReflectionUtils class.

But apart from that, the analysis of the problem is pretty straightforward, there is nothing really complicated involved (at least from the little time I spent looking into the reproducer) in understanding the general idea of how the problem manifests

This library is used by millions of developers who use Spring and Spring Boot, and they don't have this issue that you describe. If Quarkus does some atypical things, then we need a replicating test case in Hypersistence Utils to understand what the problem is and how could it be solved without breaking other frameworks using it.

You will find the answer in the ReflectionUtils class.

Well, you are either not giving me all the details or I am not looking in the right place.

This library is used by millions of developers who use Spring and Spring Boot, and they don't have this issue that you describe

Of course they don't - those platforms don't support live reloading of application code using a custom ClassLoader.

If Quarkus does some atypical things, then we need a replicating test case in Hypersistence Utils to understand what the problem is and how could it be solved without breaking other frameworks that are successfully using Hypersistence Utils

Not objecting in the general sense, but I am pretty that we can all agree that a name does not fully identify a class - a class is properly identified by it's name and the ClassLoader that loaded it. Taking this fundamental Java principal in mind, simply using a name as a cache key is not correct in an environment that supports multiple classloaders.

Not objecting in the general sense, but I am pretty that we can all agree that a name does not fully identify a class - a class is properly identified by it's name and the ClassLoader that loaded it. Taking this fundamental Java principal in mind, simply using a name as a cache key is not correct in an environment that supports multiple classloaders

You can modify that cache to take the ClassLoader into consideration as well. I'm sure that this problem you're describing has been already handled in Hibernate or Quarkus, so you can apply the same approach when modifying the ReflectionUtils class.

There was no question

😆 ,
For the record, there certainly was :)
But in any case, I'll take the bait and provide a test sometime this week.

Providing a test case would be the first step to validate the problem.
Afterward, you will also need to provide a fix for this because, other than IBM and Red Hat, it's very unlikely that you will find anyone to provide a fix for this problem in their spare time.

FWIW forks, here is the test:
package io.hypersistence.utils.hibernate.util;

import static junit.framework.TestCase.assertEquals;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Consumer;
import org.junit.Test;

public class ReflectionUtilsClassLoaderTest {

    @Test
    public void testGetClass() {
        byte[] appClassBytes = getClassBytes(AppClass.class);

        HashMap<String, byte[]> customClasses = new HashMap<>();
        customClasses.put(AppClass.class.getName(), appClassBytes);
        CustomClassLoader cl1 = new CustomClassLoader(this.getClass().getClassLoader(), customClasses);
        CustomClassLoader cl2 = new CustomClassLoader(this.getClass().getClassLoader(), customClasses);

        tryLoadClass(AppClass.class, cl1);
        tryLoadClass(AppClass.class, cl2);

        withNewTCCL(cl1, c -> assertEquals(c.getClassLoader(), cl1));
        withNewTCCL(cl2, c -> assertEquals(c.getClassLoader(), cl2));
    }

    private void withNewTCCL(ClassLoader cl, Consumer<Class<?>> consumer) {
        ClassLoader old =
                Thread.currentThread().getContextClassLoader();

        try {
            Thread.currentThread().setContextClassLoader(cl);
            Class<?> clazz = ReflectionUtils.getClassOrNull(AppClass.class.getName());
            consumer.accept(clazz);
        } finally {
            Thread.currentThread().setContextClassLoader(old); // restore the previous TCCL
        }
    }

    private static void tryLoadClass(Class<AppClass> clazz, CustomClassLoader classLoader) {
        try {
            Class<?> aClass = classLoader.loadClass(clazz.getName());
            assertEquals(aClass.getClassLoader(), classLoader); // ensure that our classloader loaded the class instead of its parent
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

    private byte[] getClassBytes(Class<?> clazz) {
        try {
            return this.getClass().getClassLoader().getResourceAsStream(clazz.getName().replace('.', '/') + ".class").readAllBytes();
        } catch (IOException e) {
            throw new UncheckedIOException(e);
        }
    }

    public static class CustomClassLoader extends ClassLoader {

        private final Map<String, byte[]> customClasses;

        private static final AtomicInteger incr = new AtomicInteger(1);
        public CustomClassLoader(ClassLoader parent, Map<String, byte[]> customClasses) {
            super(parent);
            this.customClasses = customClasses;
        }

        @Override
        protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
            Class<?> ex = findLoadedClass(name);
            if (ex != null) {
                return ex;
            }
            if (customClasses.containsKey(name)) {
                return findClass(name);
            }
            return super.loadClass(name, resolve);
        }

        @Override
        protected Class<?> findClass(String name) throws ClassNotFoundException {
            byte[] bytes = customClasses.get(name);
            if (bytes == null) {
                throw new ClassNotFoundException();
            }
            return defineClass(name, bytes, 0, bytes.length);
        }

        @Override
        public String toString() {
            return "CustomClassLoader" + incr.getAndIncrement();
        }
    }

    public static class AppClass {

    }
}

If you want me to open a PR with this, I certainly can :)

🙏

The Class cache is going to stay. However, it will have to be changed just like in Hazelcast.
And, yes, the Class Cache has a purpose:
https://github.com/hazelcast/hazelcast/issues/1162

That's highly debatable.
Anyway, I demonstrated the problem is clearly with the library (and of course it's a problem that can easily happen to anyone) so up to you folks how and if you want to handle it.

That's highly debatable (apart for the questionable performance benefit, you're opening yourself up to potential ClassLoader leaks).

As I wrote in this article, Class.forName has been slow for a very long time across multiple Java versions.
This is not a theoretical idea. I had to fix this problem when I was working on Hibernate ORM as it was causing a lot of performance issues:

HHH-10746
HHH-1810
HHH-4959
HHH-11246

Whether this has changed or not in the latest Java versions, and suddenly this problem is gone for good, I don't know.
But should we take the risk? Of course not!

But should we take the risk? Of course not!

Your project, your rules!
In any case, the way things are, you are risking situations like this one and even worse ones with ClassLoader leaks.
Also FWIW, in Quarkus we have never identitfied Class.forName as being a source of performance problems.

On Java 17, Class.forName is fast if the classes have already been loaded (notice the difference between p75 and p99):
2023-06-12 17:46:40,613 INFO  [main]: c.v.b.h.u.ReflectionUtilsTest - type=TIMER, name=transactionTimer, count=1000, min=0.0015999999999999999, max=595.754, mean=0.9082764999999751, stddev=20.024354273700983, median=0.0038, p75=0.0046, p95=0.014799999999999999, p98=1.8236999999999999, p99=2.6454999999999997, p999=595.754, mean_rate=1062.2102555975293, m1=0.0, m5=0.0, m15=0.0, rate_unit=events/second, duration_unit=milliseconds

Since the 60 and 62 modules use Java 17, then the cache could be removed for these modules. The other modules can run on Java 8, which didn't have a very fast Class.forName at the time.

Fixed.
After inspecting the ClassUtils in Spring, I noticed that they only cache the most common Java classes while leaving the rest uncached.
Since the ones we load are very specific, the number of classes loaded via Reflection will not be very high, so the cache will probably have very little impact, even on Java 8.

Hi, first of all, thanks for fixing this so quickly! Is this already released? I couldn't find it on Maven Central yet.

@neukunft The artifact was in staging mode in Nexus and I released it now. It should be available in a couple of hours in Maven Central.


Heterogeneous DataFrame

There has been a slight change in plans. There will be an attempt to check out heterogeneous DataFrames.
Changes
Usage:
DataFrame!(double, 20) df;

This will initialling a DataFrame with 20 columns of type double. These columns will represent data and not indexes. Indexes will be string based (with an added optimisation for integers) .
Similarly
DataFrame!(double, 5, int, 5) df;

Will initialise a DataFrame with 5 double columns and 5 integer columns in the same order
This work will be happening on a separate experimental branch (coming soon).
All the existing methods will be rewritten or modified over the weekend to accommodate these changes:

display()
to_csv()
from_csv()

Experimental is now live. -> Jump to experimental
:warning: Warning Code needs to be cleaned up. will be done by end of Monday [June 3rd IST].

I would suggest using static arrays to simplify the implementation and improve potential error messages in the user's code:
Before:
DataFrame!(int, 1, long, 2, double, 1, int, 5, float, 4, short, 9)

After:
DataFrame!(int, long[2], double[1], int[5], float[4], short[9])

(For a single column of type T, either T or T[1] could be used.)

Interesting thought. I'll add it by the end of the week.
Thanks for suggesting the improvement @ZombineDev :+1:

You're welcome :)
BTW, I have an optimized structure of arrays  implementation, which you can use if you find useful. Just ping me if I forget to dig it up.


Fix unit test flaky for IPsec controller

Wait one second as the fake clientset doesn't support watching with specific resourceVersion.
Otherwise the update event would be missed by the watcher used in csrutil.WaitForCertificate()
if it happens to be generated in-between the List and Watch calls.
Fixes: #3851
Signed-off-by: Xu Liu<EMAIL_ADDRESS>

/skip-all


Diacritic menu: switch focus into the menu

When the diacritic menu is opened, the focus should move into the modal.

No longer a modal.


HTML

User Story
As a bootcamp student
i want the prework notes to be structured on a webpage
so that i can eadily find and read information
Acceptence Criteria
GIVEN a Prework Study Guide website
WHEN i visit the website in my browser
THEN i see four boxes titled HTML, CSS, GIT, and JavaScript with associated notes listed

CSS
As a boot camp student
I want the prework notes to be structed on a webpage
so that i can easily find and reaf the information
GIVEN a Prework Study Guide website
When i view the study guide
THEN i see a dark blue head and footer, and four boxes with a shadow

JavaScript
User Story
As a boot camp student
I want the prework notes to be structured on a webpage
So that i can easily find and read the information
Acceptence Criteria
GIVEN a prework Study Guide wesite
WHEN i view the study guide
THEN i can see the four topics i learned listed along with a suggestion on what i should study first

README
User Story
As a boot camp student,
I want the prework notes to be structured on a webpage,
So that i can easily find and read the information.
Acceptence Criteria
GIVEN the prework project repository,
WHEN i view the README for the repository,
THEN i can see a professional README that provides information on the project and how to use it

Deployment
User Story
As a boot camp student,
I want the prework notes to be structured on a webpage,
So that i can eadily find and read the information.
Acceptence Criteria
GIVEN a Prework Study Guide website,
WHEN i visit the website using the URL,
THEN i can access my website from my browser


[enhancement]: Support Download Name & Location for Bulk Downloads

Is there an existing issue for this?

[X] I have searched the existing issues

What should this feature add?
Allow users in the UI to supply a file name and a download location for bulk downloads.

How about this, the toast gives you a link to click. You can do save as or just click to download w/ the default:

How about this, the toast gives you a link to click. You can do save as or just click to download w/ the default:

The Save As as in the browser save window?

Yep

I mean you can right c click to save as

implemented in #5763


MudDatePicker does not set IsValid to 'true' if Required="true"

Describe the bug
If there is a 'MudDatePicker' component in a form and has 'Required="true"', it will not change the form's 'IsValid' when a date is chosen in the picker.
It looks like it doesn't fire a "Validate"
When not setting 'Required="true"' and only using 'Validation', it works as expected but we don't have the super cool '*' that marks it as required.
If making MudDatePicker 'Editable="true"' and both entering a manual value AND selecting a date with the picker, validation is successful.
Perhaps there are two components in the picker that need to be 'touched'. The calendar and the text field.
Expected behavior
If the date is set through 'MudDatePicker' and passes validation, IsValid should be 'true'
TryMudBlazor
https://try.mudblazor.com/snippet/cEwbEsFgLZcAPBrz
Example is set to a the bug state.
To see working state, remove 'Required="true"' from the component

https://try.mudblazor.com/snippet/mOGvYXvRorKeZnSM
You need to invoke validate method to determine IsValid value.
This issue will be moved to the discussions. If you have another problems on this, please open another issue or continue on discussion.


counter doesn't update for twitter links

  $('.social-likes').socialLikes({
    url: 'http://www.testmycss.com',
    counters: true
  })

seeing failed request in the logs
jquery.min.self-4b58dfeb119b2dd15f54e0a074cf8eb63204c8b03d45056e0b514e042f36aa44.js?body=1:6 GET https://cdn.api.twitter.com/1/urls/count.json?url=http%3A%2F%2Fwww.testmycss.com&callback=jQuery19109239955067168921_1454868048815&_=1454868048816
(index):1 Refused to execute script from 'http://share.yandex.ru/gpp.xml?url=http%3A%2F%2Fwww.testmycss.com&_=1454868048817' because its MIME type ('application/json') is not executable, and strict MIME type checking is enabled.

It was fixed in 3.1.0.


Any version 83 available on official site throws an error

I've installed with
pip3 install -r requirements.txt
then
independent@kali:~/TikTok$ python3 run.py
-=[ TikTok Public Video Scraper ]=-
0 - Scrape by Trending Videos
1 - Scrape by Username
2 - Scrape by Music [WIP]
3 - Scrape by Hashtag [WIP]
Enter choice [0-3]: 1
Enter username to scrape: mollyeskam
How many vidoes would you like to scrape [-1 for all possible]: -1
User-Agent: Naverbot
IP Address: <IP_ADDRESS>
Traceback (most recent call last):
File "run.py", line 215, in
loop.run_until_complete(scrape(mode, username=username, count=count, likes=likes, views=views, shares=shares, comments=comments))
File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
return future.result()
File "run.py", line 74, in scrape
tt = TikTok(proxify=False)
File "/home/independent/TikTok/api.py", line 65, in init
self.driver = webdriver.Chrome(self.driver_path, options=self.chrome_options)
File "/usr/lib/python3/dist-packages/selenium/webdriver/chrome/webdriver.py", line 95, in init
RemoteWebDriver.init(
File "/usr/lib/python3/dist-packages/selenium/webdriver/remote/webdriver.py", line 152, in init
self.start_session(capabilities, browser_profile)
File "/usr/lib/python3/dist-packages/selenium/webdriver/remote/webdriver.py", line 249, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/usr/lib/python3/dist-packages/selenium/webdriver/remote/webdriver.py", line 318, in execute
self.error_handler.check_response(response)
File "/usr/lib/python3/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 83
Exception ignored in: <function TikTok.del at 0x7fa737fa2a60>
Traceback (most recent call last):
File "/home/independent/TikTok/api.py", line 88, in del
AttributeError: 'TikTok' object has no attribute 'driver'

Please check the latest commit 6dbed56. I will close this now. Thanks


Spike: Explore how UltraPlonk ROM/RAM can be used for efficient array manipulation

@iAmMichaelConnor does this still require discussion?


Add NamedSymbolTypeProvider

Fixes https://github.com/microsoft/typespec/issues/3744

API change check
APIView has identified API level changes in this PR and created following API reviews.
Microsoft.Generator.CSharp


Fix idempotence for wait for device block

Description
Currently ruby block 'wait for device' will run every chef run and it will be reported as changed. This PR fixes such behaviour and adds idempotence check to test-kitchen.
Contribution Check List

[x] All tests pass.
[x] New functionality includes testing.
[ ] New functionality has been documented in the README if applicable

This change is

Excellent! Thanks for the PR!


[Feature request] make a milestone edit box also a rich edit box (as the one for a wiki page or an issue)

It would be great if the edit box for the milestone's description would be also a rich edit box - the same as for a wiki page or an issue.

We're planning to move away from the bug-ridden "rich" box back to a plain textarea, so this is unlikely to happen. See https://github.com/go-gitea/gitea/issues/10729 and linked issues.

From my point of view, some basic WYSIWYG features would be nice - no matter what editor is used. Even some buttons to add snippets, like link, code, headers would be enough.
But having side-by-side text area and preview area would be a luxury :)

A markdown preview tab can of course be done, maybe even with an option to have it side by side, but the edit area will remain a simple textarea.

Well, then I hope for the best - that side by side view will arrive soon.


⚠ Bofrost.lu has degraded performance

In 49b8e46, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1427 ms

Resolved: Bofrost.lu performance has improved in c59af4f.


The plugin does not generate sprite

Description
I have a folder which contains svg-icons.
I try to generate sprite but nothing happens, mix completes and no sprite has been generated in dist folder.
const mix = require('laravel-mix');
require('laravel-mix-svg-sprite');

mix.svgSprite(
    'resources/assets/svg',
    'public/dist/front/sprite.svg',
    {
        extract: true
    },
    {
        plainSprite: true
    }
);

As I think the problem refers to this notice in plugin description

N.B. This component only adds a loader to the Webpack configuration, it doesn't glob your directory and include every file it finds. You need to require the icons from within your code (JS, CSS, etc.) just like other modules to have them added to the sprite!

But I dont know what I have to do with this.

You have to import/require the SVG-files in your JS. For example:
const helpIconUrl = require('../svg/help.svg').default.url;

Or take a look at this example Vue-component.

you example will not work

Cannot find module '../svg/help.svg'

That was just an example. I don't know the exact path in your setup, so you should change it for your use case.

That was just an example. I don't know the exact path in your setup, so you should change it for your use case.

I mean you can not require files as icons if I not mistaken.

This plugin transforms your SVG files into modules you can use in JavaScript. The resulting module contains the URL to the sprite for example. The actual content of all SVG files will be combined into one sprite, which will be outputted in a separate file.
Example module of an imported SVG:
{
  "id": "help-usage",
  "viewBox": "0 0 20 20",
  "url": "/icons.svg#help"
}


Space Support

"select 'name 1' from test where names = 'a1' and names ='a3' LIMIT 10"
Column Names with spaces in them are not handled correctly by the parser, rather than being recognized as columns they are parsed as SQL vals and classified as ints. I tried surrounding 'name 1' with double quotes as well and this also did not work. If you could fix this that would be great, as it currently is not compatible with the behavior described for case sensitivity and spaces defined by the Amazon S3 Select API.
Thanks!

Also another error is that your parser is flagging a syntax error on this expression:
"select * from S3Object where cast(age AS int) > 12" at the character after int even though this is a perfectly valid query.
Thanks!
Arjun

This is a mysql parser, and in that the syntax to escape column names you use backticks. Please try name 1.

Hi, so I read through that doc, and I understand the general approach and rules for MySQL, but as for your actual built parser, is there anyway to specify case sensitivity for column names or do you not support this, e.g I have two columns "weight" and "Weight", and I use some type of escape character to show that I want it to be case sensitive, as Amazon shows in their Select S3 API here: https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference-select.html.
Sorry if I'm being redundant, I'm just not sure I see the relationship of how the file system being case sensitive relates to your parser. E.g if your parser was on linux, shouldnt it support case sensitivity.
Sorry If I was unclear, or a little obtuse!
Thanks for all the help!
Arjun!

Wanted to bring this up again...
Thanks!
Arjun

Hi just wanted to follow up again!
Thanks!
Arjun

Hi was just following up!


Enable the pylint expansion, the intelligent prompt is invalidated

As shown in the title, when I enabled Pylint, the window prompt error will appear, and the intelligent prompt will fail. After restarting VSCODE, everything returned to normal.

Go to output:
2023-11-10 16:16:08.244 [info] [Error - 4:16:08 PM] Server process exited with code 1.
2023-11-10 16:16:08.244 [info] [Error - 4:16:08 PM] Connection to server got closed. Server will not be restarted.
2023-11-10 16:16:08.245 [info] [Error - 4:16:08 PM] Handling connection close failed
2023-11-10 16:16:08.245 [info] TypeError: e.clear is not a function
    at _.cleanUp (c:\Users\Administrator\.vscode\extensions\ms-python.python-2023.20.0\out\client\extension.js:2:2412859)
    at _.handleConnectionClosed (c:\Users\Administrator\.vscode\extensions\ms-python.python-2023.20.0\out\client\extension.js:2:2417283)
    at _.handleConnectionClosed (c:\Users\Administrator\.vscode\extensions\ms-python.python-2023.20.0\out\client\extension.js:2:2578252)
    at c:\Users\Administrator\.vscode\extensions\ms-python.python-2023.20.0\out\client\extension.js:2:2416709
    at o.invoke (c:\Users\Administrator\.vscode\extensions\ms-python.python-2023.20.0\out\client\extension.js:2:2363387)
    at s.fire (c:\Users\Administrator\.vscode\extensions\ms-python.python-2023.20.0\out\client\extension.js:2:2364152)
    at te (c:\Users\Administrator\.vscode\extensions\ms-python.python-2023.20.0\out\client\extension.js:2:2349784)
    at o.invoke (c:\Users\Administrator\.vscode\extensions\ms-python.python-2023.20.0\out\client\extension.js:2:2363387)
    at s.fire (c:\Users\Administrator\.vscode\extensions\ms-python.python-2023.20.0\out\client\extension.js:2:2364152)
    at d.fireClose (c:\Users\Administrator\.vscode\extensions\ms-python.python-2023.20.0\out\client\extension.js:2:2372012)
    at ChildProcess.<anonymous> (c:\Users\Administrator\.vscode\extensions\ms-python.python-2023.20.0\out\client\extension.js:2:2384364)
    at ChildProcess.emit (node:events:525:35)
    at maybeClose (node:internal/child_process:1091:16)
    at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5)

A simple example:

Version: 1.84.2 (system setup)
Commit: 1a5daa3a0231a0fbba4f14db7ec463cf99d7768e
Date: 2023-11-09T10:51:52.184Z
Electron: 25.9.2
ElectronBuildId: 24603566
Chromium: 114.0.5735.289
Node.js: 18.15.0
V8: <IP_ADDRESS>-electron.0
OS: Windows_NT x64 10.0.19045

This is a dupe of https://github.com/microsoft/pylance-release/issues/5086 which is fixed in our latest prerelease version.

It should only happen when restarting the Pylance language server. Restarting VS code would make the problem go away.

Having the same issue:
Tried all combinations, pylance (disable, restart) * pylint (disable, restart)  * vscode (open, close)
Usually a restart of vscode helps


Cottongut Turd recipes for 80-20 rule loses productivity

Mod source
Factorio Mod Portal
Operating system

=Windows 10

What kind of issue is this?

[ ] Compatibility
[ ] Locale (names, descriptions, unknown keys)
[ ] Graphical
[ ] Crash
[ ] Progression
[X] Balance
[ ] Pypostprocessing failure
[ ] Other

What is the problem?
The base recipes for Negasium and Denatured seismite (the recipe with the by-products, the pure recipe retaines productivity) accept productivity modules. The turd replacement recipes from the "80-20 rule" turd no longer accept productivity. This makes these two recipes worse once you reach prod science, as the tier two building and tier two prod modules give a 40% prod to all outputs and the turd only 33% to the main product.
Or maybe the bug is that these three recipes accept productivity in the beginning, as the other recipes in that category do not.
Steps to reproduce
No response
Additional context
No response
Log file
No response

Duplicate of https://github.com/pyanodon/pybugreports/issues/482
Though this one is better documented. I'll close the original

Fixed. Thanks for the report.


Change in behavior of boolean masks inside jitted functions in jax 0.2.0

Problem
Using a boolean mask that is generated inside a jitted function (but only depends on static arguments) stops working with version 0.2.0. It worked in versions 0.1.77 and before. If the mask is passed in as a static argument it still works.
Error Message
Traceback (most recent call last):
  File "mixed_documents/jax_error.py", line 23, in <module>
    wont_work(x, y)
  File "mixed_documents/jax_error.py", line 11, in create_mask_inside_jitted_function
    return x[mask].sum()
  File "/home/janos/anaconda3/envs/minimal_jax/lib/python3.8/site-packages/jax/numpy/lax_numpy.py", line 3783, in _rewriting_take
    treedef, static_idx, dynamic_idx = _split_index_for_jit(idx)
  File "/home/janos/anaconda3/envs/minimal_jax/lib/python3.8/site-packages/jax/numpy/lax_numpy.py", line 3843, in _split_index_for_jit
    idx = _expand_bool_indices(idx)
  File "/home/janos/anaconda3/envs/minimal_jax/lib/python3.8/site-packages/jax/numpy/lax_numpy.py", line 4102, in _expand_bool_indices
    raise IndexError("Array boolean indices must be concrete.")
jax.traceback_util.FilteredStackTrace: IndexError: Array boolean indices must be concrete.

The stack trace above excludes JAX-internal frames.
The following is the original exception that occurred, unmodified.

--------------------

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "mixed_documents/jax_error.py", line 23, in <module>
    wont_work(x, y)
  File "/home/janos/anaconda3/envs/minimal_jax/lib/python3.8/site-packages/jax/traceback_util.py", line 137, in reraise_with_filtered_traceback
    return fun(*args, **kwargs)
  File "/home/janos/anaconda3/envs/minimal_jax/lib/python3.8/site-packages/jax/api.py", line 209, in f_jitted
    out = xla.xla_call(
  File "/home/janos/anaconda3/envs/minimal_jax/lib/python3.8/site-packages/jax/core.py", line 1144, in bind
    return call_bind(self, fun, *args, **params)
  File "/home/janos/anaconda3/envs/minimal_jax/lib/python3.8/site-packages/jax/core.py", line 1135, in call_bind
    outs = primitive.process(top_trace, fun, tracers, params)
  File "/home/janos/anaconda3/envs/minimal_jax/lib/python3.8/site-packages/jax/core.py", line 1147, in process
    return trace.process_call(self, fun, tracers, params)
  File "/home/janos/anaconda3/envs/minimal_jax/lib/python3.8/site-packages/jax/core.py", line 577, in process_call
    return primitive.impl(f, *tracers, **params)
  File "/home/janos/anaconda3/envs/minimal_jax/lib/python3.8/site-packages/jax/interpreters/xla.py", line 529, in _xla_call_impl
    compiled_fun = _xla_callable(fun, device, backend, name, donated_invars,
  File "/home/janos/anaconda3/envs/minimal_jax/lib/python3.8/site-packages/jax/linear_util.py", line 234, in memoized_fun
    ans = call(fun, *args)
  File "/home/janos/anaconda3/envs/minimal_jax/lib/python3.8/site-packages/jax/interpreters/xla.py", line 595, in _xla_callable
    jaxpr, out_avals, consts = pe.trace_to_jaxpr_final(fun, abstract_args)
  File "/home/janos/anaconda3/envs/minimal_jax/lib/python3.8/site-packages/jax/interpreters/partial_eval.py", line 1023, in trace_to_jaxpr_final
    jaxpr, out_avals, consts = trace_to_subjaxpr_dynamic(fun, main, in_avals)
  File "/home/janos/anaconda3/envs/minimal_jax/lib/python3.8/site-packages/jax/interpreters/partial_eval.py", line 1004, in trace_to_subjaxpr_dynamic
    ans = fun.call_wrapped(*in_tracers)
  File "/home/janos/anaconda3/envs/minimal_jax/lib/python3.8/site-packages/jax/linear_util.py", line 151, in call_wrapped
    ans = self.f(*args, **dict(self.params, **kwargs))
  File "mixed_documents/jax_error.py", line 11, in create_mask_inside_jitted_function
    return x[mask].sum()
  File "/home/janos/anaconda3/envs/minimal_jax/lib/python3.8/site-packages/jax/core.py", line 505, in __getitem__
    def __getitem__(self, idx): return self.aval._getitem(self, idx)
  File "/home/janos/anaconda3/envs/minimal_jax/lib/python3.8/site-packages/jax/numpy/lax_numpy.py", line 3783, in _rewriting_take
    treedef, static_idx, dynamic_idx = _split_index_for_jit(idx)
  File "/home/janos/anaconda3/envs/minimal_jax/lib/python3.8/site-packages/jax/numpy/lax_numpy.py", line 3843, in _split_index_for_jit
    idx = _expand_bool_indices(idx)
  File "/home/janos/anaconda3/envs/minimal_jax/lib/python3.8/site-packages/jax/numpy/lax_numpy.py", line 4102, in _expand_bool_indices
    raise IndexError("Array boolean indices must be concrete.")
IndexError: Array boolean indices must be concrete.

Minimal Example
import jax.numpy as jnp
import jax

def pass_in_mask(x, y, mask):
    return x[mask].sum()

def create_mask_inside_jitted_function(x, y):
    mask = jnp.isfinite(y)
    return x[mask].sum()

x = jnp.array([1., 2, 3])
y = jnp.array([0, jnp.inf, jnp.nan])
mask = jnp.isfinite(y)

will_work = jax.jit(pass_in_mask, static_argnums=(1, 2))
wont_work = jax.jit(create_mask_inside_jitted_function, static_argnums=1)

will_work(x, y, mask)
wont_work(x, y)

Conda Environment
name: minimal_jax
channels:
  - conda-forge
dependencies:
  - python=3.8
  # - jax=0.1.77
  - jax=0.2.0
  - jaxlib=0.1.55

This is working as intended: jax 0.2.0 includes a major change ("omnistaging") to how JAX stages out computations. There's a longer document coming, but https://github.com/google/jax/pull/3370 has a description of the change.
Briefly, there are two basic things you could here:

if you want the mask to be resolved at compile time, use a static argument and use classic NumPy for the computation in question. This avoids staging the masking computation out to XLA.
if you want the mask to be resolved at run time, use the 3-argument form of jnp.where which avoids the need for concreteness of boolean indices.

jnp.where(jnp.isfinite(y), y, 0).sum()

Does that resolve the issue?

Please read https://github.com/google/jax/blob/master/design_notes/omnistaging.md .

Thanks a lot for the clarification and tips! Yes, this resolves the issue. Especially the design notes are very helpful.


Fix DM UI

The UI is broken right now - probably a promise is swallowing an exception somewhere.

After some debugging- when one sends a dm via room.sendTo(), the room peer left event is trigered. Very strange.


TypeError: (0 , S.default) is not a function

I receive this stack trace when trying to invoke createPublicClient in nodejs environment:
TypeError: (0 , S.default) is not a function
    at G (/Users/petrpotapov/Projects/lottery-smart-func/smart-func/node_modules/@fotonjs/api/dist/index.cjs:1:2864)
    at $ (/Users/petrpotapov/Projects/lottery-smart-func/smart-func/node_modules/@fotonjs/core/dist/index.cjs:1:1207)
    at Object.<anonymous> (/Users/petrpotapov/Projects/lottery-smart-func/smart-func/scripts/getLotteryResults.ts:16:47)
    at Module._compile (node:internal/modules/cjs/loader:1369:14)
    at Module.m._compile (/Users/petrpotapov/Projects/lottery-smart-func/smart-func/node_modules/ts-node/src/index.ts:1618:23)
    at Module._extensions..js (node:internal/modules/cjs/loader:1427:10)
    at Object.require.extensions.<computed> [as .ts] (/Users/petrpotapov/Projects/lottery-smart-func/smart-func/node_modules/ts-node/src/index.ts:1621:12)
    at Module.load (node:internal/modules/cjs/loader:1206:32)
    at Function.Module._load (node:internal/modules/cjs/loader:1022:12)
    at Module.require (node:internal/modules/cjs/loader:1231:19)

Environment:
"@fotonjs/core": "^0.0.7",
"@ton/core": "^0.56.3",
TS config (tested in different environments, didn't help):
{
"compilerOptions": {
"target": "ES2020",
"outDir": "dist",
"module": "commonjs",
"declaration": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipLibCheck": true
}
}
My current ideation process is that this library is designed to be used in browser environment with nodejs polyfills and isn't designed to be used on the backend. Is that correct assumption?

@Nizarius Thanks for the issue. Foton wasn't tested within node environment yet, but the idea is that it should work as expected in both Node and Browser. Only createWalletClientUI is designed to be browser-only

Try run in node version 22+


Initial support for User resource, e2e test

Issue #, if available:
Description of changes:
Summary of the generator config/custom code:

add terminal codes
add additional Status fields for AccessString state-keeping which are only modified upon creation or modification of the User (needed because the ElastiCache API returns an expanded AccessString different than the one specified)
"custom modify" code only handles requeues (no actual modification done)
remove differences from Delta which are not meaningful
only populate update payload with fields that have actual differences between desired/latest (via ignoring most field paths in default modify payload and using a post_build_request hook)
post_set_output hook handles synced condition
e2e CRUD test

Working on this has revealed the need for a couple small improvements in common repos (see below) which could significantly simplify the code. So although we need some more custom code (e.g. secrets support for Passwords field among other things) this feels like a good stopping point until those get resolved.
https://github.com/aws-controllers-k8s/community/issues/806
https://github.com/aws-controllers-k8s/community/issues/808
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

/ok-to-test
/test elasticache-kind-e2e
/test elasticache-unit-test

e2e test job is now running properly. Some tests are failing but the one associated with this PR is passing:
 [gw1] [ 14%] SKIPPED tests/test_replicationgroup_largecluster.py::TestReplicationGroupLargeCluster::test_rg_largecluster
[gw0] [ 28%] ERROR tests/test_replicationgroup.py::TestReplicationGroup::test_rg_input_coverage
tests/test_replicationgroup.py::TestReplicationGroup::test_rg_cmd_fromsnapshot
[gw2] [ 42%] PASSED tests/test_user.py::TestUser::test_CRUD
[gw3] [ 57%] PASSED tests/test_snapshot.py::TestSnapshot::test_snapshot_kms
[gw0] [ 71%] FAILED tests/test_replicationgroup.py::TestReplicationGroup::test_rg_cmd_fromsnapshot
tests/test_replicationgroup.py::TestReplicationGroup::test_rg_cmd_update
[gw0] [ 85%] PASSED tests/test_replicationgroup.py::TestReplicationGroup::test_rg_cmd_update
tests/test_replicationgroup.py::TestReplicationGroup::test_rg_auth_token
[gw0] [100%] ERROR tests/test_replicationgroup.py::TestReplicationGroup::test_rg_auth_token
[gw0] [100%] ERROR tests/test_replicationgroup.py::TestReplicationGroup::test_rg_auth_token

I will investigate the test failures and address them in another PR if needed


[help-wanted] benchmarking

I wish to use orbit-db's document store for a project. I am interested to test how read/write speed, latency, query time ( for document store), time to get, time to put, and other key metrics change as the size of database increases.
Is there any benchmarking tool/script previously used? If not, I can contribute.

@piyushmadan would be awesome if we had more benchmarks for OrbitDB! Perhaps you can get started with: https://github.com/orbitdb/orbit-db/tree/master/benchmarks.

I have few million json documents, all a few kb in size, totalling a dozen or more GB now.
Use case for me is to be able have them in a semi-realtime database that is public yet p2p so my servers don’t collapse with the demand.

There are now a number of benchmarks in https://github.com/orbitdb/orbitdb/tree/main/benchmarks. Please feel free to expand on these and submit your additions as a PR. Additional benchmarks are welcome.


Rasa financial-demo requirements.txt rasa-sdk version

Hi, when will be the rasa-sdk version be updated to version 3.x.x in the  financial-demo ?
I was follwing the udemy tutorial and there we run the requirements.txt file. My rasa version 3.0.x got replaced with 2.8.

Thanks for raising this issue, @JustinaPetr will get back to you about it soon✨
Please also check out the docs and the forum in case your issue was raised there too 🤗

Did this work in rasa 3 now?


Update polybase-configure-mongodb.md

@pabechevb : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#label:"aq-pr-triaged"

@pabechevb - thank you for the submission. We are reviewing.


keep-alive with router-view not working in my scene

Version
2.5.16
Reproduction link
https://jsfiddle.net/leixu2txtek/e2vtyw5n/42/
Steps to reproduce

click foo
click child
click foo (hi is print)
click bar
click foo (first show mounted and show hi after 300ms)
click child
click foo (should be hi but like step 5 )

What is expected?
foo component render by cache
What is actually happening?
foo component  render with full lifecycle

if I destroy component  with manually , keepAlive's cache not removed.

If in debugger mode , I remove cache[key] that be destroyed with console ,and that's ok for me .

from the api docs:

The match is first checked on the component’s own name option, then its local registration name (the key in the parent’s components option) if the name option is not available. Anonymous components cannot be matched against.

@LinusBorg  If i set the name on components , problem still there.

Not for me: https://jsfiddle.net/e2vtyw5n/51/

Okay, seeing the issue now.

@LinusBorg  Thanks for you reply ,  I tested https://jsfiddle.net/e2vtyw5n/51/. and problem still there..
Maybe you don't understand what I am faceing.
The importrant is step 4,5,6,7, and still call mounted

Yeah got it now. I assume manually destroying a component from like that messes with the ache of keep-alive ....

If I use the debug mode to manually clear the destroyed component cache, it will be cached again, and all is ok.
so this problem caused by destroy but cache not be cleard ?

That's what I suspect, yes

Example above
from /foo/ to /foo/id/  the Foo component is cached by keep-alive.
then from /foo/ to /bar/  the Foo component is destroyed by mixin
then from /bar/ to /foo/ , the Foo component still cached by keep-alive
Note the exclamation point below...
function render () {
    var slot = this.$slots.default;
    var vnode = getFirstComponentChild(slot);
    var componentOptions = vnode && vnode.componentOptions;
    if (componentOptions) {
      // check pattern
      var name = getComponentName(componentOptions);
      var ref = this;
      var include = ref.include;
      var exclude = ref.exclude;
      if (
        // not included
        (include && (!name || !matches(include, name))) ||
        // excluded
        (exclude && name && matches(exclude, name))
      ) {
        return vnode
      }

      var ref$1 = this;
      var cache = ref$1.cache;
      var keys = ref$1.keys;
      var key = vnode.key == null
        // same constructor may get registered as different local components
        // so cid alone is not enough (#3269)
        ? componentOptions.Ctor.cid + (componentOptions.tag ? ("::" + (componentOptions.tag)) : '')
        : vnode.key;

// !!!!!!!delete cache[78] and go else!!!!!!!!
      if (cache[key]) {
        vnode.componentInstance = cache[key].componentInstance;
        // make current key freshest
        remove(keys, key);
        keys.push(key);
      } else {
        cache[key] = vnode;
        keys.push(key);
        // prune oldest entry
        if (this.max && keys.length > parseInt(this.max)) {
          pruneCacheEntry(cache, keys[0], keys, this._vnode);
        }
      }

      vnode.data.keepAlive = true;
    }
    return vnode || (slot && slot[0])
  }

couldn't you use the activated hook to "simulate" what mounted does, so that you don't have to destroy the component at all?

Why I destroy component:
keep-alive will cached all component if no any condition eg. include/exclude/v-if ...
I destroyed component condition is
/foo/ -> /foo/id   will not destroyed, because if i return (go(-1)) ,/foo/ need keep all status ;
/foo/ -> /bar/   should destroyed, because if i return (go(-1)), /foo/ need init all status;
Summary is
From the parent url to the subset url, there is no need to destroy the parent, because when returning from the subset, you need to keep the original state.
Ps: parent url, subset url similar to restful url

https://forum.vuejs.org/t/how-to-destroy-a-vuejs-component-that-is-being-cached-by-keep-alive/27132

@LinusBorg
https://github.com/vuejs/vue/pull/7151/commits/ada25171af85a8d2e76e22a4cc61c06e9d9ab1f3
This PR commit failed ,but it's work for me .
Can you think about this PR in few minutes? Thanks a lot.

You are asking for a way to prune cache in keep-alive like in #6509  and #8161
You can check there for the reasons this is not possible

On top of @LinusBorg recommendation, you can also extract the state into a store, but I cannot tell without looking at your codebase and this becomes a question, which should be posted in the relevant channels (forum, discord, stackoverflow)

It is not fully related to the question but as this page is among the first search-results on google when searching my problem, so I would like to add this note for others who have the same problem as I had:
You have to use the :key directive to update a component using keep-alive and router-view together with params in the route path like  /blog/:slug
<keep-alive>
        <router-view :key="$route.fullPath"></router-view>
    </keep-alive>

With this Vue finally updates any new blog posts but caches the previously loaded. Otherwise only the first loaded blog post will be served even the blog/:slug changes all the time.
See also:
https://vuejs.org/v2/api/#key
https://stackoverflow.com/questions/52847979/what-is-router-view-key-route-fullpath

@Tech-Nomad hey, that's not a good generic solution as it will always recreate router-view based on any change in the url, including query or hash. I hid it to prevent users from copy pasting what could be a harming solution in many cases


Move docs into edge folder

What this PR does / why we need it
Updates release branch to move docs into docs/edge folder
Which issue(s) this PR fixes

Fixes: #
Describe testing done for PR

Special notes for your reviewer

closing in favor of https://github.com/vmware-tanzu/community-edition/pull/4370 to clear up conflicts


Hidden pages containing the same metadata targets reset on page navigation

Setup a wizard with two 'first' pages where one or the other will display (eg. based on the role of the user), and a second page.
Configure a radio button widget that has different values on each of the 'first' pages, but keys off of the same metadata target.
Save the wizard editor.
Begin an item contribution to that collection.  Notice that selecting a value for the radio buttons, navigating to the second page, and then returning to the first, clears out your selected value of the radio buttons.   Using an Edit Box widget does not cause this behavior.

When setting the metadata field of the radio buttons on the latter 'first' page, Equella gives a warning that it's not recommended to have the same metadata field on separate pages.  However, this seems like a valid flow (having multiple pages using the same metadata targets, when all but one of the pages will be hidden). If you had a widget keying off the same field in two different spots and visible at the same time, I would consider it a poor design choice. This however, seems like a reasonable way to build a wizard.
Interested as well to hear from the community - should this be a supported feature of Equella, or a known limitation?

Taking a look at this - interested to hear if folks know of a reason that this should not be supported in Equella.

Just wanted to add that, even if it's perhaps not a feature that's wanted in EQUELLA, it definitely has behaved this way in the past (e.g. the metadata field would not be wiped out upon navigating to later pages, this was the case for us on 6.4 QA1 at least) and the issue is a regression.
For us, contribution wizards frequently have this set up when a certain kind of item cannot be contributed by a certain user group. We don't want students uploading administrative documents to an academic program's collection. The alternative way of implementing this is with one large wizard page, but that quickly becomes clunky. Specifically, if different types of items have many unique fields then each form control needs it's own script rather than placing just two scripts on two separate pages that then list the controls unique to each item type.

As I began to explore a fix in the master branch, I realized my test scenario worked.  I confirmed in a local install that 6.4-QA3, and the 6.5-Stable tag fails.  Upgrading to a build with the latest code from the 'stable' branch (doesn't need to be the bleeding edge of master) allows the scenario to work.  My theory is that it's due to #419 or possibly #406 , either way, this doesn't look to be an issue anymore in the latest 6.5 Stable.


support customize traceId

our app has a unique traceId in the http header on every http api requiest,If the traceId can be sent to skywakling,we can trace the full request from our app to php, java,mysql,redis, etc.

Trace id is not the only thing we required.

This traceId may only apply to ELK


[BUG-python/deployment] Database connections using PostgreSQL are dropped causing errors

Describe the bug
For some unknown reason we have dropping database connections when working with Argilla. This is causing that if the user is in the middle of a records bulk creation for a dataset the database can end in a corrupted state.
One example of such error is the following:

Possible related issue: https://github.com/argilla-io/argilla/issues/4288
This issue is only happening on Argilla environments using PostgreSQL (PRE/DEV/DEMO).
Expected behavior
PostgreSQL pool of connections are maintained and not dropped inconsistently.

I'm gonna close this one.
Looks like the issue was solved by a change made by @gabrielmbmb on https://github.com/argilla-io/argilla-cloud-deployments/pull/30


implement inertiaZoom in aggregator

implement of smooth zoom with mouse wheel in #11061 and #4537

Thanks for the pull request @jiangheng90!

:heavy_check_mark: Signed CLA found.
: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.

:grey_question: Unit tests were not updated.

Make sure you've updated tests to reflect your changes, added tests for any new code, and ran the code coverage tool.

Reviewers, don't forget to make sure that:

[ ] Cesium Viewer works.
[ ] Works in 2D/CV.

Hi @jiangheng90, thanks for the PR! Do you still have interest in contributing this?

Hi @jiangheng90, thanks for the PR! Do you still have interest in contributing this?

Yes, But After I finish test, it has performance problem on pickGlobe. so I'm not sure is this the reason inertiaZoom has not been support for so many years.

Hi @jiangheng90, thanks for the PR! Do you still have interest in contributing this?

@ggetz

Yes, But After I finish test, I found it has performance problem on pickGlobe. So I'm not sure is this the reason inertiaZoom has not been support for so many years.

Ah, good point. https://github.com/CesiumGS/cesium/issues/8481, right? Can you explain how you tested performance and what your results were? I wonder if we can make any optimizations to skip successive picks.

Yes, But After I finish test, I found it has performance problem on pickGlobe. So I'm not sure is this the reason inertiaZoom has not been support for so many years.

Ah, good point. #8481, right? Can you explain how you tested performance and what your results were? I wonder if we can make any optimizations to skip successive picks.

@ggetz
I‘m not sure my explain will be accurate.
First of all, my test environment:
i9-10900k  RTX-3070 at 3160 * 2160 resolution
i7-4700k    Quadro K2000 at 1920 * 1080 resolution
test in emply globe, with default ion Imagery, no terrain.
at 1080p environment the fps will drop down to 30 with frequently zoom in and zoom out
at 2160p environment it will be fine at 60fps
test with Aerometrex San Francisco 3dtiles(almost cached), cesium terrain, with default ion Imagery
at 2160p environment it will be drop to 38-52 with frequently zoom in and zoom out
after that I have make a performance trace on zoom in and zomm out

we can see execute time of readPixel in zoom3D is very hgh

@ggetz after I do test again this morning to describle the issue. I found the pickGlobe in zoom3D may reduce call by use pick result last frame

Thanks @jiangheng90! I'll do a  review on this PR tomorrow.

Thanks @jiangheng90! I'll do a review on this PR tomorrow.

👌

Thanks @jiangheng90! I'm happy with the performance numbers. The zoom behavior on trackpad and touch screen also appear to be consistant with the old behavior, which is good.
My one concern while trying this out was that it seemed to zoom very fast now that intertia is in place with the scroll wheel. What do you think about halfing the delta value we get from the mouse wheel event? https://github.com/CesiumGS/cesium/blob/main/packages/engine/Source/Core/ScreenSpaceEventHandler.js#L424-L438

Thanks @jiangheng90! I'm happy with the performance numbers. The zoom behavior on trackpad and touch screen also appear to be consistant with the old behavior, which is good.
My one concern while trying this out was that it seemed to zoom very fast now that intertia is in place with the scroll wheel. What do you think about halfing the delta value we get from the mouse wheel event? https://github.com/CesiumGS/cesium/blob/main/packages/engine/Source/Core/ScreenSpaceEventHandler.js#L424-L438

@ggetz  I have already halfing delta value by calculate the arcLength

@ggetz already remove TODO comment.

@ggetz this pr going to continue or paused?

Sorry for the delay @jiangheng90! I didn't realize my comment on zoom speed had been addressed. Thank you!
We would like to get this merged. However, one thing I notice here is that the camera gets "jumpy" and is no longer smooth once it approaches the ellipsoid surface. You can reproduce this by zooming straight into the ground when terrain is disabled.
Since the building dataset is technically below the ellipsoid surface as well, I find this easy to reproduce in the San Fransisco example after clicking "Pier 39" and zooming into the building.
I think we may need to adjust the behavior here when close to the surface. Perhaps we fall back to the previous behavior in that case.

@ggetz I think this is caused by disable pickGlobe when camera approaches height 0. the distance will across 0 and previouse result for calculate distance  maybe incorrect. so in a very low height. I reopen pickGlobe  in a height above -50 and below 50

And I think test failure is from the server error

Thanks @jiangheng90! The behavior here is looking fantastic.
I've also restarted CI, and the tests have passed.
Thank you again for your patience here. This is a great fix to get in.


Reserving "nobreak" as a keyword for Rust Edition 2021

The reason I'm opening this issue is that there has been some activity on the old issues, regarding returning values with break from for and while loops:

https://github.com/rust-lang/rfcs/issues/961
https://github.com/rust-lang/rfcs/issues/1767

Rereading those threads, the main issues why those were originally closed seem to be:

else being a confusing name for this block
not being able to add a new keyword that makes the meaning of the block clear
there was no experience with the loop version of the break <value> syntax

Number 1 is still valid (although some disagree). 3 is not valid anymore, this feature was stabilized more than 4 years ago in 2017. Number 2 seems much less of a problem these days, since we now have editions (which we didn't have when these original issues were opened).
That's why I'm proposing to reserve nobreak as a keyword in Rust Edition 2021. That way we at can add this feature in the future, using a clear keyword.
I think nobreak clearly shows the meaning of the block. It's the block that you enter when there was no break. Code would then look like this:
let found_six = for val in [1, 4, 3, 2] {
    if val == 6 {
        break true;
    }
} nobreak {
    false
}

I'm going to close this because based on https://github.com/rust-lang/rfcs/pull/2441#issuecomment-395256368, lang has decided not to do speculative reservations of specific keywords any more.
The new plan is to generally reserve space with https://github.com/rust-lang/rfcs/pull/3101, and use that reserved space as a transition plan (perhaps via something like https://github.com/rust-lang/rfcs/pull/3098) to allow the feature to be used on the latest edition with slightly-inferior syntax until the keyword can be fully reserved in a future one, after the RFC for the whole feature has been accepted.
(Note that this is neither a statement in opposition nor in support of the feature.  Just that the way forward is to RFC the whole feature, including the eventual keyword -- not to separate out the keyword first.)


Automated cherry pick of #5136: regiondrivers: kvm: dummy impl for RequestDeleteVpc

Cherry pick of #5136 on release/3.1.
#5136: regiondrivers: kvm: dummy impl for RequestDeleteVpc

Codecov Report

:exclamation: No coverage uploaded for pull request base (release/3.1@4b6d010). Click here to learn what that means.
The diff coverage is n/a.

@@              Coverage Diff              @@
##             release/3.1   #5137   +/-   ##
=============================================
  Coverage               ?   6.74%
=============================================
  Files                  ?     545
  Lines                  ?   95277
  Branches               ?       0
=============================================
  Hits                   ?    6431
  Misses                 ?   88307
  Partials               ?     539

Flag
Coverage Δ

#aFlag
6.74% <ø> (?)

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 4b6d010...c65e1e0. Read the comment docs.

/lgtm

/approve


Fix broken links to tilejson-spec in readme

Coverage remained the same at 97.5% when pulling 5f9f1e69e08a17a3a9557d591ce0f308aa4506fb on JasonSanford:master into 5d11669604161d18fd402f2387fa9be183e88c88 on mapbox:master.

:+1: thanks!


Update Eden verison to 0.9.13 and set debug log level for eden test workflows

Update the eden test workflows to 0.9.13 and use the new feature to set the EVE log level to debug. This will allow us to get more information from EVE for debugging failed tests.

track record, this will bring https://github.com/lf-edge/eden/pull/1041 with it.


sql解析错误！must be an aggregate expression or appear in GROUP BY clause

Steps to reproduce the behavior (Required)
1、sql:SELECT
ourwaybidw_retail_yy.d_dept.fname AS fname,
-- YEAR ( DATE_ADD( f_sale.fdate, INTERVAL - 1 MONTH ) ) AS 上月famount_ow_the_year,
YEAR ( DATE_ADD( f_sale.fdate, INTERVAL - 1 YEAR ) )  AS 上年出库数量_ow_the_year,
Sum( ourwaybidw_retail_yy.f_sale.famount ) AS famount
FROM
ourwaybidw_retail_yy.f_sale
INNER JOIN ourwaybidw_retail_yy.d_dept ON ourwaybidw_retail_yy.f_sale.fdeptid = ourwaybidw_retail_yy.d_dept.fdeptid
GROUP BY
ourwaybidw_retail_yy.d_dept.fname,
-- YEAR ( DATE_ADD( f_sale.fdate, INTERVAL - 1 MONTH ) ),
YEAR ( DATE_ADD( f_sale.fdate, INTERVAL - 1 YEAR ) )

可以正常执行
2、sql:SELECT
ourwaybidw_retail_yy.d_dept.fname AS fname,
YEAR ( DATE_ADD( f_sale.fdate, INTERVAL - 1 MONTH ) ) AS 上月famount_ow_the_year,
YEAR ( DATE_ADD( f_sale.fdate, INTERVAL - 1 YEAR ) )  AS 上年出库数量_ow_the_year,
Sum( ourwaybidw_retail_yy.f_sale.famount ) AS famount
FROM
ourwaybidw_retail_yy.f_sale
INNER JOIN ourwaybidw_retail_yy.d_dept ON ourwaybidw_retail_yy.f_sale.fdeptid = ourwaybidw_retail_yy.d_dept.fdeptid
GROUP BY
ourwaybidw_retail_yy.d_dept.fname,
YEAR ( DATE_ADD( f_sale.fdate, INTERVAL - 1 MONTH ) ),
YEAR ( DATE_ADD( f_sale.fdate, INTERVAL - 1 YEAR ) )
不可以正常执行，报must be an aggregate expression or appear in GROUP BY clause

Expected behavior (Required)
Real behavior (Required)
StarRocks version (Required)
2.0

You can get the StarRocks version by executing SQL select current_version()

you could set enable_groupby_use_output_alias = true


feat: Access active format in frame processor plugin

What
This PR adds the active camera format (AVCaptureDevice.Format) to the Frame class so that properties such as camera FOV can be accessed in the frame processor plugin callback. This is especially useful for advanced image processing tasks such as integration with ARCore https://developers.google.com/ar/develop/ios/augmented-faces/developer-guide#initialize_an_augmented_faces_session 👀

Changes

Adds cameraFormat property to Frame class
Passes the active format into the frame processor plugin during captureOutput

Tested on

iPhone 13 Pro

Related issues

Todo

[x] iOS Implementation
[ ] Android Implementation

btw it's nullable in Swift but non-nullable in ObjC

Hey - closing this because it's 1. on an old branch and 2. I think I have a better idea; I could expose a onFormatSelected callback to the Camera that gets called everytime the underlying Format changes.
Not sure if that's easy on Android though.


end event no fire in readableStreambuffer

pngStream = new ReadableStreamBuffer
    pngStream.put buffer
    pngStream.on 'data', (chunk)->
      console.log chunk

    pngStream.on 'end', ()->
      console.log 'end'

    pngStream.on 'close', ->
      console.log 'close'

event end and close handler not called

@Maxim-Chugaev yep - the ReadableStreamBuffer will stay open until you call destroySoon() on it. This is documented in the README :)


RFC: Change to tui::widgets::canvas::Context::print()

Problem
ctx.print() doesn't support dynamic strings.
error[E0597]: `name` does not live long enough
   --> examples/radar.rs:144:60
    |
121 |             .draw(|f| {
    |                   --- value captured here
...
144 |                                 ctx.print(lat + 5.0, long, name.as_str(), Color::White);
    |                                 ---------------------------^^^^------------------------
    |                                 |                          |
    |                                 |                          borrowed value does not live long enough
    |                                 argument requires that `name` is borrowed for `'static`
...
168 | }
    | - `name` dropped here while still borrowed

Solution
This wouldn't support backward compatibility, but I would support the following change:
- fn print(&mut self, x: f64, y: f64, text: &'a str, color: Color)
+ fn print(&mut self, x: f64, y: f64, text: &str, color: Color)

Alternatives
Additional context
Related: reddit

I don't see how the proposed change solve the issue as it won't compile. However, I believe your issue can be fixed if we replace &str, Color with text::Spans which can be built from String.

Just confirming that did fix my usage. Thanks.


ClusterLoader2:  podStartupLatency may not correct

What happened:
now CL2 use pod binding eventTime as pod scheduled timestamp, and use pod container status startAt as pod running timestamp，see following two graph,  and we see that running time is early than schedule time, because of event time use metav1.MicroTime(use RFC3339Micro), and startAt use metav1.Time(use time.RFC3339), it influence performace test results.

@mborsz @mm4tt
What you expected to happen:
How to reproduce it (as minimally and precisely as possible):
use kubemark cluster, and run performance test
Anything else we need to know?:
Environment:

Kubernetes version (use kubectl version):
Cloud provider or hardware configuration:
OS (e.g: cat /etc/os-release):
Kernel (e.g. uname -a):
Install tools:
Network plugin and version (if this is a network-related bug):
Others:

See: https://github.com/kubernetes/perf-tests/issues/1468


docs(egress): fixed egress usage info

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


Demonstrate moving committed blobs from DEX Storage Account to EDAV storage account

Task Goals

Demo bulk uploading files via a tus client and show the completed upload in the EDAV storage account.
Demo combining tus payload and info files into single blob file with metadata attached
Demo routing program files into new blob containers in DeX from the program ID metadata
Demo copying files from DeX program containers to EDAV program containers.  The routing of blob container names in DeX containers should be 1:1 with the program ID and show up under the same container name in EDAV.

Flow Overview
DeX storage -> Upload event -> Function App combines payload/metadata into single file and copies to new DeX container under program name (routing) -> Blob file copied to EDAV storage
Demo Process

Program A uploads to tus
Upload completes and shows up in the catch-all single blob container of the DeX storage account
Routing event is triggered from the upload completions
Function app receives upload event and does the routing to a new DeX container based on program ID.  Function app combines the tus payload file with the .info file.
Azure object replication copies the file from program A container in DeX storage account to program A container in EDAV storage account
Success!

Infrastructure Setup Steps

Create an Azure Event Grid System Topic:

Topic Types: Storage Accounts (Blob & GPv2)
Subscription: OCIO-EDEDEV-C1
Resource Group: ocio-ede-dev-moderate-hl7-rg
Resource: dataexchangedev
Name: bulk-file-uploaded-topic
Location: eastus

Create an Azure Function App:

Subscription: OCIO-EDEDEV-C1
Resource Group: ocio-ede-dev-moderate-hl7-rg
Function App Name: ocio-ede-dev-bulk-file-upload-processor
Publish: Code
Runtime stack: .NET
Version: 6
Region: East US
Operating System: Windows
Plan type: Consumption (Serverless)

Create an app function within the newly created ocio-ede-dev-bulk-file-upload-processor function app.

Note this function app was created by Visual Studio automatically.  Be sure to map the step below to the correct Function name you use in the code.
e.g. BulkFileUploadFunction

Inside the newly created bulk-file-uploaded-topic, create an Event Subscription:

Name: bulk-file-uploaded-event
Event Schema: Event Grid Schema
Topic Type: Storage account
Source Resource: dataexchangedev
Topic Name: bulk-file-uploaded-topic
Filter to Event Types: Blob Created
Subject Filters:

[x] Enable subject filtering

Subject Begins With: /blobServices/default/containers/bulkuploads
Advanced Filters:

Key: subject
Operator: String does not contain
Value: .info

This advanced filter makes it so only the payload file triggers the event, not the .info files.

Endpoint Type: Azure Function
Endpoint: Select an endpoint (enter the following)

Subscription: OCIO-EDEDEV-C1
Resource Group: ocio-ede-dev-moderate-hl7-rg
Function app: ocio-ede-dev-bulk-file-upload-processor
Slot: Production
Function: BulkFileUploadFunction


Possibly incorrect examples for content attachments / content references

What article on docs.github.com is affected?
https://docs.github.com/en/rest/reference/apps#create-a-content-attachment
What part(s) of the article would you like to see updated?
We have a GitHub App that creates content attachments and we received an email that the content_references URL path was changing to have the repository owner and repository name prefixed to it:
https://api.github.com/content_references/1512/attachments

becomes

https://api.github.com/OWNER/REPOSITORY/content_references/1512/attachments

The examples in the article appear to have been updated that way. However when I tried to update our app, I was receiving 404s. My colleague had a hunch and it began working again when we added the prefix /repos/ before the owner/repo part (e.g. https://api.github.com/repos/OWNER/REPOSITORY/content_references/1512/attachments)
Does that article possibly need to be corrected to have that prefix in the URLs?

Thanks for opening an issue @dtakahas! I'll triage this for the team to take a look 👀

Thanks for noticing and reporting this, @dtakahas 🙇♂
Yep, you are correct; this was an error with that recent update 🙁.  It has been fixed internally, and the docs have recently been updated: https://docs.github.com/en/rest/reference/apps#create-a-content-attachment


Add transform to tap-to-edit address

Tap to edit was missing a transform option for type="address". Formatted to display with no additional whitespace or commas if information is missing.

closes #122

LGTM with the changes above!


Add support for onDidDispose event in NotebookCommunication

Would be good to enable this:
    /**
     * Communication object passed to the {@link NotebookContentProvider} and
     * {@link NotebookOutputRenderer} to communicate with the webview.
     */
    export interface NotebookCommunication {

        // @rebornix
        // readonly onDidDispose: Event<void>;
    }

Today its possible user has opened a notebook multiple times, and Jupyter extension ends up creating a lot of event handlers (tracking messages that needs to be dispatched to each view for ipywidgets) & the like for each of these.
If a user closes a split view, it would be good to clear the associated resources.
@rebornix /cc

This will be replaced by NotebookController.

Yes - the communication is now bound to the notebook controller and its lifecycle. It's extensions that control that.

@DonJayamanne please keep me updated how the new API works for you and if this is still a desire

please keep me updated how the new API works for you and if this is still a desire

Working on this today, after taking a whole week off Notebooks.
Will be hooking up IPyWidgets with the new push model.
Closing this issue as we'll be moving to the new API.
Thanks


[5.7] Watch for changes to compile_commands.json and compile_flags.txt

Cherry-pick https://github.com/apple/sourcekit-lsp/pull/487 to release/5.7

Similar to how we reload the package if Package.swift is changed, we also watch compilation_database.json and compile_flags.txt and notify the build system delegate that build settings changed if these files are modified.
rdar://92388223  [#486]

@swift-ci Please test


Disable flaky test on firefox

This reverts commit 49a54cfc93947a313427f6aa39512c644c9ae001.

Hmm, did this pass the npm run commitlint check? The commit message does not seem to follow the format we require (which allows to auto-generate the changelog + release notes + figure out the next release version number).

Hmm, interesting. It might have been a problem with the auto merge. I enabled it last week and made sure that the commit message matches the lint but I renamed the cl afterwards which probably changed it again.
Not sure how to proceed in this case - what do you recommend?

Fixed via force-push

Thanks!


PARQUET-558: Add zsh support to build script

+1. if we end up writing a lot more bash/zsh compatibility code we can perhaps factor some of this out into utility modules


upgrade to ember 3.22

  - stack: TypeError: Cannot read property 'uglify' of undefined
  at Class.included (C:\work\ember\a\node_modules\ember-cli-terser\index.js:38:96)

    if ('ember-cli-uglify' in app.options) {
      this.ui.writeWarnLine('[ember-cli-terser] Passing options as `ember-cli-uglify` in `ember-cli-build.js` is deprecated, please update to passing `ember-cli-terser` (with a `terser` property) instead.');

      addonOptions = Object.assign({}, app.options['ember-cli-uglify'], { terser: addonOptions.uglify, uglify: undefined });
    }

and WARN not shows in console.
fix this by editing ember-cli-build.js

Sorry about that @yaxinr! Should be fixed in 4.0.1 (just released).


CLOUDSTACK-8716: Verify creation of snapshot from volume when the task is performed repeatedly in zone wide primary Storage

On VMWare with a Zone wide primary storage and more than two clusters verify successful creation of snapshot multiple times.

Updated testcase:
-Removed redundant code
-Added validate_list function for list snapshot operation

can you update test results ?

@pritisarap12 Please squash the commits, they have the same titles which is confusing. If you need multiple commits, make sure they have a descriptive first line. Thanks!

Test result:
Test multiple volume snapshot in zwps ... === TestName: test_01_multiple_snapshot_in_zwps | Status : SUCCESS ===
ok

Ran 1 test in 2291.172s
OK

@nitt10prashant Can you please review this PR again?

LGTM

LGTM


Update CONTRIBUTING.md link

The CONTRIBUTING.md file was moved to .github/ : https://github.com/iBotPeaches/Apktool/commit/a7535f36d93893bd422169775610b52fc4db7b75

thanks!


TracingHandler should be extracted from middleware project

TracingHandler doesn't have a dependency on asp.net core and it's sad to depend on asp.net core when you only want the tracing handler.
It should be moved out of middleware

And TracingLogger too.

TracingLogger is bound to Microsoft.Extensions.Logging, thus adding a dependency in zipkin4net.


Evaluate Google sign in and implement

Exploring Google Sign-in feature and deciding the optimal method to incorporate sign-in with Google.

Implemented Google OAuth Sign-in feature with user session and data management features.
Commit link here


Support non-base64 encoded secret

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

8 of 10 (80.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.02%) to 68.967%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

internal/helm/registry/auth.go
8
10
80.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.02%

Covered Lines:
1749

Relevant Lines:
2536

💛  - Coveralls

Could you pls run a go fmt/make fmt on this one? otherwise lgtm.

sorry for that, done

Thanks for raising this 🙏🏻


New Textobj: item in list seperated with "," or similar

Textobj requested
Select item in a list of items separated with , . Although treesitter parsers already do this for code (#58) via the in argument mechanic nvim-treesitter-textobjects, it would be useful to have it for lists in pure text, e.g.
This is a list of items in: rst, md, txt, text, mail files.

Also could come in handy for comments in code scripts that list stuff.
The syntax would be i<separator> for inner and a<separator> for outer. Here <separator> can be ,, ;, ...
Inner/Outer Difference
In it's simplest use-case - inner i, would not take the separator, and around a, would e.g. if your cursor is on text then:
This is a list of items in: rst, md, txt, text, mail files.
                                          |--| inner
                                outer   |----|

Edge cases would be the first element:

the right bound is the ,
the left bound:

if there is a : or - starting the list than it is taken as a bound of the first item,
if not then the first item could be a single word.

And for the last element:

the right bound is the .
the left bound:

the and if there is one
the previous ,

Vimscript plugin already implementing the textobj
https://github.com/wellle/targets.vim
Filetypes
all
Checklist

[X] The textobj would be useful to more users than just me.
[X] There is no lua plugin already implementing the textobj in an adequate manner.
[X] I read the docs and there is no such textobj already.

Bump 🙏


AE 2025 Compatibility

Hey there,
It appears that any extension panel built with the boilerplate does not start up at all when launching in AE 2025, steps to reproduce:

Create a new demo extension with the boilderplate (I used Vue)
Build the extension
Run it via Window > Extensions
Nothing happens, no panel opens, no errors

Perhaps it's related to a passing bug that Adobe may resolve soon? Otherwise may be worth looking at, as I do see that other extensions run correctly.
Thanks!
Steve

I had the same issue, after updating AE to the 2025 version. It seems that there's an update in the App data generated by adobe, from CSXS.11 to CSXS.12. After running this command (on Mac) the issue was gone
defaults write /Users/<username>/Library/Preferences/com.adobe.CSXS.12.plist PlayerDebugMode 1

@Jorgenious Ah I see, thanks!
On Windows I see it's a case of opening regedit and adding PlayerDebugMode with value 1 to Computer\HKEY_CURRENT_USER\Software\Adobe\CSXS.12


Use of VFD arguments

Hello,
I am trying to implement micro ros on a custom board based on the STM32L071C8T6 however I am running into this error:
Description	Resource	Path	Location	Type failed to merge target specific data of file /home/spencer/SoftwareSource/STM32Source/STM32L071C8T6-MicroRosDriver/micro_ros_stm32cubemx_utils/microros_static_library_ide/libmicroros/libmicroros.a(librcutils-allocator.c.obj)	STM32L071C8T6-MicroRosDriver		 	C/C++ Problem
Some googling lead me to several forum posts from users of various arm based micro controllers with the problem being related to the floating point abi flag being set to soft or hard however with the STM32L071C8T6 chip I cannot change to hard (there isnt a floating point unit so it uses software floats)

Could you check that when you build the library the flags reported with Found CFLAGS:... are ok?
Are you using CubeIDE or CubeMX?
Could you share a basic reproducible scenario?

Which compiler are you using in CubeIDE? Notice that the the micro-ROS library is being built using arm-none-eabi-gcc version available in Ubuntu 20.04.
Make sure that the compiler you are using is the same as this.
We are working on solving this limitation in order to be able to build micro-ROS with the same default compiler of CubeMX/IDE

the GNU tools for STM32 (9-2020-q2-update)
This is the options flag from cubeide
-mcpu=cortex-m0plus -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32L071xx -c -I../Core/Inc -I"/home/spencer/SoftwareSource/STM32Source/STM32L071C8T6-MicroRosDriver/micro_ros_stm32cubemx_utils/microros_static_library_ide/libmicroros/include" -I../Drivers/STM32L0xx_HAL_Driver/Inc -I../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32L0xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0 -Os -ffunction-sections -fdata-sections -Wall -fstack-usage --specs=nano.specs -mfloat-abi=soft -mthumb

I guess that compiler versions are not compatible.

I'm running into the same issue attempting to compile for an STM32G431 using humble.
To minimise chances of compiler mismatches, I'm using the same arm gcc within the docker image that was used to build the static library (10.3.1)

Using -mfloat-abi=hard results in failed to merge target specific data errors.
Using -mfloat-abi=soft results in Error: selected FPU does not support instruction -- vstmdbeq r0!,{s16-s31} errors.
Since this MCU has an FPU, I'd assume that hard is the preferred option, but am not sure where to look next in my troubleshooting.

When you build micro-ROS which build flags does the build system print?

Aha! Looks like it was not picking up the CFLAGS correctly from my Makefile; I've successfully compiled now.
The readme contained spaces not tabs in
print_cflags:
	@echo $(CFLAGS)

Which caused a missing separator error that was not visible during the static library generation.

Working now?


Flat File Support?

Will this CMS ever support flat file Database?
Similar to: https://github.com/getgrav/grav

@DanielSokil - ponzu uses boltDB, which is a flat file database.


[Extensions] Create dynamic configuration section in config.yml for extensions

For the initial experimental release of extensions, the security plugin needs to support a couple dynamic configuration options to support the issuance and verification of auth tokens. All configuration options should fall under a new key in the config.dynamic portion of the security plugin config.yml file. Below is an example of the dynamic configuration options.
config:
  dynamic:
    extensions:
      signing_key: <base64_encoded_signing_key>
      encryption_key: <base64_encoded_encryption_key>

The 2 configuration options above represent 2 initial options needed to support the auth token workflows, but this extensions: area of the config.yml file may be extended in the future with more dynamic configuration options.
The 2 settings above represent:

signing_key - This is a base64 encoded secret that will be used to create a JWK to sign the JWTs that are issued - by default the signing is done using symmetric encryption (HMAC SHA512). More configurable keys will be supported in the future, but the default is chosen for the experimental release.
encryption_key - This is another base64 encoded secret, but this will be utilized to encrypt sensitive information in the payload of the JWT.

signing_key and encryption_key are also utilized for an authentication backend to support these tokens issued by the security plugin and used to verify the tokens and decrypt the encrypted sections of the payload.
There are 2 java files around config in this codebase: ConfigV6 and ConfigV7. This change will only support OS >=2 so changes can be only applied into ConfigV7.

Why does an Admin need to be able to provide there own key?  What do you think about the security plugin manage the generation on its own, and supply an API to rotate the keys?
"Extensions needs this feature" doesn't translate to the feature name needs to include the work extensions.  To me this is the DelegatingAuthenticationBackend - but I'm happy to consider other names.

[Triage] This is part of the Extensions project.

Hi,
Are there any more decisions pending for this task? If not my understanding, for now, is that we want to add configuration from the example above and make sure it's loading correctly into ConfigV7 file. Is that correct?

Hi @MaciejMierzwa, sorry I did not reply earlier I was on vacation from Wednesday to Friday last week. The only remaining decision for this task is whether to name the new section of the config extensions or not. I think the section should be called extensions since the config values in this section of the config would be dynamic configuration values needed for extensions.
config.yml gets read at node startup and persisted into the security system index. Updates to this index are propagated to all the nodes in the cluster to refresh the security config.
i.e. If a cluster is using the internal users list, all internal users are stored in this index. If the cluster admin creates a new internal user what happens is that the security index is updated to add a new user into the users area of the configuration and all nodes are instructed to reload their configuration from the index.
Dynamic means settings that are changeable without a reboot opposed to settings defined in opensearch.yml which require a reboot. For instance there is no way to change a cluster name dynamically, that would require a reboot. For security settings, its not possible to turn off encryption (plugins.security.ssl.http.enabled) dynamically.

I agree on naming @cwperks. So far I have pushed my changes into: https://github.com/MaciejMierzwa/security/tree/extensions_config
After the naming convention is cleared up, I'll create PR to feature/extensions branch. Do we need to ping another team member to weigh in on the topic?

Closing this one as related PR has been merged.


Update to Envoy with zipkin

Jenkins job manager/presubmit passed

We need two more things to be done either as part of this PR or in a separate PR.
The zipkin integration tests that @ijsnellf has, needs to be enabled. Second, the YAML files that we have in our test suites, need to enable Zipkin (using the -zipkinserveraddress flag).
Separately, in the istio/istio repo, we need to enable zipkin in the proxy mesh config. [I can do that one]

jenkins rebuild manager/e2e-smoketest

jenkins rebuild manager/e2e-smoketest

jenkins rebuild manager/e2e-smoketest

Jenkins job manager/e2e-smoketest passed


The leaves are not dropping!

I have the default settings and there none leave drops.
I don´t know what to do.
Regards
Leon

Which leaf blocks are you looking at? Not all leaf blocks drop leaves.
Do the leaf blocks show up in under the Leaf Settings?

Ah and you need to set Particles to at least Minimal under video settings!

Ah yeah it was a diffrent modpack so, i noticed it was only default trees falling leaves.

Modded trees should work too!
You are probably looking at "conifer trees", basically needle trees like spruce, hemlock, redwood, cypress etc.
We decided that those trees don't drop leaves by default because they don't do that in real life too.
If you want, you can enable leaves from conifer trees by going into the Falling Leaves Mod Menu settings and setting "Conifer Leaf Spawn Rate" to something non-zero.
There's also a small hand full of leaf blocks that have a leaf spawn rate of 0, like palms or shrubs, which you can also set to have a spawn rate greater than 0.
You can find a full list of all the conifer trees here and the list of trees with spawn rate 0 here.
Everything can be adjusted through Mod Menu or the fallingleaves.json config file.
If you find a tree that does not drop leaves even after you configured it, please give me the name so I can look at it.

Since it's been 11 days, I'm gonna close this issue for now.
If you are still having issues, simply add a reply or open a new issue.


Multiply tensor by value in keras

I have a short code like this:
    input = layers.Input(shape=(None, 1))
    net = input

    x = net
    net = layers.add([
        x,
        # (opt1)  net * K.variable(value=1.0, dtype='float32'),
        # (opt2) layers.multiply([K.variable(value=1.0, dtype='float32'), net]),
    ])

    net = layers.Conv1D(5, 3, padding="same")(net)
    return models.Model(inputs=[input], outputs=[net])

however I cannot seem to multiply tensor by scalar value and make a model out of it. In opt1 I get:
AttributeError: 'Tensor' object has no attribute '_keras_history'

and in opt2 I get:
  File "/home/lpp/Desktop/minion-basecaller/.venv/lib/python3.6/site-packages/keras/layers/merge.py", line 588, in multiply
    return Multiply(**kwargs)(inputs)
  File "/home/lpp/Desktop/minion-basecaller/.venv/lib/python3.6/site-packages/keras/engine/topology.py", line 594, in __call__
    self.build(input_shapes)
  File "/home/lpp/Desktop/minion-basecaller/.venv/lib/python3.6/site-packages/keras/layers/merge.py", line 74, in build
    batch_sizes = [s[0] for s in input_shape if s is not None]
  File "/home/lpp/Desktop/minion-basecaller/.venv/lib/python3.6/site-packages/keras/layers/merge.py", line 74, in <listcomp>
    batch_sizes = [s[0] for s in input_shape if s is not None]
IndexError: tuple index out of range

This looks like pretty simple things I'm having issues doing.

You would have to wrap to around a Lambda layer in order to perform that operation. Something along the lines of:
Lambda(lambda x: x * 1.0)(net) # you don't need K.variable for scalar multiplication

will give a Keras tensor that the model construction expects. Similarly, all tensor operations need to be wrapped around a Layer class of which Lambda also inherits.

Hmm, ok, but I need variable since it should be a trainable one. Do I need to take some extra consideration whether a variable is trainable or not?

Ok, I got it.
class ConstMultiplierLayer(Layer):
    def __init__(self, **kwargs):
        super(ConstMultiplierLayer, self).__init__(**kwargs)

    def build(self, input_shape):
        self.k = self.add_weight(
            name='k',
            shape=(),
            initializer='ones',
            dtype='float32',
            trainable=True,
        )
        super(ConstMultiplierLayer, self).build(input_shape)

    def call(self, x):
        return K.tf.multiply(self.k, x)

    def compute_output_shape(self, input_shape):
        return input_shape

I'm not sure though, how can I avoid being tf specific in call, but since I doubt I'll change to something else, that's fine

Just use Keras backend functions, in your case K.multiply()

AttributeError: module 'keras.backend' has no attribute 'multiply'

yeah, I checked the keras.backend and couldn't find anythings (dot seems related, but it looks not exactly what I'm looking for.
How do I combine other keras layer objects inside new layer?
So for example, I'm trying something like this:
class GatedConvResidual1D(Layer):
    """https://arxiv.org/abs/1612.08083
   """

    def __init__(self, kernel_size=3, **kwargs):
        self.kernel_size = kernel_size
        super().__init__(**kwargs)

    def build(self, input_shape):
        assert len(input_shape) == 3
        channels_in = input_shape[2]
        self.k = self.add_weight(
            name='k',
            shape=(),
            initializer='ones',
            dtype='float32',
            trainable=True,
        )
        self.residual = models.Sequential([
            layers.Conv1D(
                channels_in, kernel_size=self.kernel_size,
                activation='linear', batch_input_shape=input_shape),
            layers.BatchNormalization(),
            layers.Activation('relu'),
        ])
        self.residual.build(input_shape)
        super().build(input_shape)

    def call(self, x):
        return layers.add([
            x,
            K.multiply(self.k, self.residual(x)),
        ])

    def compute_output_shape(self, input_shape):
        return input_shape

crashes with already known:
AttributeError: 'Tensor' object has no attribute '_keras_shape'


Support PadOp on Linalg on tensors.

linalg.pad_tensor cannot be represented as a structured
operation. Instead it is lowered to
%b = linalg.fill(%dest, %pad_val)
%c = subtensor_insert %source into %b[%low_pad_0, %low_pad_1, ...]
This requires handling subtensor_insert when converting from tensors
to buffers. This can be done effectively only when it is possible to
do in-place updates within dispatch regions. Instead it can be lowered
to
%b = linalg.fill(%dest, %pad_val)
%c = flow.tensor.update %source, %b[%low_pad_0, %low_pad_1, ...]

This PR depends on the following MLIR patches
https://reviews.llvm.org/D97707
https://reviews.llvm.org/D97709
https://reviews.llvm.org/D97800
https://reviews.llvm.org/D97809


emails: Add server_uri to context in build_email.

Needed for serving images.

updated

Merged, thanks @rishig!


Deprecation Decorators

Changelog / Overview

Added two function decorators deprecated and deprecated_params as a consistent way of deprecating code.

Motivation
see #1372
Closes #1372
Explanation for Changes
Have a look at the docs...
Testing Status
Further Comments
Checklist

[x] I have read the Contributing Guidelines
[x] I have written a descriptive PR title (see top of PR template for examples)
[x] I have written a changelog entry for the PR or deem it unnecessary
[x] My new functions/classes either have a docstring or are private
[ ] My new functions/classes have tests added and (optional) examples in the docs
[x] My new documentation builds, looks correctly formatted, and adds no additional build warnings

Reviewer Checklist

[ ] The PR title is descriptive enough
[ ] The PR is labeled correctly
[ ] The changelog entry is completed if necessary
[ ] Newly added functions/classes either have a docstring or are private
[ ] Newly added functions/classes have tests added and (optional) examples in the docs
[ ] Newly added documentation builds, looks correctly formatted, and adds no additional build warnings

I think we should also add some tests demonstrating this feature to show that:

The expected warning message is outputted when attempting to use the deprecated class/method
The doc attribute has been updated accordingly

I think we should also add some tests demonstrating this feature to show that:
* The expected warning message is outputted when attempting to use the deprecated class/method

* The doc attribute has been updated accordingly

I agree, but does this need to be part of this already big PR? Also, I am quite new to python and haven't worked with pytest, maybe someone else might be a better candidate for this.

I think we should also add some tests demonstrating this feature to show that:
* The expected warning message is outputted when attempting to use the deprecated class/method

* The doc attribute has been updated accordingly

I agree, but does this need to be part of this already big PR? Also, I am quite new to python and haven't worked with pytest, maybe someone else might be a better candidate for this.

I can give it a shot; the tests will help finalize this PR faster and prove that the feature works as intended. Much of the changes comes from poetry.lock and documentation, so it shouldn't be a big problem.

I can give it a shot; the tests will help finalize this PR faster and prove that the feature works as intended. Much of the changes comes from poetry.lock and documentation, so it shouldn't be a big problem.

Can you work on my PR? I didn't know that was possible :D

I can give it a shot; the tests will help finalize this PR faster and prove that the feature works as intended. Much of the changes comes from poetry.lock and documentation, so it shouldn't be a big problem.

Can you work on my PR? I didn't know that was possible :D

I can move your changes to a separate PR and add the tests post-review.

I agree, but does this need to be part of this already big PR? Also, I am quite new to python and haven't worked with pytest, maybe someone else might be a better candidate for this.

Concerning this, this PR is not that big (only new important file), and this is the type of stuff that needs tests.
But don't worry, testing with pytest is very easy (there are plenty of example in the code base though). Feel free to ask for help :D

This is the type of stuff that needs tests.

What exactly would you want to test? Neither warning messages being send to the logger nor changes to the docstring are things one can easily test using unit tests, are they?
I can however add tests to the parameter redirection.

warning messages being send to the logger

You can test warning message using https://docs.pytest.org/en/stable/logging.html#caplog-fixture

changes to the docstring

It can be tested easily. Like getting __doc__ parameter from the function and asserting whether the expected one is returned.

This is the type of stuff that needs tests.

What exactly would you want to test? Neither warning messages being send to the logger nor changes to the docstring are things one can easily test using unit tests, are they?
I can however add tests to the parameter redirection.

Something like this:
@deprecated
class Foo:
    """This is a class to deprecate."""

    def __init__(self):
        pass

def test_deprecate_class(caplog):
    """Test the deprecation of a class."""
    f = Foo()
    assert len(caplog.record_tuples) == 1
    logger_name, level, message = caplog.record_tuples[0]
    assert (
        message
        == "The class Foo has been deprecated and may be removed in a later version."
    )

Your test is failing because you have the decorator defined incorrectly. Decorators only take one argument: The thing they're decorating, and they return a new object (typically a function). For decorators that take in arguments, they have to return a decorator that takes a single function as its input, like so:
def my_decorator(arg1, arg2):
    def real_decorator(func):
        def wrapper(*args, **kwargs):
            print(arg1, arg2)
            return func(*args, **kwargs)

        return wrapper

    return real_decorator

An example of this within our codebase is override_animate if you want a more tangible example.

Your test is failing because you have the decorator defined incorrectly. Decorators only take one argument: The thing they're decorating, and they return a new object (typically a function). For decorators that take in arguments, they have to return a decorator that takes a single function as its input, like so:
def my_decorator(arg1, arg2):
    def real_decorator(func):
        def wrapper(*args, **kwargs):
            print(arg1, arg2)
            return func(*args, **kwargs)

        return wrapper

    return real_decorator

An example of this within our codebase is override_animate if you want a more tangible example.

Hmm are you sure ? The decorator factory is correctly defined imo

Ah I see, I missed the
if func is None:
    return lambda func: deprecated(func, since, until, replacement, message)

lines. That's an interesting pattern. Nevermind me then

Since @AntonBallmaier has other large PRs to deal with, I'll be taking over this issue and implement the rest of the tests.

Your test is failing because you have the decorator defined incorrectly.

Actually its not. You can have a look at why the test is failing - I imported the module incorrectly.

Decorators only take one argument: The thing they're decorating, and they return a new object (typically a function). For decorators that take in arguments, they have to return a decorator that takes a single function as its input, like so:
def my_decorator(arg1, arg2):
    def real_decorator(func):
        def wrapper(*args, **kwargs):
            print(arg1, arg2)
            return func(*args, **kwargs)

        return wrapper

    return real_decorator

I know this basic decorator syntax. But it has big issues. Consider the following class using your decorator:
@mydecorator("Decorated ","Class")
class Foo()

The "class" Foo now actually is a function, it's __name__ is wrapper and it has lost it's information about the argument names and it's docstring. Therefor the documentation of Foo would completely break. I use the decorator package to build clean decorators. Also this allows me to reduce the nesting and closures to get better readable code. If however you are used to the "classic" way of creating decorators it might be a bit irritating to see this code at first.

My first second and third iteration look actually quite similar to this and I was shocked to see the docs break :sweat_smile:

Oh it's not done yet, can we convert this to a draft?

I have just noticed that I need to handle classes without doc string explicitly.

I have just noticed that I need to handle classes without doc string explicitly.

Looks like we discovered the same thing around the same time.