Use the custom memcpy for realloc.

This wraps our memcpy with some assumptions that let the optimiser know
that we're copying chunks that are strongly aligned.  With clang 13 on
x86, this generates three variants:

A special case for 16 bytes that's a single vector load + store.
A vector-copy loop for sizes <512 bytes.
rep movsb for larger sizes.

This is almost certainly faster than the platform memcpy (if for no
other reason than that it doesn't have to care about handling unaligned
copies).
I don't know if it will show up in benchmarks, but if it does then it
Fixes #154

@nwf, the memcpy is currently incorrect for CHERI.  It's probably worth tweaking the default one for any platform where the AAL says that it's CHERI and a specialising it for Morello...

So running some of my usual benchmarks does not show any statistically significant difference.   I am still happy to take this. I wonder if it makes sense to have a micro-benchmark to test a collection of reallocs to see if this is a win in an artificial scenario.

If it isn't a bottleneck then it's probably not worth the code size increase.  It's small but a lot of small things add up.

If it isn't a bottleneck then it's probably not worth the code size increase. It's small but a lot of small things add up.

I'll close, we can always revisit.


Unexpected ESLint error "Newline required at end of file but not found."

Hi!
I run the plato with this command:
plato -r -d report -e .eslintrc src

In the .eslintrc I have this rule:
"eol-last": 2,

And ESLInt passes on all files in the codebase when I run it manually. But nearly every file in the plato report is marked with the "Newline required at end of file but not found." error:

And here is a screenshot of the same file from IDE:

How exactly does Plato run ESLint? How is it possible that results are diffrent from the manual running for the same config?
Thanks in advance!

This seems like a bug.
Here is how the source file is read before being inspected by eslint:
var source = fs.readFileSync(file).toString().trim();

Thanks for the response, @JSlain! Any ideas how we can fix it?
Also, in the first message I said "nearly every file", but I checked them again, and found that ESLint was disabled for the files without the error. So actually the problem exists in every file.

It's not Windows related.
Il'd replace (in lib/plato.js // line 103):
        var source = fs.readFileSync(file).toString().trim();
        if (!source) {
          log.info('Not parsing empty file "%s"', file);
          return;
        }

with:
        var source = fs.readFileSync(file).toString();
        if (!source.trim()) {
          log.info('Not parsing empty file "%s"', file);
          return;
        }

I'll make a pull request when i have time

Until @JSlain 's PR is integrated (has Plato found a maintainer?) I'm working around it by using his other workaround for how Plato loads the configs
var config = new CLIEngine().getConfigForFile(yourFile);
and following it with
config.rules['eol-last'] = 0;
since we run the CLI linter anyway which should catch missing newlines.
Really hope someone with some time picks up this project. JSlain have you found a good replacement for this sort of analysis?

Not really. we run our analysis tools in Jenkins, and uses checkstyle reporter to show eslint results.
I didn't fix that bug for a personal purpose, this wasn't really an issue for me.


Support starknet 0.12

Rpc version 0.4.0-rc0 has just been released, we should work towards supporting it (it hits integration in ~2 weeks)
https://github.com/starkware-libs/starknet-specs/tree/v0.4.0-rc0
Let's also check if there are other (non rpc-specific things) that's changed in this release and support them.

meanwhile rc-1 came out, please check it out :)


Export as filter_box as CSV

A clear and concise description of what the bug is.
Expected results
an Export of corrent Filters as csv
Actual results
I get the follow messeges
Sorry, something went wrong
500 - Internal Server Error
Stacktrace
    Traceback (most recent call last):

File "/home/hgs/venv/lib/python3.6/site-packages/flask/app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "/home/hgs/venv/lib/python3.6/site-packages/flask/app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/hgs/venv/lib/python3.6/site-packages/flask/app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/hgs/venv/lib/python3.6/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/home/hgs/venv/lib/python3.6/site-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "/home/hgs/venv/lib/python3.6/site-packages/flask/app.py", line 1598, in dispatch_request
return self.view_functionsrule.endpoint
File "/home/hgs/venv/lib/python3.6/site-packages/superset/models/core.py", line 1017, in wrapper
value = f(*args, **kwargs)
File "/home/hgs/venv/lib/python3.6/site-packages/flask_appbuilder/security/decorators.py", line 168, in wraps
return f(self, *args, **kwargs)
File "/home/hgs/venv/lib/python3.6/site-packages/superset/views/core.py", line 1246, in explore_json
samples=samples,
File "/home/hgs/venv/lib/python3.6/site-packages/superset/views/core.py", line 1134, in generate_json
viz_obj.get_csv(),
File "/home/hgs/venv/lib/python3.6/site-packages/superset/viz.py", line 481, in get_csv
include_index = not isinstance(df.index, pd.RangeIndex)
AttributeError: 'NoneType' object has no attribute 'index'
Screenshots
If applicable, add screenshots to help explain your problem.
How to reproduce the bug

Go to a Dashboard with filter_box
Click on expoart as csv

Environment
(please complete the following information):

superset version: 0.28.1
python version:  3.6.8
node.js version: v8.10.0
npm version: 3.5.2

Checklist
Make sure these boxes are checked before submitting your issue - thank you!

[ ] I have checked the superset logs for python stacktraces and included it here as text if there are any.
[x] I have reproduced the issue with at least the latest released version of superset.
[x] I have checked the issue tracker for the same issue and I have found one closed similar.

Additional context
Add any other context about the problem here.

Have you managed to implement time date filter in filter box?

It is the original filter box of the World Bank Demo.


Cache always missed if package has dependencies inside package.json

What version of Turborepo are you using?
latest
What package manager are you using / does the bug impact?
pnpm
What operating system are you using?
Linux
Describe the Bug
I have monorepo that contains structure like
apps/*
packages/*
package.json
All my dependencies were in package.json on root level and nothing inside apps or packages (almost, apps has nohoist packages).
With that setup caching worked very well.
example in package/template I am running task  that creates directory .sveltekit and if that's not present to run it again so in config I have, and job is turbo run prepare:template --filter=@corp/template
"prepare:template": {
      "outputs": [".svelte-kit/**"]
    },

But now I needed to add dependencies inside some of the packages/components/package.json, which caused pnpm install to create node_modules dir inside packages/components
And since that happened all jobs are getting cache miss. Regardless of which  filter I use.
Expected Behavior
Cache to works regardless of dependencies inside packages
To Reproduce
Described above

Sorry to tag you @tknickman  but any chance I can get some guidance here ?  How to debug what is changing hash ?

Just tested 1.5.5 and all seems to be working fine


fix(atomic): fixed atomic-insight-refine-modal open animation

https://coveord.atlassian.net/browse/KIT-2009
Prior to this PR, the animation was fullscreen when the modal was opened for the first time. This was because the modal was initially rendered without knowing the dimensions of the insight interface.
Another change I made in this PR was to remove a redundant event that was used to find out the size of the insight interface. It's not necessary since we already have the bindings.

@btaillon I think this also fixes https://coveord.atlassian.net/browse/KIT-2004


Reduce memory consumption for state exports

Closes: #XXX
What is the purpose of the change
We've recently been hitting memory consumption issues with state exports, as we maintain several caches during state export. (IAVL internal cache, a second IAVL cache within the SDK, CacheKV cache, exported values, JSON marshal overhead)
This eliminates the CacheKV cache which is itself some degree of memory amplification over the size of all state, thus hopefully meaningfully lowering our overall memory consumption. We need some more profiling to know for sure where the highest time/RAM overhead is.
This still needs to be sanity tested for correctness, and that it actually speeds things up.
There are other actions we can do to reduce the overall RAM overhead. Will try to make an issue outlining this.
Brief Changelog
Make state export not use CacheKV
Testing and Verifying
I plan to manually verify by getting a state export from a node with and without this, and check sha-sum being the same (post sorting)
Documentation and Release Note

Does this pull request introduce a new feature or user-facing behavior changes? yes
Is a relevant changelog entry added to the Unreleased section in CHANGELOG.md? TODO
How is the feature or change documented? N/A

great! is it ready to be tested?

Yeah it is ready for testing! Just has to be cherry-picked onto a node with the respective version


script: better database initialization

BETTER Adds support for database initialization when using
PostgreSQL.

Signed-off-by: Leonardo Rossi<EMAIL_ADDRESS>Reviewed-by: Jiri Kuncar<EMAIL_ADDRESS>

Merged to master.


[DateTimePicker] Cancel button doesn't work on mobile

Duplicates

[X] I have searched the existing issues

Latest version

[X] I have tested the latest version

Current behavior 😯
Changes are not canceled when the CANCEL button is pressed.
Selecting a date will fire onChange, and the date will be updated.
It has already been fixed in the DatePicker variant ( #30731 )
Expected behavior 🤔
Make the firing timing of onChange only when the OK button is pressed.
Steps to reproduce 🕹
Steps:
It can be simply reproduced even in the component demo

visit https://mui.com/components/date-time-picker/#responsiveness
change the date in the top field
hit 'cancel'
the date will still update

Context 🔦
No response
Your environment 🌎
No response

Also, the onAccept event handler is called even if cancel is pressed: https://codesandbox.io/embed/responsivedatepickers-material-demo-forked-x2vgu1?fontsize=14&hidenavigation=1&theme=dark
This is on the MobileDateTimePicker component


Code length should be aligned left

Current behavior
Code length is centered, and out of alignment.

Expected Behavior
Code length should be aligned to the left.

@dawnho I would like to work on this issue, please assign it to me.


Object::set_script on owner is UB

On the Godot side, Object::set_script immediately frees the script instance, causing self to point to garbage for the rest of the function. Any operations on self is consequently UB because of the invalid state. This is problematic because it's expected that owner is an unsafe pointer, but not self, which should be a safe reference.
set_script is incidentally marked unsafe, but only because Object is not reference counted, so it may still come as a surprise to users who call it, because the unsafe keyword may be used so liberally that it no longer makes users alert.
Take this modified hello_world example that showcase the problem:
#[macro_use]
extern crate gdnative;

#[derive(gdnative::NativeClass)]
#[inherit(gdnative::Node)]
struct HelloWorld(i64);

#[gdnative::methods]
impl HelloWorld {
    fn _init(_owner: gdnative::Node) -> Self {
        HelloWorld(42)
    }

    #[export]
    fn _ready(&self, mut owner: gdnative::Node) {
        unsafe {
            owner.set_script(None);
        }
        assert_eq!(42, self.0, "self should not be holding garbage");
        godot_print!("hello, world.")
    }
}

fn init(handle: gdnative::init::InitHandle) {
    handle.add_class::<HelloWorld>();
}

godot_gdnative_init!();
godot_nativescript_init!(init);
godot_gdnative_terminate!();

Output:
thread '<unnamed>' panicked at 'assertion failed: `(left == right)`
  left: `42`,
 right: `944####680`: self should not be holding garbage', examples/hello_world/src/lib.rs:19:9

Dealing with the problem
As there are more ways that owner can be freed (along with its script instance), it might be best to replace the userdata Box with an Rc (or even Arc. I'm not sure if it's possible for Godot to free an Object from another thread) to prevent UB even if the Godot side called the destructor midway.

I was starting to write a lot of stuff about this problem on the review for #181, I decided it's probably better to discuss the issue here and then see how this might affect the PR.
Unfortunately the usual assumptions about Rust's ownership/borrowing do not hold true for self in the GDNative bindings. It is possible to have a method take &mut self as the self argument. Since in GDScript it's okay to pass object references between threads another thread could call another &mut self or even just &self method in the meantime, so the aliasing assumptions of mutable references can be violated even from Rust itself in safe code (using Variant and call (if that's implemented, I do not remember right now :smile: ) ).

To make it "safe" one way might be to use Arc<RwLock<T>> but there we come to a point where trying to add in safety has quite some run-time cost.
I remember a conversation here on Github with @nical about this kind of stuff and we two agreed that safety is good if it's not too costly. At the end of the day this is a still a binding to a game-engine where you most likely picked a natively-compiling language for performance reasons.
I think adding an Arc<RwLock<T>> to all instances and a mutex-acquire/release for all method calls might be a bit overkill. Rc<RefCell<T>> is a bit nicer in that regard but does not actually prevent UB either.

We already have a function in place to override specific methods during binding generation, I would just suggest to always make set_script unsafe in case in future a group of functions is marked as safe for some reason.
Since we are dealing with Godot which is accessed via a FFI and uses an unsafe language with scripting languages that do not have guarantees like Rust we have to identify and accept the places where UB can happen.
Imagine we manage to solve this case of UB, what about having a method called from two threads (possible from two threads from GDScript) and one of them panics and unwinds. At that point the other thread might observe UB as well. This could actually be solved by the Arc<RwLock<T>> thing, but performance implications make this have a bad backtaste.

Maybe one thing that could be done is instead of using Box we can use Arc<UnsafeCell<T>> knowing that safety can be violated from other scripts at any time anyway. This way we can prevent the issue with set_script and it should be less costly than Arc<RwLock<T>> while being less safe (but more predictable in terms of performance).
Maybe @nical can give an opinion on this as well, I might be missing something that can actually make this safe and not costly or maybe I'm missing something else and even my other suggestions are wrong :sweat_smile:

Indeed, what you said about Godot is true, and there is a bigger problem underlying this specific surface case. I was in too much of a haste to report and attempt a fix without digging deep enough first.
Now that the problem is properly identified, I think we shouldn't just say that it's expected and move on. Usually people don't reach for Rust just for the raw performance. Rather, it's performance predicated on the condition that safe things are safe, and unsafe things are marked unsafe. The breaking of safety assumptions undermines Rust's value by a great margin. To me, at least.
And it's about what the compiler assumes, too. Although rustc probably won't reorder things around FFI functions and transmutes, with sufficiently complex code (i.e. actual game), optimization becomes hard to reason about, and may bring some nasty surprises when the assumptions it relies on are broken.

Now, while I think safety should be the default, user choice may be possible with unsafety being opt-in, using associated types. Consider this definition of NativeClass:
pub trait NativeClass: Sized {
    type Base: GodotObject;
    type UserData: UserData<Target=Self>; // = SafeUserData<Self> with associated type defaults?
}

pub unsafe trait UserData: Sized {
    type Target: NativeClass;

    fn new(val: Self::Target) -> Self;
    unsafe fn into_user_data(this: Self) -> *const libc::c_void;
    unsafe fn consume_user_data_unchecked(ptr: *const libc::c_void) -> Self;
    unsafe fn clone_from_user_data_unchecked(ptr: *const libc::c_void) -> Self;

    fn map<F, U>(this: Self, op: F) -> U
    where
        F: FnOnce(&mut T) -> U; // Can be made something like `for<'a> FnOnce(Self::Ref<'a>) -> U` with associated type constructors, so the deref can be explicitly unsafe as well?
}

struct SafeUserData<T>(Arc<RwLock<T>>);

unsafe impl<T: NativeClass> UserData for SafeUserData<T> {
    type Target = T;
    // ...
}

So, instead of a singular NativeInstanceWrapper to fit all, we allow anything the user likes to be used as user data: Arc<RwLock<T>>, Arc<UnsafeCell<T>> or just a plain old Box<RefCell<T>>, so long as it can be passed to Godot and passed back. I think it might be a good middle ground if there is no cheap way to make things safe, so people don't pay for what they didn't ask for.

We already have a function in place to override specific methods during binding generation, I would just suggest to always make set_script unsafe in case in future a group of functions is marked as safe for some reason.
Since we are dealing with Godot which is accessed via a FFI and uses an unsafe language with scripting languages that do not have guarantees like Rust we have to identify and accept the places where UB can happen.

It is fine for unsafe functions to cause UB when used incorrectly, that's why they're unsafe after all. But with a Box wrapper, there is no way to call set_script and friends without immediately and unconditionally causing UB, by effectively creating an instance with invalid data. That's a bit bad to have in the bindings in my opinion.

Another way to prevent the "locks on every method call" situation may be to force the interior mutability pattern, by making NativeClass Send + Sync, and requiring that all exported functions take &self. The userdata will be only Arc<T>.
The downside is obvious: users will have to handle their own locks.

I think we shouldn't just say that it's expected and move on. Usually people don't reach for Rust just for the raw performance. Rather, it's performance predicated on the condition that safe things are safe, and unsafe things are marked unsafe.

Indeed, I fear like I didn't express myself properly. I do think we should strive to be as clear and "honest" about the safety as we can while making things as safe as possible!

I do like the suggestion of using associated types to define the implementation, this is a really nice idea I didn't think of yet!
I realized that even with the Box<RefCell<T>> approach you can cause panics by using variant calls, so it wouldn't actually be much worse than a deadlock when using RwLock<T> instead.
specs is using a similar system for customizing the backing storage of components and that works quite nicely! So I think this is a nice middle ground. The derive macro could be extended to make this customizable too, I like this solution!

I realized that even with the Box<RefCell<T>> approach you can cause panics by using variant calls, so it wouldn't actually be much worse than a deadlock when using RwLock<T> instead.

Panics and deadlocks are technically safe in Rust parlance, so that's a bit different from causing aliasing from safe code, but deadlocks sure are very problematic too.
Maybe we can make map return Result, and have try_lock / try_write versions of UserData implementations alongside the usual ones. Maybe even ones with timeouts via parking_lot. (Const generics aren't available yet, so they'll need a trait with an associated constant Duration to allow customization. Or we can just leave it to the user entirely because it requires additional dependency.)
Then we can modify godot_wrap_method so that it prints the Err and returns Nil upon failure to acquire lock, just like how it behaves currently when the inner function panics.
That, along with documentation on what could potentially cause deadlocks (Variant calls on anything, anything that could emit non-deferred signals, downcasting owner to Instance when that's available, maybe?) attached to the appropriate UserData types, should be enough, I suppose.


Publish the new version of this component

Hi @mastermoo
I noticed that there is some new code merged, such as https://github.com/mastermoo/react-native-action-button/pull/280, could you have time publish a new version for this library?

done


Random crashes in macOS test run

https://dev.azure.com/dnceng/public/_build/results?buildId=947381&view=results
Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
   at Microsoft.Diagnostics.Tracing.EventPipeEventSource.Dispose(Boolean disposing)
   at Microsoft.Diagnostics.Tracing.TraceEventDispatcher.Finalize()
=== COMMAND LINE ===
"/Users/runner/work/1/s/.dotnet/dotnet" exec --depsfile "/Users/runner/work/1/s/artifacts/bin/Microsoft.Tye.E2ETests/Release/netcoreapp3.1/Microsoft.Tye.E2ETest.deps.json" --runtimeconfig "/Users/runner/work/1/s/artifacts/bin/Microsoft.Tye.E2ETests/Release/netcoreapp3.1/Microsoft.Tye.E2ETest.runtimeconfig.json"  "/Users/runner/work/1/s/.packages/xunit.runner.console/2.4.1/tools/netcoreapp2.0/xunit.console.dll" "/Users/runner/work/1/s/artifacts/bin/Microsoft.Tye.E2ETests/Release/netcoreapp3.1/Microsoft.Tye.E2ETest.dll" -noautoreporters -xml "/Users/runner/work/1/s/artifacts/TestResults/Release/Microsoft.Tye.E2ETests_netcoreapp3.1_x64.xml" -html "/Users/runner/work/1/s/artifacts/TestResults/Release/Microsoft.Tye.E2ETests_netcoreapp3.1_x64.html"  > "/Users/runner/work/1/s/artifacts/log/Release/Microsoft.Tye.E2ETests_netcoreapp3.1_x64.log" 2>&1

I'm seeing this without tests now, we should investigate as I'm seeing it somewhat frequently causing tye to crash.

I'm seeing this without tests now, we should investigate as I'm seeing it somewhat frequently causing tye to crash.


Linked pull requests Successfully merging a pull request may close this issue.

Linked pull requests
Successfully merging a pull request may close this issue.Linked pull requests
Successfully merging a pull request may close this issue.Linked pull requests
Successfully merging a pull request may close this issue.Linked pull requests
Successfully merging a pull request may close this issue.Linked pull requests
Successfully merging a pull request may close this issue.Linked pull requests
Successfully merging a pull request may close this issue.Linked pull requests
Successfully merging a pull request may close this issue.Linked pull requests
Successfully merging a pull request may close this issue.Linked pull requests
Successfully merging a pull request may close this issue.Linked pull requests
Successfully merging a pull request may close this issue.Linked pull requests
Successfully merging a pull request may close this issue.Linked pull requests
Successfully merging a pull request may close this issue.Linked pull requests
Successfully merging a pull request may close this issue.Linked pull requests
Successfully merging a pull request may close this issue.Linked pull requests
Successfully merging a pull request may close this issue.


proxy: move http related thing to httpproxy

We are going to add a tcp proxy for etcdlet and probably a grpc proxy for etcdout.
/cc @heyitsanthony

lgtm


_.scss failed with "gosass watch" command

First of all, I want to say "Thank you" for this wonderful library. I just download it today and it works great for me.
One minor issue that I encountered was "gosass -watch" command failed to process file with the underscore (_) prefix after any scss file changes. I want to report this issue and my workaround solution in case other people may run into this issue.
[Reproduce]

Download bootstrap sass project
Run gosass with "watch" argument to watch for file changes.
Make some changes on bootstrap.scss file
A error will throw for some  __.scss not found (Sorry, I could not copy & paste the error since I reported this issue on another machine)

After inspecting the code, it looks like the issue caused by "refPath := filepath.Join(filepath.Dir(ref), fmt.Sprintf("_%s.scss", filepath.Base(ref)))" (line 46 in compiler/dependencies.go)
[Work around]
I have a work around by replacing "" with "" as following code
strings.Replace(fmt.Sprintf("%s.scss", filepath.Base(ref), "", "_", 1)
Sorry, I don't know Go code so well, so feel free to make a correction where you see fit.
Thanks,
-Quan

Hum. My sample code get changed by Github. Anyway, a work around is to replace 2 underscores characters with 1 for the first occurrence.

Underscore-prefixed files in sass are partials. When you @import "foo/bar", it should import the partial from the file foo/_bar.scss.rw


Add length pattern filter

Add a pattern filter which only retains patterns that have a certain minimum length. By default, a pattern should have at least length 2.
Also change the IncompletePatternFilter to a class instead of an object. This was done for the following reasons:

Singletons in general are ugly
Some filters might have paramters, such as the new LengthPatternFilter, and as such for consistency they should ideally all be classes
It more closely coincides with the project strucutre. Comparators are also classes

Codecov Report

Merging #60 into master will increase coverage by 0.07%.
The diff coverage is 100%.

@@             Coverage Diff              @@
##             master      #60      +/-   ##
============================================
+ Coverage     83.29%   83.37%   +0.07%
- Complexity      224      227       +3
============================================
  Files            21       22       +1
  Lines           431      433       +2
  Branches        103      103
============================================
+ Hits            359      361       +2
  Misses           29       29
  Partials         43       43

Impacted Files
Coverage Δ
Complexity Δ

...ejojo/schaapi/patternfilter/LengthPatternFilter.kt
100% <100%> (ø)
3 <3> (?)

...haapi/patternfilter/IncompleteInitPatternFilter.kt
100% <100%> (ø)
9 <1> (ø)
:arrow_down:

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 46a8657...fabd200. Read the comment docs.


Incremental protocol for language server type extension does not seem to be implemented

When I am following the guide Example - Language Server A Brief Overview of Language Server and Language Server Protocol when I try to implement incremental protocol for language server I cannot get any of these events fired:

onDidOpenTextDocument
onDidChangeTextDocument
onDidCloseTextDocument

It seems that I am doing everything as in the guide.
Is incremental protocol for language server type extension implemented?

@bartosz-antosik two things are important:

you need to have textDocumentSync: TextDocumentSyncKind.Incremental
you can't use a document manager. So the code let documents: TextDocuments = new TextDocuments(); and all references to documents need to me removed.

Let me know if this helps?

The first I had. Have not been aware of the second. I will try and come back with some update.

Yes, id DOES work. IMHO should be bit better documented in the official documentation.


Support more fields at AssemblyInfoVersionPatcher task

Hi,
Currently, AssemblyInfoVersionPatcher supports customizing those fields:

AssemblyVersion
AssemblyFileVersion
AssemblyInformationalVersion
AssemblyDescription

There are additional fields I would like to customize as part of product build:
5. AssemblyTitle
6. AssemblyCompany
7. AssemblyProduct
8. AssemblyCopyright
9. AssemblyTrademark
Is it possible to modify or extend current AssemblyInfoVersionPatcher such that it will get a map as @ Input, where I put all desired fields?
Declaring additional input members is fine as well
Thank you very much!

Hi and thanks for the reply.
Let's take for example AssemblyCopyright, where I want to update the year based on current year.
The other fields are required for the assemblies to be updated based on the product that ship them. I have 4 different products shipping the assemblies as a driver, and I want the assembly title, trademark, etc. to get updated according to the product's name.
I could use TokenReplacer to do that, but just thought it could be nice using AssemblyInfoVersionPatcher with a map containing all of the fields I need

thanks for your clarification, imo adding additional input parameter to AssemblyInfoVersionPatcher is better than a map


Support  docker  deploy ？

@sikenali can you explain why? and a use case ?

@sikenali can you explain why? and a use case ?

Download resources on NAS device.

@sikenali If I correctly understand the use case you mentioned, it is not related to this app (its GUI, and does not have CLI environment at the moment)


Create API Docs specifically applicable to SOLO

We should create a document for internal use of the API endpoints we will use.  This can begin with a single endpoint we will use once we get access to the test server but will then grow as we utilize more. When started, a discussion should be had about whether it lives in the repo wiki or outside the repo.

Bring up with Roger. We push things, don't sure if we can pull information.


Contribution guidelines

Fix Design Principles link in https://github.com/basscss/basscss#contributing, which 404s.


Add possibility to add multiple shadows and shadow spread

As discussed in #161 this would add the shadowGroup prop to View, allowing multiple shadows to be added.
P.S. I'm new to working on big projects like this. I would be very grateful for any feedback. Thanks for opening this project to the community.

#358 fix conflicts.
Thank you @ludwigfrank

fixed in #358


new-file.md

this is a new content only.

@Marcos2015
Don't use public projects to test out git / GitHub! It's rude and wastes folks' valuable time.


[CSL-1586] /healthcheck endpoint for a node

This PR delivers a new endpoint every cardano-node-simple will expose at /healthcheck which would be used by Route53 to determine whether a relay is to be considered healthy or not. The notion of health is relative to how many more subscriptions (peers) a node can accept. If this counter is 0, the endpoint returns 503 Service Unavailable, 200 OK otherwise. In both cases a handy string gets attached to the body, essentially an internal snapshot of the capacity in terms of <spareCapacity / maxCapacity>. For example 0/10 would mean this node has 0 available slots but a BucketMaxSize of 10.
Two things which I'm not entirely satisfied:

I would probably like to not expose this endpoint for core nodes and edge nodes. It doesn't matter too much as core nodes are not exposed anyway. If you think there is a particularly strong reason for restricting the availability of this endpoint to only a particular node type, let me know.

The port I have chosen is a bit of an arbitrary choice. I wanted to have something "fixed enough" to be used predictably by the devops people, but at the same time flexible enough to be suitable for local testing (via the run_demo script). The solution I have opted for was to get the bindingPort for this node and add a constant (30), to preserve predictability. In such scenario, if running on the default port 3000, the /healthcheck endpoint would be available at 3030.

I have tested the correct behaviour of the system within the local cluster. Last but not least, we are spawning such endpoint in an Async to not halt the main thread.

Looks good to me.
Just a heads up: there might be another health check in the future.
a) current Route53 is to be able to advertise what nodes are available for connecting from edge nodes
b) another health check might be added after mainnet to prove that a node is health from within. It would check all threads are "OK", and that DB is readable, etc. This would improve our monitoring confidence besides the current black box monitoring.

To make this easier for devops can we run it based on our node's node type and only run it for relay nodes?

Absolutely, makes total sense.

Use a new policy function to keep a clean separation of mechanism from policy.

Are you suggesting to add a new entry to the yaml topology file, only for relay nodes, or am I missing entirely the point here?

I'd suggest a little renaming to make things clearer. It's a relay health check, not a general health check.

True enough. I'm happy to go with /relay-healthcheck or anything @domenkozar or the other DevOps folks fancy. I suck at naming things!

@dcoutts @domenkozar Ok, I hope this won't be a regression but rather an improvement 😉  What I did, in order:

I have created a function called topologyRoute53HealthCheckEnabled :: Topology -> Bool in Pos.Network.Types to return True only for relay nodes.

I have nested the endpoint under /healthcheck/route53 instead of leaving it very generic. The idea is that in the future is easy to add extra healthchecks like /healthcheck/general etc.

Let me know if you think I'm on the right track.

Alas I don't think I can rebase without closing the PR, let me try and reopen it.


Pybind Issue

I am trying to run the gettingstarted notebook and I get this issue:
bindings/python_api.cc:179:16: error: expected constructor, destructor, or type conversion before ‘(’ token
PYBIND11_MODULE(mlperf_loadgen, m) {
It seems the code is not able to build mlperf_loadgen .. Can you please help?

@coder27 It's a duplicate of https://github.com/mlperf/inference/issues/230 (which perhaps should not have been closed until properly resolved). Can you try the solutions I described there?

Thanks. I was able to resolve it using recursive cloning ..


About OOM During Training and Questions Regarding Attn

Thank you for your contribution!  My GPU is  80G A800, and the model is only 7B with a batch size of 1. I believe this configuration should not cause an OOM.
2、LoRA train
To be able to perform training, I used the --lora option. However, after training, the checkpoint saved is 24GB, while the original model was only 14GB:
27G     /mnt/data1/zmj/embedding_model/gritlm-main/gritlm/output/7-2_lora/checkpoint-800

I would like to know why this is the case. Additionally, I received the following warning when loading:
Some weights of the model checkpoint at /mnt/data1/zmj/embedding_model/gritlm-main/gritlm/output/7-2_lora were not used when initializing MistralForCausalLM: ['model.base_model.model.embed_tokens.weight', 'model.base_model.model.layers.0.input_layernorm.weight', 'model.base_model.model.layers.0.mlp.down_proj.weight', 'model.base_model.model.layers.0.mlp.gate_proj.weight',...]
3、attn
After reading the paper, I understand that you used bidirectional attn for training the embedding task. However, why does the example script you provided for the embedding task use: --attn cccc
I look forward to your response.

1,
try adding the below to save memory
    --attn_implementation sdpa \
    --no_gen_gas \
    --no_emb_gas \
    --split_emb \

2,
I have not tried LoRA but it looks to me like your checkpoint was saved in FP32 which doubles the size. The warning is problematic cuz it means ur weights are not loaded.
3,
it is just an example script; the actual training script is here: https://github.com/ContextualAI/gritlm/blob/main/scripts/training/train_gritlm_7b.sh

1, try adding the below to save memory1, 尝试添加以下内容以节省内存
    --attn_implementation sdpa \
    --no_gen_gas \
    --no_emb_gas \
    --split_emb \

2, I have not tried LoRA but it looks to me like your checkpoint was saved in FP32 which doubles the size. The warning is problematic cuz it means ur weights are not loaded.2, 我没有尝试过 LoRA，但在我看来，您的检查点保存在 FP32 中，大小增加了一倍。警告是有问题的，因为它意味着您的砝码没有加载。
3,3,
it is just an example script; the actual training script is here: https://github.com/ContextualAI/gritlm/blob/main/scripts/training/train_gritlm_7b.sh它只是一个示例脚本;实际的训练脚本在这里：https://github.com/ContextualAI/gritlm/blob/main/scripts/training/train_gritlm_7b.sh

Thank you very much for your reply. I'm not very familiar with training code, but I will give it a try. Thanks again!

1, try adding the below to save memory
    --attn_implementation sdpa \
    --no_gen_gas \
    --no_emb_gas \
    --split_emb \

2, I have not tried LoRA but it looks to me like your checkpoint was saved in FP32 which doubles the size. The warning is problematic cuz it means ur weights are not loaded.
3,
it is just an example script; the actual training script is here: https://github.com/ContextualAI/gritlm/blob/main/scripts/training/train_gritlm_7b.sh

is loading 7b model with more than one devices available? I removed torchrun and run with simpy a python, it got an error with input tensor and model not in the same device; model loaded in different gpus while tensors are on cuda: 0.

@Muennighoff is loading the model with different gpus available? I try removing torchrun and run with python on multiple gpus. I got device not on the same device error; input tensors on cuda: 0 and model in different cudas.

I recommend using torchrun for multiple GPUs; I haven't tested it without torchrun on multiple GPUs but it should also work maybe after some small modifications

@Muennighoff I am currently working on finetuning 7B model on multiple gpus; 7b model doesnt fit in one 80G GPU, so running on parallel GPUS like your demo seems not possible. I added device_map="auto" to use multiple gpus, but I keep getting "tensors on different devices" issue. Do you have any idea about that, or do you have any recommandation on finetuning 7B with n * 80G GPUs?


[WFCORE-3999] Allow registering a custom HTTP handler for management interface

add addManagementHandler(String, boolean, HttpHandler) method to the
ExtensibleHttpManagement API

JIRA: https://issues.jboss.org/browse/WFCORE-3999
Proposal: https://github.com/wildfly/wildfly-proposals/pull/117

retest this please


ClassifierHelperAPI individual name

createDataFlDict()
While creating data for regression, presence of individual name attribute poses a problem.
INDIVIDUAL_NAME is not a part of the NON_SPARSE attribute list, but even then the result set contains the individual names. This is because of the hard-coded ftrs list in the method.

The temp solution of parameterizing ftrs only works for non_sparse and sparse attribute types.
Attribute selection methods where there cannot be any external control could be a problem.

Another issue where attribute selection type is non_zero and abv_mean some of the tags from MS Image Tagging API are not being populated.

Incorrectly attributed to this issue.


e2e: skip CNO pod restart check

We are getting flakes with the CNO pod restarting due to https://github.com/openshift/cluster-network-operator/pull/1986
Because the fix is in the CNO and this is not an urgent bugfix, lets skip on our side until they can merge the fix.
cc @csrwng @enxebre

/lgtm


feat: Add semantic "and" methods to When and Then structs

PR adds an "and"  method to the When and Then structs. The purpose of the new methods is to preserve the intuitively legible semantics of the When and Then structs while allowing users to abstract / encapsulate common or repeated operations into discrete functions.
From the docstrings of the new When::and method:
// Assuming an encapsulating function like:

fn is_authorized_json_post_request(when: When) -> When {
    when.method(httpmock::Method::POST)
        .header("authorization", "SOME API KEY")
        .header("content-type", "application/json")
}

// It can be applied without breaking the usual `When`
// semantic style. Meaning instead of:
is_authorized_json_post_request(when.json_body_partial(r#"{"key": "value"}"#))

// the `and` method can be used to preserve the
// legibility of the method chain:
 when.query_param("some-param", "some-value")
     .and(is_authorized_json_post_request)
     .json_body_partial(r#"{"key": "value"}"#)

// is still intuitively legible as "when some query
// parameter equals "some-value", the request is an
// authorized POST request, and the request body
// is the literal JSON object `{"key": "value"}`.

@alexliesenfeld Shameless self bump 😅

@the-wondersmith This looks very interesting, thanks! I'll have a deeper look into it and get back to you with some feedback!


Example with notification Icon

Please could you share with us an example using notification icon?
I've tried passing complete path to android mipmap, but i had no luck implementing it.

This might help
https://github.com/rekab-app/background_locator/issues/48#issuecomment-773559387

I'll try it, thank you.

This might help
#48 (comment)

Solved, thanks!!


[Feature] Add oneDNN support for interleaved_matmul_selfatt_* operators (fp32/int8)

Description
This change adds oneDNN support for two operators:

_contrib_interleaved_matmul_selfatt_qk
_contrib_interleaved_matmul_selfatt_valatt

Both operators will be used when backend MKLDNN/MKLDNN_QUANTIZE will be chosen - there is no change in terms of performance between MKL fp32 vs. oneDNN fp32, but the main advantage is utilizing int8 data type
10 iterations of BERT-Large (gluon-nlp v0.10.x) [Intel(R) Core(TM) i9-9940X CPU @ 3.30GHz]:
MKL implementation (fp32 as int8 is not supported):

oneDNN implementation (int8):

_contrib_interleaved_matmul_selfatt_qk => _sg_mkldnn_selfatt_qk
_contrib_interleaved_matmul_selfatt_qk => _sg_mkldnn_selfatt_valatt
We can observe that this change positively influenced other operators as there is less dequantization/quantization overhead and memory reorders
Great contribution of @grygielski to this change
Checklist
Essentials

[x] PR's title starts with a category (e.g. [BUGFIX], [MODEL], [TUTORIAL], [FEATURE], [DOC], etc)
[x] Changes are complete (i.e. I finished coding on this PR)
[x] All changes have test coverage

@mxnet-bot run ci [windows-cpu]

@szha Can we merge it?

@bgawrych thanks for the contribution


Add Mirego

👋

[x] Company name
[x] Industry
[x] Company location
[x] Company description
[x] How Elixir is used
[x] GitHub / blog links
[x] Job listings

Thank you @remiprev 😁


Indents in .git/machete are assumed by IDEA to be 2 spaces (?) regardless of what's in the file

Which means that e.g. in tab-indented file, pressing a tab will insert 2 spaces, which will of course cause red squiggles

Also, whatever we choose to be the default indent for .git/machete, discover functionality should save the file with this very default as well.


added ManualResolver

ManualResolver can be used for types where the initializer can not be manually defined and used. (i.e. UIViewControllers, UIViews, etc.)
I realize that there is already a solution to this problem for UIViewControllers using UIStoryBoards. However, this solution only works for that particular case. If the user wants to use a XIB or inject properties into a UIView then a different solution will be needed. Also, since that solution is using advanced topics in Objective-C, it can be difficult to extend it to cover these other similar scenarios.
ManualResolver is one solution that I've used personally. After using it in a couple projects, I thought that others might benefit from this solution as well. Please let me know what you think and/or how this solution could be improved.

Can somebody please take a look at this PR?

Hey Rivukis would you mind to explain why this solution? I'm mean, looking to the implementation the purpose is after you resolve your instance you want to get the reference to this instance and pass / inject any other variable property right?
But you implementation already can be done using:
let container = Container() container.register(Animal.self) { _ in Cat() } container.register(Person.self) { _ in PetOwner2() }     .initCompleted { r, p in         let owner = p as! PetOwner2         owner.pet = r.resolve(Animal.self)     }
Is this what you are looking for or it's different?

@Rivukis

What I'm doing with ManualResolver is a little different. The main issue is with classes that are not initialized manually. This includes UIViewController and UIView. As I stated there is a solution for UIViewController, but only if it is inflated from a storyboard. I've seen other architectural designs that more heavily use UIViews instead of making each view component a UIViewController. Also using XIBs for UIViewControllers is beneficial in certain scenarios. In those cases Swinject will not be the one that initializes the object and won't know that it has been initialized. This is where Manual Resolver comes in. This allows you to tell Swinject that it is time to inject all the dependencies. The other nice thing is that it is not dependent on Objective-C specific solutions (Swinject-Storyboards requires swizzling which is not supported in Swift) which means it does not require the Objective-C runtime, bridging, etc. which can increase the binary size. I hope that answers your question. If not, please let me know.

Yep, but you still can do the same using init completed, because the initCompleted you receive the initialised instance the same way that you are doing in your implementation.
The difference is that swinject does this in two steps, first initialising, and the reason this is to make sure that the instance was fully loaded, for example.
Your implementation does this:
container.registerManualConstruction(BasicViewController.self) { (resolver, basicViewController) in
        let food = resolver.resolve(Food.self)!

        basicViewController.inject(food: food)

}
The same with that swinject has today would be:
container.register(BasicViewController.self) { _ in BasicViewController() } .initCompleted { (resolver, basicViewController) in
    let food = resolver.resolve(Food.self)!
(basicViewController as! BasicViewController).inject(food:  food)
}
And this work's with all scenarios, if you use NIB, if you need has the same name as your  viewcontroller your viewcontroller will initialise your need and will maintain the same reference, but even is not a problem as initCompleted always return the instance that was completely initialised.
One of the down sizes, but it's how its works iOS is that we can't have a custom initialiser to inject our dependencies, that's why we need to inject on initCompleted, using method injection or variable injection.
Sorry if i'm not seeing the same, but from the source-code that you added I could reproduce the same behaviour using initCompleted
For the storyboard the same can be done but I would recommend use another method to register that is in the extension SwinjectStoryboard, will guarantee that your storyboard will be initialised having the save viewcontroller reference, so if you implement the initCompleted you will have 100% sure that is the instance that you are looking for and be able to inject again :)
@jakubvano What do you think? Can you give us your insigne ?

The scenarios you described are cases when you are the one calling init. If something else calls it (aka UIKit) then Swinject will not be invoked and therefore neither will initCompleted.
For instance if you have a custom UIView (i.e. MyView) that is being used in a storyboard for a UIViewController (i.e. MyViewController). When MyViewController is initialized, UIKit will create a MyView on its behalf. Since UIKit does not know about Swinject it will not ask Swinject to create it. Therefore, Swinject is out of the creation loop and has no way of getting a reference to the instance.
You can try this yourself if you set up the scenario I just described. Create a subclass of UIViewController and a subclass of UIView then reference the view in the storyboard for the view controller. Then register the view and add an initCompleted that calls a method that prints something out. When you run the app you will notice that nothing gets printed. You can also put a print statement in awakeFromNib() to make sure that the view is being inflated even though the injection method is not being called.

As a side note, I'm a big fan of Swinject and still use it. However, I'm a little disappointed that 9 months has gone be without any feedback on my pull request. At this point I feel like the developers are no longer maintaining it and it's in a state of "use at your own risk".

@Rivukis Maybe you should update your tests to use the scenario you described with a view and a view controller? Then it may be more clear that when something changes, the test fails?

Thanks for the PR 👍 I'm sorry for taking this long to respond 😓
Even though this kind of functionality is achievable without an explicit Swinject API, IMO it does make sense to bake it in.
I would propose a couple of changes though:

I don't think we should provide an explicit global container in ManualResolver - it might restrict certain usages (e.g. when app uses more than a single container). I would probably just add the API for defining the "manual construction" and requesting injection, and leave the Container instance  management to the application code.
We could probably ditch the ManualResolver entirely and implement methods directly as extensions on Container / Resolver
Maybe change the method names to mirror existing API?

Usage I have in mind could look something like this:
container.manualInitCompleted(Foo.self) { resolver, foo in  // maybe `externalInitCompleted`?
    foo.dep1 = resolver.resolve(Dep1.self)
    foo.dep2 = resolver.resolve(Dep2.self)
    // alternatively, but we don't need to make this idiomatic - leave this on the developer instead
    foo.inject(dep1: resolver.resolve(Dep1.self)!, dep2: resolver.resolve(Dep2.self)!)
}

let foo = Foo()
container.inject(foo)

What are your thoughts?

Hi there,
Based on the examples give in the comments, programmer can reference the container from the ViewController and resolve the required dependencies from there.
If the reason to not reference the container is to be able to use mocked dependencies from tests, then programmer should be able to register mocked dependencies in the container before running tests.
There is no code smell at using a container from the View if there are dependencies needed, the View will only resolve dependencies, not register.
}

Would this work for the View and ViewController use cases?

Hi @BProg, I gave up on this after 9 months of waiting with no response and decided to move on. It became too difficult and time consuming to try and improve Swinject (i.e. this PR). Since then I treat Swinject as "use at your own risk" since it doesn't seem to be actively maintained (only based on this PR; didn't look at commit/bug history). I have used this solution in my personal projects using a helper cocoapod that I made for myself (thus not having to rely on Swinject maintainers).
It's now been another 5 years. I forgot this PR still existed. I don't have any opinions on what happens to it: update it, merge it, delete it. etc. No offense to you (in fact it's nice of you to try and catch up on things long forgotten), but I've given up any hope on contributing to Swinject.


addon config form values cleared / not correctly displaying when user updates a cluster's kubernetes version

Setup

Rancher version:v2.6-head (6c12bee)
Browser type & version: chrome 100.0.4896.88

Describe the bug
When a user is updating the k8s version of a cluster, if they have fields under the addon config section, they are cleared from the cluster and are not included in the update.
To Reproduce

in vsphere, deploy a cluster (1 etcd, cp node and 1 or more worker nodes) on 1.2x.x+rke2rx (just not the latest version so that you can update it later)

enable the cloud provider vsphere
enter valid credentials under addon config for vsphere cpi/csi charts
wait for the cluster to get to an active state

once the cluster is active, update the cluster via edit config

change k8s version
visit the addon config section before updating the cluster

Result
the addon config does not have any/all values that are already entered by the user and used by the cluster during upgrade.
Expected Result
The values should be preserved when updating the UI through the form.
Additional context
Updating the same field via yaml preserves the values and allows the update to complete for both the cluster and the addons (in this case, the charts for cpi/csi only properly update if the yaml is updated. The form clears the values and the upgrade will fail).
Context
found as a result of debugging issues from this ticket: https://github.com/rancher/rancher/issues/35474
possibly related: https://github.com/rancher/dashboard/issues/5132

There's a brief intro to addon config and how it works over in our confluence (rancher / cluster provisioning / general notes, ask for link)

From my tests it looks like it's backend.
If all I do is refresh after the repo has been updated I see the request get made and the repo status cycles through until it gets back to active.
If you clone a repo and give it a new name and refresh the updates show up. It makes me think that the backend is caching something based on the repo name.

After digging into this one I'm not convinced this is a bug.
The Addon Config is driven by a chart/s. The charts are versioned for each kubernetes version. So what happens is if you switch the kubernetes version it  which chart questions/values are used.
If you were to switch kubernetes versions and then switch back your addon config values will be present.
Similarly, if you switch versions (v1), change the addon config values, switch versions (v2) again your addon values will be gone. If you then switch back to to v1 then your values will come back.
I think that this is actually reasonable behavior given the circumstance. For us to populate values between versions we'd need a way of tracking what fields are compatible. Just transferring the value if the name is the same isn't sufficient. Types could change, names could change etc.
@richard-cox I saw that you were in these files. Does the above make sense to you?

That makes sense. I wonder here if we just need to make it clearer that config is tied to addon versions, which may change given updates to kube version. That could either be a banner on screen or might be possible via a warning modal shown on changes that would clear the config (not sure we have a ux pattern for warning modals though).

@richard-cox I'm going to go ahead and add a banner in the Add-On config section. In theory this informs the user of this issue when they first set the config but it could still end up with users forgetting and making the mistake but being informed when they investigate.
I'm personally not a big fan of confirmation modals while editing a form. Maybe in the future we can have a modal that pops up when the user tries to save which confirms that they're okay with clearing the values?
Also, I noticed that we now have 11 or 12 banners in the RKE2 provider. This is making me think that maybe we don't have the right abstraction for provisioning RKE2 clusters.

@codyrancher @richard-cox , thank you for investigations on this.
While I understand the technical reason for this behavior, it sounds like a poor user experience, especially for the cases where fields don't change between add-on versions or there are only additional fields.
From what I understand per https://github.com/rancher/dashboard/pull/5775 this pop-up will show up any time you change k8s version, regardless of whether you have any impacted add-ons, which could be very annoying. On top of that, it's not like users can easily copy-paste previously entered values, so they would need to re-enter them again - and in case of vSphere there are a lot of them.
While this may be acceptable for the initial release, there is definitely a room for improvement here to carry over the values in a more seamless fashion. In cases where it cannot be done automatically (e.g. types don't match) we could present the user with a warning listing the fields that were not moved automatically and asking to correct them manually.
cc: @gaktive @nwmac

Setup:
Rancher Version: v2.6-head commit: 5e1bfc06d6be06a91236663a154b155d14da0a8c
Kubernetes Version: RKE2 v1.22.8+rke2r1
HA Install
Steps:

Provisioned a AWS RKE2 downstream cluster version v1.21.6+rke2r1
Edited cluster config and added a test config  to Add-On Config and saved the config. I saw the expected Add-On Configurations can vary between Kubernetes versions. Changing the Kubernetes version may reset the values below. banner and saved the config successfully
When attempting to update the clusters's Kubernetes version to v1.22.9+rke2+1 and got the expected pop-up of

@snasovich Most config is yaml based, so the user can copy-paste their previous configuration. I'm not sure of the consequences though, or how vsphere config works.
I've created a follow up issue to improve the process. A lot of it is dependent on what add-ons are, how they work (on kube upgrade) and what confg we have available on edit.

@richard-cox , thank you for taking care of it (great timing as I've had creating a follow up issue on my list of things to do for yesterday but didn't get to it).
Regarding "most config is yaml based, so the user can copy-paste their previous configuration", this doesn't seem to be the case for vSphere Cloud Provider as there are custom forms on the UI for CPI / CSI on "Add-on Config" tab with a dozen or so fields between them (don't have a setup handy where I can test it).


Fix wiki link in README

It won't render correctly with the space between the ] and (.

Closing because v1 is deprecated


[RFC] Searchable Remote Index

Today, the data indexed in OpenSearch is stored locally on the storage attached to the instance which limits it to the available instance storage. To store more data, users have to scale their hot tier which is costly. To provide cost savings, users can opt to store data in remote store using the snapshot mechanism in the configured repository. To perform analysis on the data which is stored in the remote store user will need to restore entire index to the hot tier which will again require them to scale the hot tier based on index sizes that needs to be restored and can be costly. This RFC proposes a mechanism to directly create a read-only index backed by the data in remote store in snapshot format and allow performing search requests on it without downloading all the data from remote store. This mechanism will also serve as core building blocks of search path for other remote store project currently in-flight [1][2].
Proposed Solution
We propose to provide capability to search a remote index backed by snapshot in a configured repository of different cloud providers (AWS S3, GCS, etc) supported by OpenSearch. This will be built using the learnings from Ultrawarm technology available in AWS managed OpenSearch service. The index data will not be all completely downloaded to the local store instead will be fetched on demand based on the search request. To provide better performance of repeated search queries, there will be local disk based LRU cache mechanism which will be used to store already downloaded data which will reduce the overhead of round trip to remote store and download latency. Users will need to configure nodes with a pre-defined cache size which can be used for remote indices shard. Note: To provide flexibility a node can be used for placing both remote index shard as well as regular index shard.
We also plan to provide support for configuring a special node attribute which can be used to only allocate shards of these  remote indices. This will help to provide resource isolation between hot tier workload and search workloads on remote indices as they will be executed on specific nodes based on shard allocation. It will also help to keep isolation between local storage used for hot indices and cached data for remote indices. To that front, we will need changes in Shard allocation and recovery mechanisms for remote indices shards. Some of the things to consider is that these shards being backed by remote store will not need to perform peer recovery from primary shards as it can be done directly from remote store. These shards data durability will be tied to remote store and not node loss on which shards are assigned.
Apart from functional aspects, there are few performance related items which will be useful to improve search latency on these indices a) Concurrent segment search. The support for this was done as part of [3] with exceptions for aggregations. If this is enabled for hot indices then it should work out of the box for remote indices too, b) Prefetching support for data from remote store that will be required for serving the search request. This optimization will be focused on optimizing aggregation based queries. During execution first the docIds are found and scored (if needed) and then docValues for matched documents are fetched to perform the aggregations at shard level. Fetching these docValues sequentially will be expensive for a cold query. We can built a mechanism to collect the corresponding docValues infos for the matched document ids which will be needed during aggregation phase. Then prefetch those docValues in parallel rather than sequentially (during aggregation phase) from remote store to boost up the performance of search query.
Feedback Requested

In phase 1, we plan to support remote indices in snapshot format. We would like to get feedback from community on what all snapshot repositories are mostly commonly used by community users for snapshot.
Do we need the flexibility to support allowing the creation of remote indices from multiple different repositories or having a global single repository for such indices is good enough.
Should we have separate API for creating remote indices or should we extend restore API for it or provide support in both the places
What kind of search workloads usually the users see running on remote indices.

Next Steps
Based on feedback from the community we will start on the high level design to figure out the user experience, end to end flow to support remote indices backed by snapshot.
Things Not Covered
This proposal doesn’t intend to cover below items for now:

Searching on remote indices in some other format than snapshot.
Supporting hybrid shards copies for an index i.e. some shard performing only write while others performing read. Using this mechanism all the shards copies for an index will be read-only
Mechanisms to migrate data from local storage to remote store or snapshot store
Full end to end storage tiering solution

References

https://github.com/opensearch-project/OpenSearch/issues/1319
https://github.com/opensearch-project/OpenSearch/issues/1968
https://github.com/opensearch-project/OpenSearch/pull/1500

So the tl;dr is that storage would be backed by remote storage with a cache. This makes sense. The part that I wanted to comment on is: Should we have separate API for creating remote indices or should we extend restore API for it or provide support in both the places? I feel like the end game is a tiered storage API that lets me create/update options on an index that say things like "store this on disk" or "store this in S3" or "store this on disk and replicate to S3 as a backup", ..  The other way to look at this could be "configure snapshots" (exists today) and "mounting snapshots as read-only indexes" (aka "create an index backed by snapshots"). In either case, I would work backwards from that end state in terms of actual APIs and try to not introduce anything that we will knowingly want to deprecate. It would be good to read actual API proposals and be able to compare.

Given the https://github.com/opensearch-project/OpenSearch/issues/1968 proposal, would it make sense to support search on that data instead of expecting a snapshot format. May be support both?

The goal is definitely to support both. We don't plan to design and implement this with the assumption that the remote indexes will always be read-only. The ability to search the snapshot format seems like a good incremental feature to deliver on the way to supporting reading from the writable remote storage to be delivered by #1968.

we can rely on snapshot api itself to create the remote index(implicitly)

Can you elaborate a bit more on what you mean by this?

Nice proposal. Few questions/suggestions:

In phase 1, we plan to support remote indices in snapshot format.

Given the remote storage proposal, would it make sense to support search on that data instead of expecting a snapshot format. May be support both?

The end goal is to make the search on remote backed index agnostic on underlying data format. OS engine communicates with the data via a Directory layer which can have different implementation based on the underlying storage format to support different formats. Here the plan was to focus on snapshot based format to start with and build other format supports once they are available. But yes the plan is to have extensible design.

Also related suggestion: Since the remote storage will also support writes in remote storage, should we avoid the assumption on read-only index from the beginning on read side? Might be OK to start with read only index, but would be great if design is extensible to cover the read-write index also.

Related to read-only index, this is my thought. Currently OpenSearch doesn't support mix of write and read shard for an index. #2578 talks about supporting that in long run where an index can have write only shards and read only shards, then appropriate requests can be routed to those shards. Once we have that capability then the mechanism developed here can be used by read-only shards for serving the search requests for remote indices. Until then we can use this mechanism to power read capability for an index backed by snapshot data. Also once the writable remote storage is available https://github.com/opensearch-project/OpenSearch/issues/1968, we can add capability to refresh the newly available data in remote store on reader side.

Should we have separate API for creating remote indices or should we extend restore API for it or provide support in both the places

If there is continuous sync to the remote storage, we may not need an explicit api to create remote index. However, if we place a restriction that it has to be 'read only' before we read, we might need a way for customer to mark it read only and optionally an api to delete it from hot cluster? If we are depending on snapshot as proposed here, we definitely don't need an api as we can rely on snapshot api itself to create the remote index(implicitly).

I may have confused by saying "creating remote indices", what I meant here was a mechanism to resurrect an index backed by snapshot for performing searches. Indices in snapshot will not be part of cluster state and not available for search so we need some mechanism to bring it in cluster state. The mechanism for that can be via a separate API like attachIndex or mountIndex or we can use the snapshot restore API but control how actually the shards are hydrated (i.e. it doesn't download all the data similar to hot)

I did not understand the second part of the above question "should we extend restore API for it or provide support in both the places"

Clarified above

Great to see we are planing to support writable storage also in future.
Thanks for the clarifications on "creating remote indices". For getting the indices back to cluster state, there are few considerations while deciding on using restore vs attach.

We may not even download the shards at all if the remote storage is fast enough for retrievals. So it is different than 'restore' as we are restoring only metadata/cluster state.
For indices which we want to remove from the state after taking snapshot, we need a separate 'detach' api anyway? Are we thinking of just doing a 'delete'? How do we distinguish between permanent delete (need to delete from snapshot also?) vs only cluster state delete?
With remote writable storage, we may have the state always in the cluster and there is no need for detach/attach. So it is mainly needed when someone is bringing in external snapshot for search?
With remote writable storage also, are we thinking of shrinking the cluster state (nice to have) by supporting detach for old indices which may not be written or queried regularly?
Ideal customer experience while reading is that customer should be able to just query the data even if the shards are not attached (attaching happen behind the scenes). If the state is always backed up only in the snapshot and getting it back to cluster is always 'restore', then there is a argument for reusing restore api. However, I feel new methods (nosql for example) can emerge to store the required index details in remote storage or remote db in future and forcing it to snapshot concepts now may not be right. So having detachIndex/attachIndex api (or exportIndex/importIndex) explicitly might be better even though we might use the snapshots for it's implementation now.

We would like to get feedback from community on what all snapshot repositories are mostly commonly used by community users for snapshot.

Azure Blob Storage, please.

Very excited to see this proposal @sohami! I had a few questions to make sure I am understanding it.

directly create a read-only index backed by the data in remote store in snapshot format and allow performing search requests on it

Just trying to make sure I understand. The search request wouldn't be performed directly against the remote store? Is this mirroring the remote store to a local read only index? Is the actual index in the remote store also read-only?

Should we have separate API for creating remote indices or should we extend restore API for it or provide support in both the places

On this +1 to what @dblock mentioned. But as a follow up, what are some reasons we would reuse the restore API versus a new one?

Great to see we are planing to support writable storage also in future.
Thanks for the clarifications on "creating remote indices". For getting the indices back to cluster state, there are few considerations while deciding on using restore vs attach.

We may not even download the shards at all if the remote storage is fast enough for retrievals. So it is different than 'restore' as we are restoring only metadata/cluster state.

Yes for this use case we don't plan to download all the shard data from remote storage while resurrecting the index to cluster state. However, that can also be extended to provide the support for full download in future if need be for any use case (like for faster search performance) which can be controlled by some index settings. The way I was thinking about restore is from user perspective that it prepares an index for serving the requests. For current hot local storage based index it involves restoring metadata and actual data to local storage. But for the remote index we can have the semantic to restore metadata only and leave data to remote store and prep shards with information to access that data.

For indices which we want to remove from the state after taking snapshot, we need a separate 'detach' api anyway? Are we thinking of just doing a 'delete'? How do we distinguish between permanent delete (need to delete from snapshot also?) vs only cluster state delete?

This part is not covered in this RFC purposefully as I was expecting that too be handled as part of #1968 which is introducing remote index concept. Here we are focussing on the search capability on indices with data in remote store. Currently for snapshot based remote store backed indices, it is expected that snapshot will already exist and management of that snapshot will be done by the user. For the index, user will just perform attach and then delete to manipulate the existence of index from cluster state perspective. Delete from remote index perspective will be deleting the cluster state + any local cached data for that index. Probably we can document the behavior of delete for local store index and remote index Or we introduce a new API just for remote based index to remove it from cluster state. The full management of remote store index like delete and all will come into picture once we have full multi tier solution built out.

With remote writable storage, we may have the state always in the cluster and there is no need for detach/attach. So it is mainly needed when someone is bringing in external snapshot for search?

Yes. This is the first step to provide the search functionality on indices backed by remote store. Once we have the support for #1968 completed then we can incrementally add the support for that use case as well. With remote writable storage as well, there may be a use case where user want to now mount that index for search only then the attach mechanism can be used for it.

With remote writable storage also, are we thinking of shrinking the cluster state (nice to have) by supporting detach for old indices which may not be written or queried regularly?

Not currently, current focus is to add the base functionality and then build various optimization incrementally.

Ideal customer experience while reading is that customer should be able to just query the data even if the shards are not attached (attaching happen behind the scenes). If the state is always backed up only in the snapshot and getting it back to cluster is always 'restore', then there is a argument for reusing restore api. However, I feel new methods (nosql for example) can emerge to store the required index details in remote storage or remote db in future and forcing it to snapshot concepts now may not be right. So having detachIndex/attachIndex api (or exportIndex/importIndex) explicitly might be better even though we might use the snapshots for it's implementation now.

I was thinking that auto attaching model will have better user experience when done via asynchronous search since all the latency of attaching the indices can be consumed behind the asynchronous call. So if we build the capability in core to attach such indices than integration with plugins like async search can be easily done.
+1 on the point about the remote index metadata stored not only in repository layer but in some external db or other storage layer and potentially in different format as well. Restore is currently tied to repository layer and to work with snapshot format, so it may make more sense to have a separate attach API for it which can be extended to support these other use cases.

Very excited to see this proposal @sohami! I had a few questions to make sure I am understanding it.

directly create a read-only index backed by the data in remote store in snapshot format and allow performing search requests on it

Just trying to make sure I understand. The search request wouldn't be performed directly against the remote store? Is this mirroring the remote store to a local read only index? Is the actual index in the remote store also read-only?

There won't be complete download of the index data to local store. However, there will be on-demand download of the data during search request and kept in local FileCache. For this RFC we are targeting remote indices backed by snapshot so inherently that will immutable but we do plan to extend it later to remote indices which is mutable as well.

Should we have separate API for creating remote indices or should we extend restore API for it or provide support in both the places

On this +1 to what @dblock mentioned. But as a follow up, what are some reasons we would reuse the restore API versus a new one?

My initial thought was similar to restore, the new API (lets call it attach for now) will also have to perform checks, validations and create index in cluster state. The difference w.r.t regular hot snapshot restore will be for remote indices actual data won't be downloaded. So to avoid maintaining another API probably we can extend the restore API itself. However, @muralikpbhat raise a good point in context of metadata for remote indices available in different external store and not only in repository layer. So it will be worth having separate API which can encapsulate all these different store use cases whereas restore is specific to repository and snapshot layer. Seems like that will be a better experience than overloading a restore API.

OS engine communicates with the data via a Directory layer which can have different implementation based on the underlying storage format to support different formats.

As part of https://github.com/opensearch-project/OpenSearch/issues/2700, we are adding a RemoteDirectory interface to read/write files to/from the remote store.
Tracking issue: https://github.com/opensearch-project/OpenSearch/issues/2993

@sohami @muralikpbhat Can we move the API discussion into #2922? I wrote up a couple more concrete examples and would love any feedback you have.
@sachinpkale @Bukhtawar Have you thought about the API for creating indexes that will be replicated to remote storage? I'd appreciate your feedback as well. As @dblock suggested we really should work backwards from the end state of where we want to get to eventually in terms of the various remote storage-enabled index APIs.

Thanks everyone for the feedback. We will keep this issue open for one more week (until 5/13/2022) and then close this discussion. We'll continue tracking the various design and implementation tasks in linked issues.

@sachinpkale @Bukhtawar Have you thought about the API for creating indexes that will be replicated to remote storage? I'd appreciate your feedback as well. As @dblock suggested we really should work backwards from the end state of where we want to get to eventually in terms of the various remote storage-enabled index APIs.

@andrross We will be using RemoteDirectory interface to store indexed data to the remote store. Please note that: the Directory interface is not fully opened yet. We have implemented only those methods that are required to store/restore the segments. We will gradually add implementation of more methods.

Since this issue is closed, where can I ask questions about this topic?


“Clearing config cache” warning

Every time I start ESLint I see the same warning:
$ npx eslint .
Clearing config cache ...

What does it mean? Does it mean that there is a problem with my config?
Should we remove it or make the text more clear?

@ai , there's no problem. It is prettier clearing its cache. I will make the text clearer.
Sorry for the delay and thanks for your feedback.

@ai , there's no problem. It is prettier clearing its cache. I will make the text clearer.
Sorry for the delay and thanks for your feedback.

@ai , I removed the warning.


Can't login

I heve error when I try to login (I use session id)
[19-12-2018 20:50] System.Exception: Cloud flare clearance failed, please wait one minute and try again ---> System.AggregateException: Wystąpił przynajmniej jeden błąd. ---> CloudFlareUtilities.CloudFlareClearanceException: Clearance failed after 3 attempt(s).
w CloudFlareUtilities.ClearanceHandler.d__20.MoveNext()
--- Koniec śladu stosu wyjątków wewnętrznych ---
w System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
w POEApi.Transport.HttpTransport.CloudFlareSessionIdLogin()
--- Koniec śladu stosu wyjątków wewnętrznych ---
w POEApi.Transport.HttpTransport.CloudFlareSessionIdLogin()
w POEApi.Transport.HttpTransport.Authenticate(String email, SecureString password, Boolean useSessionID)
w POEApi.Model.POEModel.Authenticate(String email, SecureString password, Boolean offline, Boolean useSessionID)
w Procurement.ViewModel.LoginWindowViewModel.<>c__DisplayClass29_0.b__0()
w System.Threading.Tasks.Task.Execute()

Also what I should use as "Alias" when I "Use SessionID"?

 You are getting the cloud flare error so just wait 30 seconds and try again.

Still cant login, tried it many times, even used alias one. Still cant login.

@crackingSounds  Once you've logged into the path of exile website, in the top left hand corner will be a link next to:
"Logged in as:"
Click on that, that will direct you to:
https://www.pathofexile.com/account/view-profile/THIS_IS_YOUR_ALIAS
Grab the alias from the end of the URL
Then grab the cookie as described on the wiki:
https://github.com/Stickymaddness/Procurement/wiki/SessionID
If it is still not working these steps could you please let me know the answer to the following questions:
a) Have you ever been able to login using the alias method?
b) Is your account via steam?
c) Do you have an account that you signed up with directly with pathofexile.com?
d) Are you using one of the localised sites? (BR, RU, TH...)
e) What version are you using, cloudflare circumvention is only in: V1.21.1
Hope you get logged in soon.

@aydjay Hello, Tried your this method too and did as you told me.
regarding the questions:
a) I never tired alias method as it used to get login through normal method during previous leagues.
b) No, its not.
c) Yes, I am using that account to play.
d) No, I dont think so.
e) I am using the latest one 1.24.1 and 1.24.2.
Its still showing cloud flare clarence failed

If i use the email method then it shows Error(503) - server error.

Ok thanks for the info. We will have to resolve the email login via cloud flare. Currently only login with alias will get you past cloudflare.

The next release will remove the ability to login via email, as SessionID is the only mechanism we are now able to support,


Audio feedback / echo cancellation?

Is there any way to prevent audio feedback? Seems sorta odd to playback audio captured by the mic.
Looks like this is usually accomplished by muting the local video element. I'm not certain how I would accomplish the same with this library.

this library enables lots of echo cancellation options on android ( I'm not sure about iOS ), maybe you can try to find out which is the best combination for your use case.
note: high-end devices usually has hardware EC embedded, it works well even you don't use any of software EC.
I' not sure about your case, but if you want to mute local stream, you can try something like:
let tracks = localMediaStream.getTracks();
if (tracks.length > 0) {
    tracks.forEach((element, index, array) => {
        element.enabled = false;
    })
}

I've tried. My application actually only sets enabled to true while you are
holding a button - like a walkie talkie. When enabled is false the audio is
no longer sent to remote peers but it still seems to playback for the local
peer which causes a feedback loop.
On Fri, Oct 21, 2016 at 4:56 AM zxcpoiu<EMAIL_ADDRESS>wrote:

this library enables lots of echo cancellation options on android ( I'm
not sure about iOS ), maybe you can try to find out which is the best
combination for your use case.
note: high-end devices usually has hardware EC embedded, it works well
even you don't use any of software EC.
I' not sure about your case, but if you want to mute local stream, you can
try something like:
let tracks = localMediaStream.getTracks();if (tracks.length > 0) {
tracks.forEach((element, index, array) => {
element.enabled = false;
})
}
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/oney/react-native-webrtc/issues/148#issuecomment-255361906,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AACWPxqxrkz4d2ceAz4wCwHaI0Q6S_ODks5q2Kh1gaJpZM4Kabo6
.

You can try turn mic off as well while you disabling track. This beyond the scope of this project, you can check source code in react-native-incall-manager, if I recall it correctly, there is a function doing that.
assuming both of your clients are speaker on like walkie-talkie, from my limited experiences, it is unavoidable if two clients close enough to each other (B party's mic can hear sound from A party's speaker )

Ignoring the second client/device, your suggestion would still mean
feedback when the mic is enabled. Is there ever a case where the audio
recorded by the mic should come through the speakers? The only audio that I
expect be playing out of the speakers is that from a remote peer.
On Tue, Oct 25, 2016 at 11:39 AM zxcpoiu<EMAIL_ADDRESS>wrote:

You can try turn mic off as well while you disabling track. This beyond
the scope of this project, you can check source code in
react-native-incall-manager, if I recall it correctly, there is a
function doing that.
assuming both of your clients are speaker on like walkie-talkie, from
my limited experiences, it is unavoidable if two clients close enough to
each other (B party's mic can hear sound from A party's speaker )
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/oney/react-native-webrtc/issues/148#issuecomment-256133040,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AACWP9QxCbv3_8_uXhnNXVpM9VZyEYvlks5q3kzugaJpZM4Kabo6
.

The only audio that I
expect be playing out of the speakers is that from a remote peer.

I agree, but I never experience feedback when there is only one device.
Does this occurs on iOS?
webrtc handles it's own media player, (maybe per stream one player ?)
usually, I only have one PeerConnection and have one Stream.
I don't have any theories for now but few factors we should consider:
( for android only )

try on one local stream / remote stream only and see what it does.
try on high-end devices to see if it occurs on some devices
try combination of echo cancellation options at L349
monitor some thing like AudioFocus AudioRouteChanged events on android to spot the source.

currently, I think the best workaround is using:
InCallManager.setMicrophoneMute(true) with track.enable = false


[iOS] Apply SponsorView design

Idea Description

Title says all

Reference images and links

🙋

@sudachi808
Thanks! Assigned 👍🏼


Add memory backend

Any plans to add memory backend? I see it is mentioned in README.
Might be could reuse existing libraries such as https://lib.rs/crates/stretto or https://lib.rs/crates/moka?

Hi, thanks for your attention to this project!
Of course, we have plans to integrate the in-memory backend. It's one of our high-priority goals at this moment.

Hi @prabirshrestha, we are about to release a new version of Hitbox based on Tower service infrastructure. So I would like to ask you, is it important for you to have in-memory backend in Actix-based version of Hitbox or is it not so important and you don't mind switching to Tower / Axum?

I'm looking it to use in Salvo and a worker so not sure how it would be related to actix or tower/Axum as I would expect the redis and memory backend to be agnostic of a web framework.


The model object in component data does not react to the changes of the data prop, resulting in bizaar behavior

I have deployed the liquor-tree component and found that any changes to the data prop do not affect the model object in component data.
Specifically, I have my code to compose two sets of tree data in terms of different languages. While I changed the tree data from a language to another by passing a different object as the data prop, the liquor tree is totally not affected.
After reading the source code, I assume that the tree data passed into the data prop is just an intermediate object. However, the model object in the component data, which is calculated based on the data prop, is the actual source of the tree.
Based on the assumption, a mechanism that watches the data prop changes is required.

Yess, when I load data via computed, it doesnt react !

oh, forgive me not turn to the closed issues. thanks for pointing it out, and i'll have a try.
please be so kind to close this issue. thanks.

Yes workaround is works for me !
**

@ViewData["Title"]

<tree :data="treeData" ref="tree" class="vehicle-tree" @@node:selected="onNodeSelected">

            <template v-else>
                <i :class="node.expanded() ? 'icon-folder-alt' : 'icon-folder'"></i>
                {{ node.text }}
            </template>
        </label>
    </tree>
</div>

tobunka-git U can close issue by yourself, it standart option of github !

@Diaskhan , I want to know how to keep the tree ui state(like expanded or selected etc.).
code from your comment will lose the ui state
self.treeData = response.data;
let model = tree.parse(self.treeData);
this.$set(this.$refs.tree, 'model', model);
tree.setModel(model);

Can you help me?
Many thanks!

Please check the example:

clone this repo
npm install
npm run dev
open Vuex Intergation page

There you will find, that I do not overriding the model. You can do it either on initialization stage or to override the model.
In your case you have to check which node you should update

Your example can work properly! But my condition is a bit different.
In one word, I just want to change tree data like the way below and do not lose the UI state:
this.$refs.tree.tree.setModel(newTreeData);

Many Thanks!

The workaround https://jsfiddle.net/amsik/b61h6wxk/10/ does not work properly: it load the tree elements but it does not apply the 'state' property of each element.
This new version: https://jsfiddle.net/b61h6wxk/27/ applies the 'state' property.
I just comment the last line:
let model = tree.parse(data)
this.$set(this.$refs.someTree, 'model', model)
// tree.setModel(model)

If you watch carefully you will see that the 'selected' state is not applied. I think it is due to this part of the code:
    // Nodes can't be selected on init. By it's possible to select through API
    if (this.options.checkOnSelect && this.options.checkbox) {
      this.unselectAll()
    }

Try new version: https://jsfiddle.net/amsik/b61h6wxk/29/


Add map-key navigator

This navigator would navigate to the key as opposed to the value. It would be used for efficiently and elegantly changing the value of a key in a map, e.g.:
(setval (map-key :a) :b {:a 1})
;; => {:b 1}

(setval [(map-key :a) NAME END] "!" {:a 1})
;; => {:a! 1}

An open question is what the behavior should be if the key does not exist in the map. Either it could navigate to the key no matter what (and insert nil as the value into the map), or it could act like must and not navigate.

Added in master

In order to be consistent with set-elem, decided to have map-key only navigate if the key exists in the map.


Port interal project from godot physics to Box2D, (dogfood the module)

I'm going to spend the next day porting our current game project to this module.  I expect it will convert fine, but it will be nice to have an actual project to dogfood along with development.

closing.  test project working fine in box2d


Bootgrid deleting checkboxes from rows

As you can see here: https://jsfiddle.net/jpjwso40/2/
If you don't call bootgrid, checkboxes load fine, but using bootgrid just deletes them. I'm not talking about id checkboxes, but other checkboxes that might appear in other cells.

You have to use a template I believe to make a check box for that field. I will try and reply back later with example. Will take me a minute but you may be able to find if you look under templates on example site.

You have to use formatters, here is an example:
https://jsfiddle.net/jpjwso40/3/
Also you can do validations to define if checkbox is checked by default or not.


Bad linking correction between label and input

What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)

Bug fix, now if you click on the label email it will select the right input.

What is the current behavior? (You can also link to an open issue here)

If you click on email label the name input will be selected.

@geekow thanks for your PR.


WIP: I-168 reorganize and document where messages come from

Do not merge, just a POC

Coverage remained the same at 47.466% when pulling adae5165eea8013d8f0f2b8868ef9919bf9e064b on EzequielPostan:I-168-reorganize-and-document-where-messages-come-from into 19f2e87596d370650d4bcdcd280594d65e64bc60 on ScorexFoundation:master.


Submission for Coding Challenge

https://people.sap.com/jacobtan

Thanks a lot for your contribution. The solution looks great and I'll close this PR now!
You should receive your badge soon.


Create Delta Time Series

Instead of whole numbers - report % changes back to the map.

For each of the time series, create delta versions - that is, a version that have the rate of change associated with it.
This should be implemented as a repeatable process with start and stop years. (Note that the first period won't be computable since there is no "before") - then linked with the Ingestion process.
These series should be made not primary, and should have IDs that relate them to their BLSIDs.


[Urgent security issue] FreeImage arbitrary code execution vulnerability

main 2 I think is the most important to point out

[CVE-2023-47994]
[CVE-2023-47992]

both of these can run arbitrary code one of them being from the BMP plugin
so I am assuming a person could get a user to load a malicious BMP or a file with a malicious bpm inside of it
Free Image should either be forked and fixed asap or abandoned for a different library
active project i could find  that use freeimage
https://github.com/sirjuddington/SLADE
https://github.com/TrenchBroom/TrenchBroom
https://github.com/RetroPie/EmulationStation
https://github.com/MonoGame/MonoGame
https://github.com/meganz/MEGAsync
https://github.com/OGRECave/ogre
https://github.com/OGRECave/ogre-next
https://github.com/Open-Cascade-SAS/OCCT
https://github.com/arrayfire/forge
https://git.sr.ht/~exec64/imv
https://github.com/arrayfire/arrayfire
Free Image v3.18.0

[CVE-2021-33367] (https://nvd.nist.gov/vuln/detail/CVE-2021-33367)
Buffer Overflow vulnerability in Freeimage v3.18.0 allows attacker to cause a denial of service via a crafted JXR file.

[CVE-2023-47992] (https://nvd.nist.gov/vuln/detail/CVE-2023-47992)
An integer overflow vulnerability in FreeImageIO.cpp::_MemoryReadProc in FreeImage 3.18.0 allows attackers to obtain sensitive information, cause a denial-of-service attacks and/or run arbitrary code.

[CVE-2023-47993] (https://nvd.nist.gov/vuln/detail/CVE-2023-47993)
A Buffer out-of-bound read vulnerability in Exif.cpp::ReadInt32 in FreeImage 3.18.0 allows attackers to cause a denial-of-service.

[CVE-2023-47994] (https://nvd.nist.gov/vuln/detail/CVE-2023-47994)
An integer overflow vulnerability in LoadPixelDataRLE4 function in PluginBMP.cpp in Freeimage 3.18.0 allows attackers to obtain sensitive information, cause a denial of service and/or run arbitrary code.

[CVE-2023-47995] (https://nvd.nist.gov/vuln/detail/CVE-2023-47995)
Memory Allocation with Excessive Size Value discovered in BitmapAccess.cpp::FreeImage_AllocateBitmap in FreeImage 3.18.0 allows attackers to cause a denial of service.

[CVE-2023-47996] (https://nvd.nist.gov/vuln/detail/CVE-2023-47996)
An integer overflow vulnerability in Exif.cpp::jpeg_read_exif_dir in FreeImage 3.18.0 allows attackers to obtain information and cause a denial of service.

Free Image before v1.18.0

[CVE-2021-40262] (https://nvd.nist.gov/vuln/detail/CVE-2021-40262)
A stack exhaustion issue was discovered in FreeImage before 1.18.0 via the Validate function in PluginRAW.cpp.

[CVE-2021-40263] (https://nvd.nist.gov/vuln/detail/CVE-2021-40263)
A heap overflow vulnerability in FreeImage 1.18.0 via the ofLoad function in PluginTIFF.cpp.

[CVE-2021-40264] (https://nvd.nist.gov/vuln/detail/CVE-2021-40264)
NULL pointer dereference vulnerability in FreeImage before 1.18.0 via the FreeImage_CloneTag function inFreeImageTag.cpp.

[CVE-2021-40265] (https://nvd.nist.gov/vuln/detail/CVE-2021-40265)
A heap overflow bug exists FreeImage before 1.18.0 via ofLoad function in PluginJPEG.cpp.

[CVE-2021-40266] (https://nvd.nist.gov/vuln/detail/CVE-2021-40266)
FreeImage before 1.18.0, ReadPalette function in PluginTIFF.cpp is vulnerabile to null pointer dereference.

Do you have any recommendations for freeimage replacement ? Is this vulnerability only in the latest 3.18 version ? Are previous versions free of this problem ?


Error on player load

When a player loads into my game they immediately get the following error:
foundry.js:319 TypeError: Cannot read properties of undefined (reading '_getTriggersFromTokens')
[Detected 1 package: SharedVision]
    at triggerHappy_ControlToken (externalModules.js:95:34)
    at sharedvision.js:19:73
    at Function._call (foundry.js:294:14)
    at Function.callAll (foundry.js:253:12)
    at Token5e.control (foundry.js:21652:11)
    at Canvas._initializeTokenControl (foundry.js:20312:13)
    at Canvas._initialize (foundry.js:20226:10)
    at async Canvas.draw (foundry.js:20078:7)
    at async Scene.view (foundry.js:17803:7)
    at async Game.initializeCanvas (foundry.js:5679:20)
    at async Game.setupGame (foundry.js:5550:5)
    at async Game._initializeGameView (foundry.js:6510:5)
    at async Game.initialize (foundry.js:5433:5)

Thanks for you bug report.
The bug is part of the Trigger Happy compatibility. It looks like something changed in Trigger Happy.
I'll look into it.