Not able to login

I cant login because this error response gets returned from server:
 {"status":"ERROR","data":"server_not_supported"}

Sorry for this super late reply.
Login feature in this project require mcrypt_encrypt module.
Please enable mod mcrypt in PHP.
On the other hand, empty session_encrypt in startup.php will also cause this problem.
Please make sure the following part are set.
$START_UP = array(
	'session' => array(
		'token' => 'RD_TOKEN',
		'encrypt' => 'here add 32char string as key',
	),
);

I have a update on its framework. it using startup.php instead of manifest.json.


Add Circuit as option to FirrtlOptions

This allows providing the circuit as an option FIRRTL rather than having to parse. This will enable direct Chisel IR -> CHIRRTL in memory to bypass the ANTLR parser which has terrible memory use on large designs.
This does have a minor API change in that it firrtlSource would just silently override inputFileNameOverride and here I made that an error, so I'm not sure if it can be in 1.1.1. I'm also wondering if functions like getCircuit and getAnnotations should be defined on the FirrtlOptions? I'm not sure how this relates to https://github.com/freechipsproject/firrtl/pull/765, thoughts @seldridge?

This may have consequences for #765 and #764 (and the direction of those is still open to debate...). Those disallow direct creation of the FirrtlExecutionOptions case class. That would be defined only inside the Driver of a utility. The only representation of options would be an Array[String], an AnnotationSeq, or both (where String args will be added to the existing AnnotationSeq).
Obviously Array[String] cannot handle a Circuit argument, however, can the circuit be efficiently encoded in an annotation and avoid parsing? I.e., is the following tractable?
case class FirrtlCircuitAnnotation(circuit: Circuit) extends NoTargetAnnotation

If it can (and associated JSON serialization/deserialization doesn't need parsing), then the thrust of this should be fine.

Yeah I see. I don't think converting it to use such an Annotation is a problem at all. Is the plan on #765 still to convert to TypeClasses and views?

Yes, that's still the working plan. I've held off on updating #765 to use that until there was some consensus. Developer meeting consensus so far (Chick/Jim) has been positive on the TypeClass/view pattern.
No rush there. The only useful information to consider is how that approach aligns with or violates intended uses of FirrtlOptions/ChiselOptions/TreadleOptions/etc., like what you propose here.
Yeah, doesn't look like there's any problem here. (So, some additional evidence that the #764 pattern at least encompasses some new intended usage cases.) :+1:


Prevent imported feature files from changing existing issue data

When importing feature files during feature file synchronization, any existing issue information is replaced with the imported feature file's data (summaries, steps, tags, ...). Having an option at hand for disabling this behaviour would be useful.

The jira ticket title is altered too, although I just wanted to upload the Feature with the background steps together. So either I dont upload anything or my tickets are altered completely (title, tags, cucumber steps), but I wished only the steps to be uploaded or altered.

Originally posted by @alexviz7 in https://github.com/Qytera-Gmbh/cypress-xray-plugin/issues/86#issuecomment-1619598484

Related to #83.

Hey @alexviz7, I just released version 4.0.0, which now automatically backups the issues' summaries. Should the imported feature file change them, they will be reset afterwards. Can you check if this works for you? If it does, I will add more backup options (description, labels).

Ok thank you for confirming, I will add label backups and description backups then in the next few days.
I mostly only have access to a cloud instance and was unsure if this approach of reverting import changes works for server instances too. I will ping you again once it's done.

Also test execution files now have as an assignee the standard assignee of the project, which is the product owner, but not the one with the Jira PAT, which is me. This was not the case with the previous version.

Creating any jira ticket manually will have the assignee input field filled with the name of the product owner, so Its not an issue perse. However with the previous plugin versions the ticket created by the plugin had my name as an assignee as it was my PAT that was used.

issue with labels and assignee is still reproducible with the version 4.0.1

Creating any jira ticket manually will have the assignee input field filled with the name of the product owner, so Its not an issue perse. However with the previous plugin versions the ticket created by the plugin had my name as an assignee as it was my PAT that was used.

I think it is a minor issue since I will use fixed test execution files instead of generating new ones each time.

Hi

Hi how is the progress going?

I'm working on it, but life has been busy. It's taking a little bit longer because I need to introduce new options, and I'm careful aroud new options to prevent a series of breaking bug fix changes.

Hey @alexviz7,
Version 4.0.2 is now released and should include a fix which resets the labels to their original set after a successful feature file import.
The new version does not include any updates to your assignee problem, though.
Can you confirm if the label reset works?

Hey @alexviz7,
version 4.0.3 should fix the error.

I run various tests with or without test execution file and I couldn't find a bug anymore. It works! Ticket can be closed.


Skip sending email

Skip seding email in development environment.

This PR has been pushed. Thanks :+1:


Configuration for Ladybug Rest API

This pull request contains configuration changes to web.xml, and bean configuration.
This pull request is related to https://github.com/ibissource/ibis-ladybug/pull/61

We can merge this once ibissource/ibis-ladybug#61 has been approved and merged and a new ladybug version has been made :)

Replaced with #2139


chore: limit width on tablet

This PR resolves ONYX-977
Description
This PR makes the content on tablet limited to 800 pixels (or less if it's a really small one). This came from the conversation with Barney

PR Checklist

[x] I have tested my changes on iOS and Android.
[x] I hid my changes behind a feature flag, or they don't need one.
[x] I have included screenshots or videos, or I have not changed the UI.
[x] I have added tests, or my changes don't require any.
[x] I added an app state migration, or my changes do not require one.
[x] I have documented any follow-up work that this PR will require, or it does not require any.
[x] I have added a changelog entry below, or my changes do not require one.

To the reviewers 👀

[ ] I would like at least one of the reviewers to run this PR on the simulator or device.

#nochangelog
Need help with something? Have a look at our docs, or get in touch with us.

Warnings

:warning:

✅ No changelog changes

  Generated by :no_entry_sign: dangerJS against 3a03fbdc495ac7a7affad08cdeef9667f12fada0


Mutating location

Is there any way to mutate the window location?

Currently you can do it through the js! macro as the Location object doesn't expose any setters.


Security: Regular Expression Denial of Service

See https://nodesecurity.io/advisories/46
Caused by:
<EMAIL_ADDRESS>><EMAIL_ADDRESS>><EMAIL_ADDRESS>You need to use the latest version of debug, which pulls in ms version 0.7.1 or greater.

Done. Thanks for the heads up !

No problem!


Fix the invalid link

Notes for Reviewers
This PR fixes #7168 #7138
Signed commits

[x] Yes, I signed my commits.

🚀 Preview for commit a91bbe9ffe1c0ac825581b3aa81bf19a428e3c63 at: https://63f7808178e93a1c468f6398--meshery-docs-preview.netlify.app


Update gulpfile.js

root can be either window or globals (given configuration) but without this, JS will not lookup in globals object (only in window)
Setup:
Using browserify and require('chart.js')
The error I saw previously was:
chart.js:7209         Uncaught ReferenceError: Chart is not defined

Addresses #1851

I see what this is fixing. I am +1 to merge.
Will probably clean a lot of this up soon so that we don't use the implicit context to find the chart variable. Until then, this is good.


Missing tests for AddressBook contract

Missing unit tests for the following messages

add_identity
remove_identity
update_nickname

Not possible to test with unit tests, for this reason this functionality is tested with e2e tests.


children component disappear when router-link navigates to a exactly same named dynamic route with object type "to" props

Version
2.7.0
Reproduction link
http://jsfiddle.net/zhukaihao/eo9a14ck/4/
Steps to reproduce
点击/user/foo，子组件创建；
再次点击/user/foo，子组件消失，vue-devtools显示该子组件未被创建；
Click /user/foo, subcomponent is created;
Click /user/foo again, the subcomponent disappears, vue-devtools shows that the subcomponent is not created.
What is expected?
点击/user/foo多次，子组件始终存在。
Click /user/foo repeatedly, subcomponent always exists.
What is actually happening?
点击/user/foo第二次，子组件消失，vue-devtools显示该子组件未被创建；
Click /user/foo again, the subcomponent disappears, vue-devtools shows that the subcomponent is not created.

/user/foo的to属性是一个对象，/user/bar的to是一个字符串。点击/user/bar多次，子组件始终存在。
The prop to of /user/foo is an object, yet the prop of /user/bar is a string. Click /user/bar repeatedly, subcomponent always exists;

Please look at the console:

Named Route 'user' has a default child route. When navigating to this named route (:to="{name: 'user'"), the default child route will not be rendered. Remove the name from this route and use the name of the default child route for named links instead.

In essence, that means:

Bad: this.$router.push({name: 'user'})
Good: this.$router.push({name: 'userHome'})

http://jsfiddle.net/Linusborg/eo9a14ck/5/
This is a bit inconsistent behaviour, but hard to change with the current way of things in the source.
Using the child route's name solves this.

Thank you！


[Request] Add option to delete media

Hello,
Just wondering if there is plans to add the option to delete individual tracks or albums?
That is the only thing keeping me using this as opposed to the native jellyfin client.
Thanks!

As in remove them from the media library or remove them from a playlist?

As in delete from the library completely, thanks

Thanks. This should be mildly straightforward, as I'm sure the Jellyfin API supports those requests. I'm a little bit short on time myself however, so for anyone willing to pick this up, I'll gladly give some pointers.


optimization: 忽略无效拓扑节点 (close #191)

Codecov Report

:exclamation: No coverage uploaded for pull request base (V2.1.362-rc@fd10144). Click here to learn what that means.
The diff coverage is n/a.

@@              Coverage Diff               @@
##             V2.1.362-rc     #381   +/-   ##
==============================================
  Coverage               ?   62.76%
==============================================
  Files                  ?      246
  Lines                  ?    19968
  Branches               ?        0
==============================================
  Hits                   ?    12532
  Misses                 ?     7436
  Partials               ?        0

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 fd10144...89b7d0b. Read the comment docs.


Wekrzeug on Flask debug mode raise TypeError: Unicode-objects must be encoded before hashing

I'm running these version Werkzeug==0.11 with Flask==0.10.1 on Python 3.5.0
TypeError raised on line 96 from werkzeug/debug/init.py
    h.update('cookiesalt')
    cookie_name = '__wzd' + h.hexdigest()[:12]

It said there that Unicode-objects must be encoded before hashing. So, I tried to change source
code like this:
    cookiesalt = 'cookiesalt'
    h.update(cookiesalt.encode())
    cookie_name = '__wzd' + h.hexdigest()[:12]

Then the server can run.
I don't know if what I did is the right thing, since I don't understand how werkzeug internally works. Maybe it is a bug?

Same here.

Duplicate of #798

Fixed in 0.11.1

Hey, i'm have the same problem, but i'm already on werkzeug 0.11.6 ---  what should i do?

See #897

Thanks!


Got an untitled dirty file on startup

Not sure how to reproduce: I was on master before accepting your changes, then did a pull to fetch latest and then I started out of sources. Right on startup I noticed a dirty untitled file showing up even though hot exit was not enabled.
Maybe this happens when you have no hot exit data whatsoever and its the first time you launch with those changes?

This is expected if you had a left over Untitled file to restore when you were testing (hot exit enabled), and then switched back to master and disabled hot exit. Do you think that could have happened?

Yes, Sir 👍


Fix for Issue #1020

Under x64, the PE loader looks for callbacks in constant sections

Applied. Thanks.


Compare against branch other than master.

Do you want to request a feature or report a bug?
Feature
What is the current behavior?
Bundle size comparisons are done against master. This is hardcoded.
If this is a feature request, what is motivation or use case for changing the behavior?
We use https://datasift.github.io/gitflow/IntroducingGitFlow.html for managing releases, where feature branches are merged into a separate branch before being packaged up into releases. Because of this, it's much more useful to compare the current branch against the head branch (in this case, develop).
The current configuration doesn't allow for any extra keys (it's an array of objects). Should this be done as an environment variable since it's only really relevant for CI?
Please mention other relevant information.

bundlesize version
0.14.1
CI you are using
CircleCI

I can submit a PR for this, would just like to get a 👍  for the idea and approach.

@threehams this is a very good point! I would live to see this happen so if you could a PR that would amazing 🙌
Let us know if you find any issues or need help in the PR 😄

What do you think of the question above?

The current configuration doesn't allow for any extra keys (it's an array of objects). Should this be done as an environment variable since it's only really relevant for CI?

I think an easy way of achieving this without breaking backward compatibility would be to introduce a new optional key bundlesize-config right next to bundlesize in package.json
We did discuss having a separate config file here, but I don't think we need it yet.

This is the goal I had in mind when submitting https://github.com/siddharthkp/bundlesize/issues/173 (spoilers I work with David).  "master" is currently hardcoded, but if it were drawn from config it could be any base branch or merge target.
I think this idea is compatible with using ENV vars, too.  The config object could be in charge of all the data sources.

Closing this issue for now because it has not had recent activity. Thank you for your contributions.


feat: implement UserSettings page

          > We should provide the list of timezones in the dropdown.

This should be in a lib - https://stackoverflow.com/questions/38399465/how-to-get-list-of-all-timezones-in-javascript
Perhaps it can be done in a new PR though

Opening a new issue to implement the form functionality, and this can be included also🍕
Originally posted by @OgDev-01 in https://github.com/open-sauced/insights/issues/788#issuecomment-1397268784

push back on timezones, we need to ensure we can use the location of the user, not enable them to pursue a job in their local timezone and select different time zone to pursue another.
it has no value until we can safely translate the existing location information into timezones, and adjust the information displayed on website to match the selected timezone.


Ignore Field for generation

Problem statement
I have a concrete class where a field is defined say "fieldX"
Now i have json schema in which i need to validate fieldX using json schema validator also i am generating class from json schema which extends the above mentioned class so i dont want the jsonSchema2pojo to generate that field.
Eg.
public class concreteClassA{
private String email
}

{
  "definitions": {},
  "$schema": "http://json-schema.org/draft-07/schema#",
  "_id": "http://example.com/root.json",
  "extendsJavaClass": "concreteClassA",
  "type": "object",
  "title": "The Root Schema",
  "properties":{
"fieldA": {
      "_id": "#fieldA",
      "type": "string",
      "title": "The fieldA Schema",
      "pattern": "^(.*)$"
    },
"email": {
      "_id": "#email",
      "type": "string",
      "title": "The fieldA Schema",
      "pattern": "email"
    },

}
}

so i dont want email field to be generated

This isn't a use-case we want to support I'm afraid. This library is about generating types to represent your JSON, not for supporting any possible Java requirement to build different types.


Remove resource hooks in favor of resource middleware

Hooks have several problems and limitations compared to middleware:

We need two methods (before and after hooks)
We can't control the flow as detailed as we would want (Find hooks can modify the query, Get hooks can't)
We can't abort/change the flow without raising an error (E.g. call patch instead of delete/clear to implement soft delete).

With middleware we get more power:

We can do both pre and post operations within a single method.
We can control the flow, e.g. call patch instead of delete to implement soft delete.
We can always modify the query.

I want to suggest completely removing resource hooks in favor of middleware. This may involve making resource.Resource an interface that can be wrapped, or we might decide it's sufficient to wrap the storage layer and document that as the way to implement hooks. It could also involve changing the methods of a resource to be settable (except for wrapper methods such as MultiGet), setting the methods to the storage layer method on initalization, and wrapping them when Resource.Use is called.

The issue I see with middleware is that it makes it harder to use optional interfaces. We use those on storer for instance, IIRC.

I think that's solvable with clousure defaults, however I think we can probably just drop the optional interfaces all-together and make things easier. To make writing middleware easier we can also drop the Get and Delete methods:
type Storer interface{
	Count(ctx context.Context, q *query.Query) (int, error) // merged from Counter interface
	Find(ctx context.Context, q *query.Query) (*ItemList, error)
	Clear(ctx context.Context, q *query.Query) (int, error)
	Insert(ctx context.Context, items []*Item) error
	Replace(ctx context.Context, item *Item, original *query.Query) error // original as query
}

Middleware we could now wrote:

Simple and safe permission checks that only alter the query (for all methods).
Soft delete can alter the flow without raising errors, e.g. call Patch on parent.

The resource could still provide convenience methods for Delete, Get and MultiGet by ID on top of Clear and Find.
I am imagining we still call  a method on Resource to apply middleware. E.g.:
// Type aliases for functions.
type (
	CountFunc = func(ctx context.Context, q *query.Query) (int, error)
	ClearFunc = CountFunc
	FindFunc = func(ctx context.Context, q *query.Query) (*ItemList, error)
	InsertFunc = func(ctx context.Context, items []*Item) error
)

type CountMiddleware struct {
	CountFunc(parent Resource) CounterFunc
}

type FindMiddleware struct {
	FindFunc(parent Resource) FindFunc
}

// ...

type Resource struct {
	count CountFunc
 	find FindFunc
	clear ClearFunc
	insert InsertFunc
	// ...
}

// newResource creates a new resource with provided spec, handler and config.
func newResource(name string, s schema.Schema, h Storer, c Conf) Resource {
	return Resource{
		count: h.Count,
		find: h.Find,
		// ...
	}
}

func (r Resource) WithMiddleware(m interface{}) Resource {
	if t, ok := m.(CountMiddleware); ok {
		r.count = t.CountFunc(r)
	}
	if t, ok := m.(FindMiddleware); ok {
		r.find = t.FindFunc(r)
	}
	// ...
	return r
}

func (r Resource) Get(id interface{}) (*Item, error) {
	// Call Find with limit 1, report 0 items found as error
}
func (r Resource) Delete(id interface{}) error {
	// Call Clear with limit 1, report 0 deleted as error
}

Dropping MultiGet on storer would prevent some storage from implementing some interesting optimizations.
If you can't add a middleware for the Get method, how do you handle ACL for resource per id?
In your example you can not chain middleware right? Calling WithMiddleware more than once would override existing middleware. Also, I'm not a big fan of m interface{} argument.

In your example you can not chain middleware right? Calling WithMiddleware more than once would override existing middleware. Also, I'm not a big fan of m interface{} argument.

No, it can be chained; r Resource is not a pointer reciever, and is thus copied each time it's passed to a new variable or function.

If you can't add a middleware for the Get method, how do you handle ACL for resource per id?

m interface{} argument

This is the same as what we get for hooks today:
// Use attaches an event handler to the resource. This event handler must
// implement on of the resource.*EventHandler interface or this method returns
// an error.
func (r *Resource) Use(e interface{}) error {
	return r.hooks.use(e)
}

But agree it would be nice with a concrete interface, but then you can't allow middleware for multiple operations to be passed in the same function call.

m interface{} argument

Maybe this is better:
type MiddlewareFunc func(r Resource) Resource

We don't even need to define this, it could just be by convention.
Example middleware:
func WithSoftDelete(r Resource) Resource {
	parent := r
	r.Clear = func(ctx context.Context, q *query.Query) (int, error) {
		deleteTime := time.Now()
		for _, item := parent.Find(ctx, q) {
			origQ := query.Predicate{
				query.Equal{"_etag", item.Etag},
				query.Equal{"id": item.ID},
			}
			item.Payload["deletedAt"] = deleteTime
			item.UpdateEtag() // recalculate E-tag based on item changes.
			orig.Replace(item, origQ)
		}
	}
	return r
}

Ideally Replace would also be defined as a bulk operation somehow to allow doing this kind of things as a transaction internally in the storage layer.

Dropping MultiGet on storer would prevent some storage from implementing some interesting optimizations.

If we could get a simpler / safer access control, and get to implement soft-delete, I would say it's well worth the price.
Storage layers could still optimize fetching multiple items by ID, but would need to inspect the Find predicate to do so rather than implementing an additional interfaces. I don't know which storage engine you had in mind that can do a multi-get faster than a normal find with id :{$in: [...]}?

That's my point, it is expensive to introspect a query to see if an optimization is possible. Same for ACL, how do you put an ACL on /obj/<id> without a hook on "get"?

Same for ACL, how do you put an ACL on /obj/ without a hook on "get"?

Get wraps Find (which already have the right middleware set).

Calling Get(ctx, id) results in a Find(ctx, q.Query{Predicate: query.Equal{"id", id}, Window:query.Window{Limit: 1})
Find issues the relevant permission middleware to AND in the relevant permission criteria.
If Find returns 0 results, Get returns "not fond".

The same is through with Delete which would wrap a Clear call with all relevant middleware applied.
Our own permission syte, isn't actually ACL; permissions are stored on "protected fields" on the object, or on related objects that are fetched before the resource itself, but I don't get how this would be any different with an ACL permission system.

That's my point, it is expensive to introspect a query to see if an optimization is possible.

For the case in particular, it's something like this:
// AsIDQuery returns an IDQuery or nil.
AsIDQuery(q *query.Query) *IDQuery {
    if len(q.Predicate) != 1 {
        return nil
    }
    in, ok := q.Predicate[0].(query.In)
    if !ok || in.Field != "id" {
        return nil
    }
    return *IDQuery{IDs: in.Values, Window: q.Window}
}

Or something like that...
I could agree it being complex, but I don't buy that it's going to be expensive. The best thing about it complexity wise, is that the complexity is moved from the rest-layer end-user to the rest-layer storer backend implementation, and that's a good thing.
To reiterate on the last point from our own experience on writing hooks, it's really hard with the current hooks. For the permission hooks in particular, we need to:

Modify the query on Find  / Clear / Count operations.
On Get, we can't modify the query (we can redirect to a Find call), and we need to wait until we have fetched the resource, and then match our permission query on the fetched item in code.

Writing a proper Soft-delete, as explained by #225, just isn't possible through hooks. Probably we could do everything we want as middleware directly on top of the Storage layer, but we have so far chosen to use the documented hooks instead.

Same for ACL, how do you put an ACL on /obj/ without a hook on "get"?

OK I get what you mean now. You refer to if, e.g. a user has get:resource permissions but not list:resource permissions. I was thinking about filtering out specific items that the user has permission to, and not wether or not the operation as a whole is allowed for a particular user.
Yes, you have a point. Probably we need to allow middleware for Get. As long as we can still redirect it to do a Find in our per-item permission middleware, that's fine.

Ok, if we go that route, why not simplifying it even more and just let people wrap storer to build middleware like it is down with HTTP? This way there is no complexity to be added at the rest-layer layer.

Yeah, Probably thats fair.


User's widget layout preferences not saved

Describe the bug
Expected behavior
Users have the ability to move widgets around to redefined their UI layout as they want. When a user leaves the viewer, he's expecting that his layout will be saved throughout his sessions with the viewer.
Current behavior
The user's layout isn't saved properly.
To Reproduce

Checkout and run apps/test-viewer from https://github.com/iTwin/viewer-components-react with any model
Drag any widget to another section of any panel. (https://github.com/iTwin/appui/assets/147163568/7ef37697-bee5-4a4c-8579-d76ab6447d13)
Reload the page
Notice the widget layout is reset

** 2.5 - Reorder widgets within the same section. (https://github.com/iTwin/appui/assets/147163568/327a1b09-2036-41b2-8c3a-761b081a64e9)
Expected Behavior
Dragging any widget to another section or reordering widgets tabs should be preserved throughout users' sessions.
Screenshots
Initial load local storage key:

After the user has moved a widget to another section:

After reordering widget tabs:

After reloading:

Desktop (please complete the applicable information)
Chrome Version 124.0.6367.119 (Official Build) (64-bit)
Additional context
No response

Just to add that this was working fine in previous versions, users are already using this functionality and this will be now a big regression to them (issue with migration to v4). Please consider this as important

This is due to https://react.dev/blog/2022/03/29/react-v18#new-strict-mode-behaviors
I'll fix the affected hooks.

Fixed in https://github.com/iTwin/appui/releases/tag/release%2F4.13.4


⚠ Bofrost.be has degraded performance

In 1ee14c3, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 871 ms

Resolved: Bofrost.be performance has improved in a6c3b68.


Issue1 preparation

Please always provide the GitHub issue(s) your PR is for, as well as test URLs where your change can be observed (before and after):
Fix #1
Test URLs:

Before: https://main--qsr--meejain.hlx.live/
After: https://issue1-preparation--qsr--meejain.hlx.live/

Not working


fix(app): update styles in about page

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


[SPARK-36326][SQL] Use computeIfAbsent to simplify the process of put a absent value into Map

What changes were proposed in this pull request?
The main change of this pr is try to use computeIfAbsent to simplify the process of put and get missing value in a map.
Before
  V oldValue = map.get(key);
  if (oldValue == null) {
    V newValue = functionToProduceMissValue
    map.put(key, newValue);
  }

After
map.computeIfAbsent(key, functionToProduceMissValue);

Why are the changes needed?
Simplify code use Java 8 API.
Does this PR introduce any user-facing change?
No
How was this patch tested?
Pass the Jenkins or GitHub Action

Test build #141768 has started for PR 33558 at commit 1010705.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/46281/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/46281/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/46281/

Test build #141768 has finished for PR 33558 at commit 1010705.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

cc @srowen @HyukjinKwon @dongjoon-hyun  It seems that only this place can do such code simplification

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/141768/

There is one other instance you could change in AbstractCommandBuilder.getEffectiveConfig

There is one other instance you could change in AbstractCommandBuilder.getEffectiveConfig
OK, let me check this

There is one other instance you could change in AbstractCommandBuilder.getEffectiveConfig

The original method as follows:
  Map<String, String> getEffectiveConfig() throws IOException {
    if (effectiveConfig == null) {
      effectiveConfig = new HashMap<>(conf);
      Properties p = loadPropertiesFile();
      for (String key : p.stringPropertyNames()) {
        if (!effectiveConfig.containsKey(key)) {
          effectiveConfig.put(key, p.getProperty(key));
        }
      }
    }
    return effectiveConfig;
  }

Can we do sth like:
p.stringPropertyNames().forEach(
  key -> effectiveConfig.computeIfAbsent(key, k -> effectiveConfig.put(p.getProperty(k)));

?

@HyukjinKwon if we choice to use computeIfAbsent , Maybe effectiveConfig.computeIfAbsent(key, p::getProperty) is enough, it will put the missing k -> v into the map

ignore the return value of computeIfAbsent method.

Thanks. Just trying to understand more. Why is this a problem?

I thought about it carefully, there seems to be no problem, I'll update the code and comments, thx @HyukjinKwon

Test build #141841 has started for PR 33558 at commit 3edd053.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/46355/

Test build #141841 has finished for PR 33558 at commit 3edd053.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/141841/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/46355/

Merged to master

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/46355/

+1, late LGTM. Thank you, @LuciferYang and all!


[Fix-5701]When deleting a user, the accessToken associated with the user should also be deleted

Purpose of the pull request
Fix issue: #5701
Brief change log
When deleting  an userl, I add a new method to delete the releated accessTokens(if exists)
Verify this pull request

Manually verified the change by testing locally
add a new UT.

What's more
In addition to the problems mentioned above, I have another question:
Assume the following scenario:
if a user has an accessToken, and it hasn't  expired. At this time, I disable the user:
1. Does it necessary to update the expire time of the relealted accessToken ?
---已经禁用的用户对应的未失效token是否应该更新下失效时间表明该token其实已经无效？
2. Is it necessary for disabled users to appear in the drop-down list of users allowed to create accessToken?
---已经禁用的用户是否不应该出现在创建新的AccessToken时可选的用户下拉列表中?

@kyoty Please submit an issue and link this pr to the issue

Thanks @chengshiwen, I'll submit a new issue.

Codecov Report

Merging #5697 (de2734b) into dev (b31ba7e) will decrease coverage by 0.01%.
The diff coverage is 100.00%.

@@             Coverage Diff              @@
##                dev    #5697      +/-   ##
============================================
- Coverage     45.36%   45.34%   -0.02%
+ Complexity     3688     3686       -2
============================================
  Files           607      607
  Lines         24855    24856       +1
  Branches       2825     2825
============================================
- Hits          11275    11272       -3
- Misses        12498    12499       +1
- Partials       1082     1085       +3

Impacted Files
Coverage Δ

...inscheduler/api/service/impl/UsersServiceImpl.java
74.66% <100.00%> (+0.05%)
:arrow_up:

...er/master/dispatch/host/assign/RandomSelector.java
77.77% <0.00%> (-5.56%)
:arrow_down:

...dolphinscheduler/remote/future/ResponseFuture.java
81.35% <0.00%> (-1.70%)
:arrow_down:

...olphinscheduler/plugin/alert/email/MailSender.java
72.91% <0.00%> (-1.39%)
: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 b31ba7e...de2734b. Read the comment docs.


Integration tests for Store and Forward capability

Add integration tests to cover the Store and Forward capability.
Acceptance Criteria is as follows:

Data is stored for later retry when export function (HTTP or MQTT) fails and persistOnFailure is true and config setting Writeable.StoreAndForward.Enable = true
Stored data is exported when retry occurs and connection is good just as if it was exported without error originally.
Stored data is cleared from the DB once successfully retried.
Stored data retry count is incremented each time the export retry fails and is updated in DB.
Stored data is cleared from the DB after the maximum configured retires. (Writeable.StoreAndForward.MaxRetries config setting)
Changing the function pipeline results in any data stored for that app service to be cleared on the next retry.
Retry loop is only run when config setting Writeable.StoreAndForward.Enabled is true
Retry loop interval is set by the Writeable.StoreAndForward.RetryInterval config setting
Export retries will resume after application service is restarted, i.e. store data is persisted between restarts of the application service.
RetryCount resumes after application service restart, i.e. it isn't reset.
Changes to Writeable.StoreAndForward values are dynamically processed without restarting the application service.

This can be an extension of the existing End to End testing.

@lenny-intel Cherry is working on writing the related test cases.
However, from the blackbox test point of view, we won't verify or access database directly because there is no API for that.
We will only verify the behavior of app service from the external service.

@lenny-intel could you please clarify this item?
Changing the function pipeline results in any data stored for that app service to be cleared on the next retry.
We tested it manually by changing pipeline function at runtime, but the stored data didn't be cleared.  Is it a bug?


Linux / macOS builds: Compiles fine, Python cannot load plugin library

Hello,
I tried to build the plug-in for Linux and macOS, compilation/linking works just fine, but then when I try to use it in a VapourSynth script I get this message:
Python exception: No entry point found in /usr/lib/local/vapoursynth/libbestsource.so
On macOS it's the same error message (of course different path/extension).
I checked the github runners here, they only test if building works, not if the actual result is usable, so not sure if I'm doing something wrong or if this is a general issue. Any experience building on Linux / macOS?
Best regards
Stefan

Ah, thanks, yes, I didn't check the output files, libbestsource.so existed, so I just took it. I now compile with static build enabled and it works fine.
The only thing left to figure out is how to build with littlecms support (ffmpeg configure has linking problems when building the littlecms test)


Add a secure client sample

We add a new secure client example using tinydtls. It is largely inspired by the lightclient example.
Currently, it support only PSK and must be bootstrapped.
Next feature could be to make the bootstrap step optionnal and support RPK too. (maybe also having a way to persist security and server object)
Signed-off-by: Simon Bernard<EMAIL_ADDRESS>Also-by: Julien Vermillard<EMAIL_ADDRESS>

Thanks Simon but I'm pretty sure we can not include the tinydtls source code in the wakaama repo. I have to check with the Eclipse legal.
BTW, you can also find a DTLS enabled client in the IPSO branch (the tests/client with compilation flag WITH_TINYDTLS. To build it, you need tinydtls to be installed in your sysroot). It is less elegant than yours as the DTLS handling is not split in a separate file. I am waiting for tinydtls to be part of the Eclipse Foundation before pushing anything to master.

Since we have the agreement for "works-with" we can integrate example depending on tinydtls.
But yes we should not commit the code in the repo and let the user download it.

@dnav I prefer our implementation :) we fixed a bunch of issues (IPv6 with IPv4 address compare) and made the security and server object writable for bootstrap.

Is it possible to get some information on compatibility checks?
Does it work with "DTLS role change"
(discussed in the californium/scandium e-mail dev-list, see
http://dev.eclipse.org/mhonarc/lists/cf-dev/msg00436.html)?
What happens, if one site restarts without inform the other side (crashs,
Does this rely on exchanging "DTLS Alerts (e.g. CLOSE_NOTIFY)")?

if it's the device which crash after hand shake restarting with a fresh Client Hello will work with scandium as a server. (if the device crash during the handshake is another story, simon is trying to identifying a possible scandium bug here).
I reported some tinydtls bugs on packet loss:
https://sourceforge.net/p/tinydtls/tickets/42/
https://sourceforge.net/p/tinydtls/tickets/43/
Also I didn't tested the case where you restart the server (but everybody knows servers never crash :)
So we still have some work on this front to get it bullet-proof.

@sbernard31, could you make a commit without the tinydtls source code ? Thanks.

I remove the tinydtls source code and add some option to use secure client without bootstrap.
(before integrated this in master, we should probably squash this in 1 commit, I don't do it to make the review easier)


Pridetopia

So far, the following Pridetopia stickers have been printed:
https://entropia.de/Datei:Pridetropia.svg as "normal" 50x70mm Sticker on white background, rectangular.
Rights not declared in wiki, probably all to @madonius?
https://entropia.de/Datei:Transtropia.svg
https://entropia.de/Datei:Lesbtropia_white_stripe.svg
https://entropia.de/Datei:Nonbinarytropia.svg
Printed in teebeutel shape (custom cutout) as "small" 35x47mm Stickers, all source files public domain, the adjustments for the print done by Clemens from Entropia. All rights declared in linked Wiki.
Raw files uploaded to wirmachendruck attached incl. Cutout Layer
Lesbian-2.pdf
NonBinary-final_echt_v2.pdf
Traaaans.pdf

The stickers were added - thank you!


App crashes on startup if zipkin collector is not running

(This is particularly annoying if all you wanted to do was log the spans.)

running with --sleuth.sample.logging.collector.enabled=true or --spring.sleuth.zipkin.enabled=false works for me

I changed the property name to sample.zipkin.enabled=false. It works, thanks.


add french translation

This PR ad basic translation abilities.
I've never tried nextjs before, but it seemed using next-translate package.
It may be rough around the edges, but at least it gives a baseline to add translation.
The overall structure doesn't change.
But the locale URL is prefix to the route.
So for french instead of https://invoicedragon.com/templates, you can use https://invoicedragon.com/fr/templates
translating the pdf doesn't work yet though

This PR helps with the issue #3

Thanks for this! I'll be reviewing it soon 😊

looks great!


Can't register

Subject: Can't register
Description:
Don't know my ID
Results:
I can't login
Backend version: develop-2a85c9e0
Frontend version: develop-2a85c9e0
User Agent: Mozilla/5.0 (Linux; Android 9; Redmi Note 8 Build/PKQ1.190616.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/99.0.4844.58 Mobile Safari/537.36
Page: https://couchers.org/login?from=%2Fuser%2Fadventure
User:

not enough info or can't reproduce


[Crash on Startup] - 1.18.2 Fabric - Lot of Mods are present

Latest.Log

This should be fixed now with the 1.18.2 update
Duplicate: #21


Confusion about gainmap-js

Hello, I have used gainmap-js.
But the effect is not ideal.
This is a comparison chart.
As you can see Using HDR_JPG to apply background, the image displays jagged.
But using HDR is relatively smooth.

My steps are:
1、Download a 4K HDR file (sunflowers_puresky_4k. hdr)
2、Use tool convert it to HDR_JPG (sunflowers_puresky_4k. jpg)
3、Refer to the official code of gainmap-js
This is my code：
<template>
    <div>
    </div>
</template>

<script>

    import * as THREE from 'three';
    import {GUI} from 'three/examples/jsm/libs/lil-gui.module.min.js';
    import Stats from 'three/examples/jsm/libs/stats.module.js';
    import {OrbitControls} from 'three/examples/jsm/controls/OrbitControls.js';
    import {RGBELoader} from 'three/examples/jsm/loaders/RGBELoader.js';
    import {GainMapLoader, HDRJPGLoader} from '@monogrid/gainmap-js';

    const params = {
        envMap: 'HDR JPG',
        roughness: 0.0,
        metalness: 1.0,
        exposure: 1.0
    };

    let container, stats;
    let camera, scene, renderer, controls;
    let torusMesh;
    let hdrJpg, hdrJpgPMREMRenderTarget, hdrJpgEquirectangularMap;
    let gainMap, gainMapPMREMRenderTarget, gainMapBackground;
    let hdrPMREMRenderTarget, hdrEquirectangularMap;

    export default {
        mounted() {
            this.init();

            this.animate();

            // 监听窗口变化
            window.addEventListener("resize", () => {
                // 重置渲染器宽高比
                renderer.setSize(window.innerWidth, window.innerHeight);
                // 重置相机宽高比
                camera.aspect = window.innerWidth / window.innerHeight;
                // 更新相机投影矩阵
                camera.updateProjectionMatrix();
            });
        },
        methods: {
            animate() {
                requestAnimationFrame(this.animate);
                stats.begin();
                this.render();
                stats.end();
            },
            render() {

                let pmremRenderTarget, equirectangularMap;

                switch (params.envMap) {
                    case 'HDR JPG':
                        pmremRenderTarget = hdrJpgPMREMRenderTarget;
                        equirectangularMap = hdrJpgEquirectangularMap;
                        break;
                    case 'Webp Gain map (separate)':
                        pmremRenderTarget = gainMapPMREMRenderTarget;
                        equirectangularMap = gainMapBackground;
                        break;
                    case 'HDR':
                        pmremRenderTarget = hdrPMREMRenderTarget;
                        equirectangularMap = hdrEquirectangularMap;
                        break;
                }

                torusMesh.material.roughness = params.roughness;
                torusMesh.material.metalness = params.metalness;

                scene.environment = equirectangularMap;
                scene.background = equirectangularMap;
                renderer.toneMappingExposure = params.exposure;

                renderer.render(scene, camera);
            },
            init() {
                //
                container = document.createElement('div');
                document.body.appendChild(container);

                //
                camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 500);
                camera.position.set(0, 0, -120);

                //
                scene = new THREE.Scene();

                //
                renderer = new THREE.WebGLRenderer();
                renderer.toneMapping = THREE.ACESFilmicToneMapping;
                renderer.setPixelRatio(window.devicePixelRatio);
                renderer.setSize(window.innerWidth, window.innerHeight);
                container.appendChild(renderer.domElement);

                // let geometry = new THREE.TorusKnotGeometry(18, 8, 200, 40, 1, 3);
                let geometry = new THREE.BoxGeometry(10, 10, 10);

                let material = new THREE.MeshStandardMaterial({
                    color: 0xffffff,
                    metalness: params.metalness,
                    roughness: params.roughness
                });
                torusMesh = new THREE.Mesh(geometry, material);
                scene.add(torusMesh);
                geometry = new THREE.PlaneGeometry(200, 200);
                material = new THREE.MeshBasicMaterial();
                const pmremGenerator = new THREE.PMREMGenerator(renderer);
                pmremGenerator.compileEquirectangularShader();

                THREE.DefaultLoadingManager.onLoad = function () {
                    pmremGenerator.dispose();
                };

                hdrJpg = new HDRJPGLoader(renderer)
                    .load('textures/sunflowers_puresky_4k.jpg', function () {
                        hdrJpgEquirectangularMap = hdrJpg.renderTarget.texture;
                        hdrJpgPMREMRenderTarget = pmremGenerator.fromEquirectangular(hdrJpgEquirectangularMap);
                        hdrJpgEquirectangularMap.mapping = THREE.EquirectangularReflectionMapping;
                        hdrJpgEquirectangularMap.needsUpdate = true;
                        hdrJpg.dispose();

                    }, function (progress) {
                        console.log('jpg', progress);
                    });

                gainMap = new GainMapLoader(renderer)
                    .load([
                        'textures/gainmap/spruit_sunrise_4k.webp',
                        'textures/gainmap/spruit_sunrise_4k-gainmap.webp',
                        'textures/gainmap/spruit_sunrise_4k.json'
                    ], function () {
                        gainMapBackground = hdrJpg.renderTarget.texture;
                        gainMapPMREMRenderTarget = pmremGenerator.fromEquirectangular(gainMapBackground);
                        gainMapBackground.mapping = THREE.EquirectangularReflectionMapping;
                        gainMapBackground.needsUpdate = true;
                        gainMap.dispose();
                    }, function (progress) {
                    });

                hdrEquirectangularMap = new RGBELoader()
                    .load('textures/sunflowers_puresky_4k.hdr', function () {
                        hdrPMREMRenderTarget = pmremGenerator.fromEquirectangular(hdrEquirectangularMap);
                        hdrEquirectangularMap.mapping = THREE.EquirectangularReflectionMapping;
                        hdrEquirectangularMap.minFilter = THREE.LinearFilter;
                        hdrEquirectangularMap.magFilter = THREE.LinearFilter;
                        hdrEquirectangularMap.needsUpdate = true;
                    }, function (progress) {
                    });

                //
                controls = new OrbitControls(camera, renderer.domElement);
                controls.minDistance = 50;
                controls.maxDistance = 300;

                //
                stats = new Stats();
                container.appendChild(stats.dom);

                //
                const gui = new GUI();
                gui.add(params, 'envMap', ['HDR JPG', 'Webp Gain map (separate)', 'HDR']).onChange();
                gui.add(params, 'roughness', 0, 1, 0.01);
                gui.add(params, 'metalness', 0, 1, 0.01);
                gui.add(params, 'exposure', 0, 2, 0.01);
                gui.open();
            },
        },
    };
</script>

Excuse me, is there an error in any step?

Looking at your images: this is 90% because of JPEG compression. If you use our tool at https://gainmap-creator.monogrid.com try to raise the JPEG compression quality until the result satisfies you.
Gainmap's gains in file size imply the acceptance of some compromises: HDR files are lossless while JPEG is very much lossy and, sometimes, incurs in this kind of data loss.
let me know if this solves your issue, thanks

Following your instructions, I improved the JPEG compression quality (from 0.9 to 1).
This has indeed made a significant improvement.
There is a new issue now that the exposure of the generated jpeg seems to be insufficient compared to the original image.
May I ask how this situation needs to be resolved?Thank you!
This is the setting parameter:
1、Display exposure(1.59)
2、Display(SDR + Applied Gain map)
3、Compression quality(1)

This is the generated jpeg:

I suspect you expect the "Display Exposure" parameter to affect your image,
"Display Exposure" does not brighten the encoded output, it is only a "Viewer parameter": a parameter which affects what you see in the preview image inside the converter web page.
You will need to brighten the skycube by increasing the backgroundIntensity and/or  in threejs in order to achieve the effect you desire

I increased the exposure from 1 to 6, and the final result was very satisfactory!
This is really great. Thank you for your reply and I would like to send you my best wishes.
The code is here

Thank you for letting me know! I'm going to close this then

@nieyuan1980 are you a developer ? can you contact me or leave me your email ? thanks


Documentation on error MESSAGEFAULT_ERROR_INVALID_TOKEN_OR_COUNTER

This night my car failed to start charging multiple times, and looking through the logs I can see this being returned as response from the signed_command call:
{ "operationStatus": "OPERATIONSTATUS_ERROR", "signedMessageFault": "MESSAGEFAULT_ERROR_INVALID_TOKEN_OR_COUNTER" }
Tried to search the repo for any documentation of what the error is about, and how we can make sure to recover from those errors.
Charging worked when I started it this morning, and it worked for multiple other users on the same service. Tried to increase the size of session cache, but not sure it is the right way to handle this?

The counter in question is included in each command, and should be incremented with each one. The car looks at the counter value to detect and reject replayed commands. If the car sees a replayed counter value, it returns MESSAGEFAULT_ERROR_INVALID_TOKEN_OR_COUNTER and sends the client an updated counter value to use.
Are you using this library or a different implementation? This library should recover from this error automatically. Some more logs would be helpful in diagnosing the problem (please redact your VIN from anything you post here).
If you're using your own protocol implementation, see error recovery documentation.

Yes, we're using the command proxy directly from this repository. This night it worked fine though. Looking through some of the other log samples, I noticed some epoch error as well. So it seems maybe more things were off.
Right now we run the proxy in two concurrent pods, maybe we should scale down to one to see if it works better?

Later logs, including the response mentioned in the title.
{ "operationStatus": "OPERATIONSTATUS_ERROR", "signedMessageFault": "MESSAGEFAULT_ERROR_TIME_TO_LIVE_TOO_LONG" }

2024-02-28T00:16:19Z [debug] Executing charge_start on LRWYXYZ
2024-02-28T00:16:19Z [info ] Starting dispatcher service...
2024-02-28T00:16:19Z [info ] Session for DOMAIN_INFOTAINMENT loaded from cache
2024-02-28T00:16:19Z [info ] Session for DOMAIN_VEHICLE_SECURITY loaded from cache
2024-02-28T00:16:19Z [debug] Sending request to https://fleet-api.prd.eu.vn.cloud.tesla.com/api/1/vehicles/LRWYXYZ/signed_command: {"routable_message":"MgIIAzoSEhAhynxYI3Owx4cifGZ3ldajmgMQ86f+05eo+OLoDAeSy4cmZVIGEgQyAhIAaoMBCkMKQQQW58m5qYJ/T4hNUXvydZkICzYKvbKcJsiLDXkrLPf2bF6l4yB0FzXOxWfy0E1ghJ3ge/dSaeg+BP8dg/fX6c2NQjwKEFFmszUoclDEGCx0SDTCzYwQsAEdhrcBACIggMozyRyYPl/wOnKrfqF8gJcv4QnCxQhr8LsCh+CT6oM="}
2024-02-28T00:16:19Z [debug] Server returned 200: OK: {"response":"MhISECHKfFgjc7DHhyJ8ZneV1qM6AggDYgQIAhAUkgMQ86f+05eo+OLoDAeSy4cmZXpdCLIBEkEELM1Q5EENOCm5ELTOvkosKOEpaVqdm85RNNXBzFLBPChqMg7op7sNk2gODbDi543PP/UoY5sCWXEHX3MfrL8KoxoQUWazNShyUMQYLHRINMLNjCWf+wAAaiQyIgogyi7veYSRUUUlasncfHN8hifzIKwzsxJV1qLYJhu72lc="}
2024-02-28T00:16:19Z [info ] [f3a7fed397a8f8e2e80c0792cb872665] Updated session info for DOMAIN_INFOTAINMENT
2024-02-28T00:16:20Z [debug] Sending request to https://fleet-api.prd.eu.vn.cloud.tesla.com/api/1/vehicles/LRWYXYZ/signed_command: {"routable_message":"MgIIAzoSEhAhynxYI3Owx4cifGZ3ldajmgMQQQ2p1B5cs8HzG91Hgu5CylIGEgQyAhIAaoMBCkMKQQQW58m5qYJ/T4hNUXvydZkICzYKvbKcJsiLDXkrLPf2bF6l4yB0FzXOxWfy0E1ghJ3ge/dSaeg+BP8dg/fX6c2NQjwKEFFmszUoclDEGCx0SDTCzYwQswEdpfsAACIgmX8umyRAWGGy1L9avXhPG5grs/CI+9CcZaNYSjXUxyk="}
2024-02-28T00:16:20Z [debug] Server returned 200: OK: {"response":"MhISECHKfFgjc7DHhyJ8ZneV1qM6AggDYgCSAxBBDanUHlyzwfMb3UeC7kLKmgMQcDxMh6G4Q37QmrSLW2Ddm1IRCg8IARILCglyZXF1ZXN0ZWQ="}

{ "operationStatus": "OPERATIONSTATUS_ERROR", "signedMessageFault": "MESSAGEFAULT_ERROR_INVALID_TOKEN_OR_COUNTER" }

2024-02-28T03:16:19Z [info ] Received POST request for /api/1/vehicles/LRWYXYZ/command/charge_start
2024-02-28T03:16:19Z [debug] Executing charge_start on LRWYXYZ
2024-02-28T03:16:19Z [info ] Starting dispatcher service...
2024-02-28T03:16:19Z [info ] Session for DOMAIN_INFOTAINMENT loaded from cache
2024-02-28T03:16:19Z [info ] Session for DOMAIN_VEHICLE_SECURITY loaded from cache
2024-02-28T03:16:19Z [debug] Sending request to https://fleet-api.prd.eu.vn.cloud.tesla.com/api/1/vehicles/LRWYXYZ/signed_command: {"routable_message":"MgIIAzoSEhChasVPC+9h5Rd1zfu+BGL+mgMQ9boZB6AR1EWJ5Jp4AoSJaVIGEgQyAhIAaoMBCkMKQQQW58m5qYJ/T4hNUXvydZkICzYKvbKcJsiLDXkrLPf2bF6l4yB0FzXOxWfy0E1ghJ3ge/dSaeg+BP8dg/fX6c2NQjwKEFFmszUoclDEGCx0SDTCzYwQuAEduC8BACIgwIPYjpfejdkDI0/xayuSg41w1/4I+AVHd7HijR8uUR0="}
2024-02-28T03:16:20Z [debug] Server returned 200: OK: {"response":"MhISEKFqxU8L72HlF3XN+74EYv46AggDYgQIAhAGkgMQ9boZB6AR1EWJ5Jp4AoSJaXpdCLgBEkEELM1Q5EENOCm5ELTOvkosKOEpaVqdm85RNNXBzFLBPChqMg7op7sNk2gODbDi543PP/UoY5sCWXEHX3MfrL8KoxoQUWazNShyUMQYLHRINMLNjCUbCwEAaiQyIgogfFLEnckXqO8mMAwksEsd+Cih/tuyPOFpqP07ScsTjIs="}
2024-02-28T03:16:20Z [info ] [f5ba1907a011d44589e49a7802848969] Updated session info for DOMAIN_INFOTAINMENT

MESSAGEFAULT_ERROR_INCORRECT_EPOCH is expected the first time you send a command to a car after it reboots (e.g., after an update). The car provides the correct epoch to use in the response and again this problem should correct itself.

Right now we run the proxy in two concurrent pods, maybe we should scale down to one to see if it works better?

This could certainly explain the issue. If multiple clients are using the same private key to authorize commands but are not synchronizing the message counter, then the second client to send a command will get MESSAGEFAULT_ERROR_INVALID_TOKEN_OR_COUNTER. It will resync, and then the first client will get that error the next time it sends a command, etc.
To be clear, the clients should be retrying the commands after receiving that error and succeeding. But you'll introduce latency, hit API limits much faster, and have a higher timeout rate.
I don't know what your network topology is, but the simplest way to avoid these message counter conflicts while still using two pods would be to have each pod be responsible for a disjoint set of VINs.
If that's not possible, a more involved solution with N pods would be to modify the library so that Pod X only used counter values equal to X mod N; e.g., with N=4 pods, Pod 3 would use counter values 3, 7, 11, 15, ... . This would significantly reduce but not entirely eliminate the problem for INFOTAINMENT. The problem would remain for VEHICLE_SECURITY commands. Your logs should indicate how often you get "Updated session info for DOMAIN_INFOTAINEMNT" as opposed to "DOMAIN_VEHICLE_SECURITY".


[EASI-2187] Refactor DB Seeding to use resolver functions instead of .sql dump

EASI-2187
Changes and Description

Modify scripts/dev to no longer reference pgdump or psql for dev data
Create cmd/dbseed, which lightly wraps package resolver code to create development data more easily.

The main goal behind this change was to make it easier for new changes to implement seeded data, while also giving more visibility into what seeded data is being created.
Notes for reviewers:

This PR does not fully implement every single kind of seeded data that our old DB dump had. Notably, it does not seed documents. This is likely to be far easier with EASI-2205
This PR does not implement as many variations of Model Plans as we previously had. The intent of this PR was to set up a paradigm that allows us to easily add and edit our seeded data, so if you work on a ticket that could seed some data, follow the patterns in this code to enable more kinds of seeded data! (i.e. seeding more task list sections than just Plan Basics)

How to test this change

Start the application with scripts/dev up
Run the Cypress tests with yarn cypress run

Ensure you have followed the instructions for setting up Cypress & Okta auth locally, otherwise cypress/e2e/login.spec.js will fail!

Run scripts/dev db:clean
Open the UI
Log in as MINT (using local auth)
Note there is no data!
Run scripts/dev db:seed
Refresh the page
Note that there's now seeded data!

PR Author Review Checklist

[ ] Met the ticket's acceptance criteria, or will meet them in a subsequent PR.
[ ] Added or updated tests for backend resolvers or other functions as needed.
[ ] Added or updated client tests for new components, parent components, functions, or e2e tests as necessary.
[ ] Tested user-facing changes with voice-over and the rotor menu

PR Reviewer Guidelines

It's best to pull the branch locally and test it, rather than just looking at the code online!
Check that all code is adequately covered by tests - if it isn't feel free to suggest the addition of tests.
Always make comments, even if it's minor, or if you don't understand why something was done.

Just some thoughts here I was wondering where you landed on seeding a model plan with an id?

I thought the PR could go up without that, and we could either add it or save it as a problem for later. I am tempted to merge sooner rather than later, because I think this change is going to help us as we introduce new functionality (and be able to actually keep up with making seed data as we introduce new features)

The only other question I have now is if this is enough seeded data for the front end to work with right now? Or should we hold off merging into main until we have a more complete data set?

Same point as above - we can confirm with @patrickseguraoddball / @garyjzhao if this is something they lean heavily on, but I wouldn't imagine it to be a  big enough blocker in comparison to the immediate benefit of readability / being able to maintain it a bit easier.

Future improvements could look at decoupling the hard coded values for the data to be a data import from file too. That could give us flexibility to seed different versions.

100%! I think something like that sounds great, and would help even more with being able to maintain this data easily.


I seem to be limited to 128 concurrent lambda requests / client. Am I misconfiguring something?

I'm collecting lambda request futures into a FuturesUnordered. With a single lambda client, I'm limited to 128 concurrent requests. If I use two clients, I am limited to a concurrency of 256. Am I configuring something incorrectly? I kinda assume this has something to do with the underlying hyper connection pool, but I haven't looked into it too much.

Hmmm. I wonder if this is an AWS lambda limitation. Does anyone know if lambda limits http2 connections to 128 streams?
These docs for ELB indicate that http2 connections there are limited: https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html

It looks like this "works as expected." My assumption is that lambda returns SETTINGS_MAX_CONCURRENT_STREAMS = 128 and the lambda client's internal hyper client respects that limit. Using multiple lambda clients increases the available concurrency.


WICKET-6287 Switch from json.org to open-json - 6.x

There are clirr errors, because of some classes missing in open-json

fyi @martin-g

I believe open-json files need to be updated to correspond 1.3 ....

@solomax - yep - I updated the classes with the versions of 1.3. Anyway there are clirr issues even if we copy all missing classes and override methods / constructors to throw WicketRuntineExceptions, because some method signatures have been changed.

Actually this can be handled using double-proxy, but I would vote for API break in this case :)

I am going to try this out, soon!

Hi @solomax ,
I managed to resolve the clirr issues: https://github.com/apache/wicket/pull/195#issuecomment-265422034

@martin-g , @dashorst , @bitstorm - would you be so kind and review the changes / check if there are no clirr issues for the 6.x branch? I don't have jdk 6 / jdk 7 installed so I get a "Invalid byte tag in constant pool: 18" of clirr.

This PR fails with:
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.5:compile (default-compile) on project wicket-core: Compilation failure: Compilation failure:
[ERROR] /home/martin/git/apache/wicket-6.x/wicket-core/src/main/java/org/apache/wicket/ajax/json/JSONObject.java:[30,17] cannot find symbol
[ERROR] symbol  : class Objects
[ERROR] location: package java.util
[ERROR] /home/martin/git/apache/wicket-6.x/wicket-core/src/main/java/org/apache/wicket/ajax/json/JSONObject.java:[119,20] cannot find symbol
[ERROR] symbol: variable Objects
[ERROR] -> [Help 1]

Hi @martin-g - thanks for the hint - I am going to have a look at it, soon.

Hi @martin-g - this was because Objects.hashCode is only available since idk > 7.
I replaced the call with a return 0; - this is done by Objects.hashCode(null) anyway.
I also created a ticket for open-json to change the code so that there is a "real" jdk 6 compatibility. 😄

Summary before integration:

json.org is replaced with open-json, now
Method calls not supported by open-json throw a WicketRuntimeException to inform the user
If users still need json.org they have to reorganize imports and add the json.org dependency in maven (beware of the license issues in this case!!)
All classes are preserved due to clirr checks, but are converted to dummies if there is no functionality left
There has been a special change to JSONObject, because Objects.hashCode is only available since jdk > 7

Closed due to:

https://github.com/apache/wicket/commit/0ba87f062cad8664d216abccb2a47126f637b87c
https://github.com/apache/wicket/commit/6f764146a007ab38686a7d54210db0fcdfc2a7ef
https://github.com/apache/wicket/commit/a6bf0e29bbc9ccebaa7588f566e15f0ac1d2eaa6
https://github.com/apache/wicket/commit/ad978211a5a550e7902eba354b03ec6618649579


Huge increase in DB connections since v8.45 which overwhelms the DB

Laravel Version: 8.45.1
PHP Version: 8.0.5
Database Driver & Version: mysql 8.0.23

Description:
I updated to Laravel 8.45.1 last week shortly after release. At the same time I made quite a few changes related to lazy loading, since I was playing around with the new Model::preventLazyLoading() feature. Over the course of the weekend, after deploying the code to production, our mysql server started experiencing very heavy load. After trying loads of stuff to "fix" the issue, I eventually reverted ALL my code changes (except for the composer updates which included Laravel 8.45). To my surprise, the heavy DB load was still there. Eventually, I downgraded Laravel back to 8.44 and almost immediately the DB load started to drop back to normal levels. Looking into it closer, I note that the number of connections to the database was the main thing that changed between 8.44 and 8.45 (the actual queries appeared to remain mostly the same). The number of connections usually hovers around 42 (which is the total number of queue workers I have going, so makes sense), but after upgrading to 8.45, the number of connections soared up to 164, flooding the database and causing a steady 100% CPU usage on the dedicated mysql server.
I know there have been some changes recently regarding database session handling, but unfortunately I do not know enough about the inner workings of that code to properly diagnose the cause.
It's worth noting that I also did had quite a few issues in the logs at some point regarding being unable to reach our dedicated redis cache instance too (this only happens if the cache is being absolutely hammered, and hasn't happened in well over 6 months) but I did not go too far into trying to diagnose this issue, as it eventually seemed to go away.
P.S. Probably not relevant, but worth noting in case anyone is wondering why we have so many workers, the vast majority of these queue workers handle incoming webhooks, they do not have much processing to do, and they process jobs in under 0.5 seconds. We have a lot because these webhooks can come through in fairly large waves, and this turned out to be the optimal number to crunch through the webhooks as quickly as possible, without overwhelming the database.
Steps To Reproduce:
Install Laravel 8.45 and set cache, session and queue drivers to redis. Set database to mysql. Use laravel horizon to configure 42 queue workers. Queue up many small jobs that interact with the database (perhaps inserts 1 or 2 rows per job). Instead of having a steady number of database connections, the number of connections will increase rapidly until the database gets swamped. Switching back to L8.44 should lead to a steady number of connections to the DB.

Each worker keeps one DB connection open so at most you should have 42 connections open. Unless workers crash and leave a DB connection open in idle state until it's automatically closed by MySQL.
You should check what these 164 are doing and how often new connections are being added. Also what about your web traffic? This opens new connections as well.

If you use read/write connections then each worker may have 2 connections open. Same for web requests.

Hi @themsaid. Might be best to show a graph from AWS RDS showing the number of connections:

As you can see, before the update to 8.45, the number remains completely stable. After the update, the number skyrockets. There are a couple of dips (which were when I restarted both the app server and mysql server), but overall the number of connections just shoots up. Right at the end of the graph is when I reverted back to 8.44. The number goes back down to it's stable figure.
I do not configure any specific read or write connections, just the standard laravel mysql env variables: CONNECTION, HOST, PORT, DATABASE, USERNAME, PASSWORD.
This setup has been stable for a long time, and only the change to 8.45 caused the massive spike in connections.

@robtesch there wasn't any changes related to database connections in 8.45. Here's the commit history: https://github.com/laravel/framework/compare/v8.44.0...v8.45.0

I can't pretend to know if any of these changes are relevant, but a quick search on the files changed between 8.44 and 8.45.1 mentions the word "database" 34 times, including this change to "src/Illuminate/Session/DatabaseSessionHandler.php":
https://github.com/laravel/framework/commit/7a71c292c0ae656c622cff883638e77de6f0bfde
Now, I could definitely be wrong about all of this (I strongly suspected it was some silly code change I had made at first, but as mentioned, reverting ALL my code changes had no effect, only reverting laravel back to 8.44 worked) but my feeling is that something in here has changed how the framework makes or terminates connections to the database. I will continue further investigations on my side just in case there is something else I am missing.

I suggest you revert your changes. Stop Horizon. Wait until connections are normal. Then deploy with latest laravel.
I think there might be an issue with your workers crashing and holding an idle connection.

I am deploying an update now which only changes the laravel version back up to 8.45.1 and no other changes. This is coming from a currently stable state. I will revert back as soon as I have some data to show.

OK, after about 8 minutes there is no significant change in DB connections. It must have been another dependency update that caused the issue. I will close this issue, update each dependency one by one, and reference this issue from the relevant github repo if/when I find the real issue. Sorry for the red herring here @themsaid and thank you for your help.

Further update, I've updated all the dependencies now and the issue hasn't come back, so it must indeed be something that I changed in the code (don't know what yet), and I hadn't given it enough time to "dissipate" before also rolling back the composer dependencies.


TypeError: Blob is not a constructor

I'm getting the following error
\blob-stream\index.js:33
    this._blob = new Blob(this._chunks, {
                 ^

TypeError: Blob is not a constructor
    at BlobStream.toBlob (H:\Work\projects\node\subzero\node_modules\blob-stream\index.js:33:18)
    at BlobStream.toBlobURL (H:\Work\projects\node\subzero\node_modules\blob-stream\index.js:48:35)
    at BlobStream.stream.on (H:\Work\projects\node\subzero\routes\cpanel\orderadmin.router.js:185:32)
    at BlobStream.emit (events.js:203:15)
    at finishMaybe (_stream_writable.js:646:14)
    at afterWrite (_stream_writable.js:486:3)
    at process._tickCallback (internal/process/next_tick.js:63:19)

This is the code
const PDFDocument = require('pdfkit');
const blobStream  = require('blob-stream');
let doc = new PDFDocument();
const stream = doc.pipe(blobStream());
doc.text("HOLA MUNDO!!");
doc.end();
stream.on('finish', ()=>{
    const url = stream.toBlobURL('application/pdf');
    res.send(url);
})

@Alain00 I'm facing this same issue. Were you able to figure this out ?

Hey guys,
tldr: Blob is web-only
I had the same issue and it just occurred to me that Blob does not exist on Node side (it's using buffers instead).
Basically, it is already a stream so you don't need to make a blob out of it.
In my case, I am creating a PDF from Express and I just had to pipe res to the document instance:
router.get('/document.pdf', async (req, res) => {
  const doc = new PDFDocument();

  // vv The following line is the one you're looking for
  doc.pipe(res);

  doc
    .text('And here is some wrapped text...', 100, 300)
    .font('Times-Roman', 13);

  doc.end();

  res.writeHead(200, {
    'Content-Type': 'application/pdf',
  });
});

If this can be of any help :)

facing the same issue too, I wanted to create a pdf on backend and then use the blob and save it on firebase storage.

Hi! Maybe these could help :)
https://github.com/foliojs/pdfkit/issues/625
https://stackoverflow.com/questions/35658438/node-js-piping-pdfkit-to-a-memory-stream

Hey guys,
tldr: Blob is web-only
I had the same issue and it just occurred to me that Blob does not exist on Node side (it's using buffers instead).
Basically, it is already a stream so you don't need to make a blob out of it.
In my case, I am creating a PDF from Express and I just had to pipe res to the document instance:
router.get('/document.pdf', async (req, res) => {
  const doc = new PDFDocument();

  // vv The following line is the one you're looking for
  doc.pipe(res);

  doc
    .text('And here is some wrapped text...', 100, 300)
    .font('Times-Roman', 13);

  doc.end();

  res.writeHead(200, {
    'Content-Type': 'application/pdf',
  });
});

If this can be of any help :)

Many Thanks, this is help me more.

blobs are web only
use something like this incase you're in an express/nodejs server
import PDFDocument from "pdfkit";
import express from "express";
const router = express.Router();

router.get( '/', async ( req, res ) => {
	const doc = new PDFDocument();

	doc.pipe( res );

	doc.text( 'And here is some wrapped text...', 100, 300 ).font( 'Times-Roman', 13 );

	doc.end();

	res.writeHead( 200, {
		'Content-Type': 'application/pdf',
	} );
} );

export default router;

Looks like Blob was added to node in v14.18.0 https://nodejs.org/api/all.html#all_buffer_class-blob


Buttons to change car elements have no hover effect

Fix the hover effect as per the title.

Added some basic highlighting on the variant categories and variant options. In main currently.


Release/4: Fix travis config

Also allow forced releases by pushing to a 'release' branch.

:tada: This PR is included in version 1.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Alternatives for Ranges

I don't love our range encoding right now. Here are three alternative ideas:

Maybe the second option is the easiest?
Here's a simple design:

Notice that the line tapers off as it radiates out from the center.

Yea, if there are multiple ones you'd have to put them at different vertical positions. But no need to do this now.

Last point, before we can close this: this style should also be used as it's being created.


error: 126 unable to locate python3.dll

Is this still maintained? It seems this hasn't been updated to work with Python 3.8+
https://stackoverflow.com/a/71645987
Will this be fixed?
or
What alternatives can you advise?
Here is my full output:
$npx syncli to ../components-test/node_modules/@company-name/
? !!!  WARNING  !!!
      This target path C:\dev\components-test\node_module
s\@company-name is not under a node_modules folder.
      If the provided path is not in .gitignore, it is not safe and can
 lead to unrecoverable overwrites/deletions.
      Please verify your path, or type "confirm" to continue. confirm
Target path: C:\dev\components-test\node_modules\@company-name
Sources: Default (All)
Ignored sources: taken from .gitignore
File types: Default (js,jsx,ts,tsx,json)
Running
 watchman-make
 -p
'**/*.js'
'**/*.jsx'
'**/*.ts'
'**/*.tsx'
'**/*.json'
--run
"node C:\Users\UserName\AppData\Local\npm-cache\_npx\1ae963dc35dd8724\node_modules\syncli\dist\sync.js  --ignored-sources /node_modules,/.pnp,.pnp.js,.npmrc,/coverage,/.next/,/out/,/build,.DS_Store,*.pem,npm-debug.log*,yarn-debug.log*,yarn-error.log*,.pnpm-debug.log*,.env*.local,.vercel,*.tsbuildinfo,next-env.d.ts,.env,.vscode,.git --target C:\dev\components-test\node_modules\@company-name"
------------

warning: 3 unable to set DLL search path for C:\tools\fb-python\fb-python36\
warning: 3 unable to set DLL search path for C:\tools\fb-python\fb-python37\
warning: 3 unable to set DLL search path for C:\tools\fb-python\fb-python38\
error: 126 unable to locate python3.dll

For anyone else having trouble with search engines doing random things
Just use npm link
https://www.codurance.com/publications/2016/12/21/how-to-use-npm-link


Error when trying to add XMLComments

v1.0.0-rc3
When I add this line in Startup.cs I get the following error:
options.IncludeXmlComments(xmlPath);

System.NullReferenceException: Object reference not set to an instance of an object.
   at Swashbuckle.AspNetCore.SwaggerGen.XmlCommentsOperationFilter.<>c.<ApplyPropertiesXmlToPropertyParameters>b__11_0(ApiParameterDescription p)
   at System.Linq.Enumerable.WhereListIterator`1.MoveNext()
   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
   at Swashbuckle.AspNetCore.SwaggerGen.XmlCommentsOperationFilter.ApplyPropertiesXmlToPropertyParameters(IList`1 parameters, ApiDescription apiDescription)
   at Swashbuckle.AspNetCore.SwaggerGen.XmlCommentsOperationFilter.Apply(Operation operation, OperationFilterContext context)
   at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.CreateOperation(ApiDescription apiDescription, ISchemaRegistry schemaRegistry)
   at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.CreatePathItem(IEnumerable`1 apiDescriptions, ISchemaRegistry schemaRegistry)
   at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.<>c__DisplayClass4_0.<GetSwagger>b__5(IGrouping`2 group)
   at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer)
   at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GetSwagger(String documentName, String host, String basePath, String[] schemes)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.<Invoke>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Builder.RouterMiddleware.<Invoke>d__4.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Server.IISIntegration.IISMiddleware.<Invoke>d__8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Hosting.Internal.RequestServicesContainerMiddleware.<Invoke>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
   at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1.<RequestProcessingAsync>d__2.MoveNext()

My xml file is very basic
<?xml version="1.0"?>
<doc>
    <assembly>
        <name>API</name>
    </assembly>
    <members>
        <member name="M:API.Controllers.UserController.Delete(System.Int32)">
            <summary>
            Plopp
            </summary>
            <param name="id"></param>
        </member>
    </members>
</doc>

I've tried adding and removing comments in diffrernt files but no dice.

This issue is already fixed  in #316. Waiting for release

Excellent. Closing this issue.


:wastebasket: Chore: Deprecate tevm_script (#1210)

Description
Concise description of proposed changes
Testing
Explain the quality checks that have been done on the code changes
Additional Information

[ ] I read the contributing docs (if this is your first contribution)

Your ENS/address:

#1211  👈
main

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

Join @roninjin10 and the rest of your teammates on  Graphite


Incorrect layout when rendering from a url

E.g. if you paste the url:
https://landsat8.earth/?landsatBandCombination=normalizedDifference&landsatBandPreset=ndvi&landsatBands=5,4

the options menu looks jumbled:

This is because of conditional rendering and rehydration with Gatsby. The issue is this code:
https://github.com/kylebarron/landsat8.earth/blob/343aee947d15e0a7513fa5147f119ac8a91e1212/src/components/options/band-selection.js#L60-L71
I think the problem is the conditional rendering and the fact that I insert the state from the URL string, so maybe it's inserted too fast or something?
References:

https://joshwcomeau.com/react/the-perils-of-rehydration/


Unhandled rejection NoSuchBucket: The specified bucket does not exist

var AWS_ACCESS_KEY = 'entered my valide key here';
var AWS_SECRET_KEY = 'entered my valid secret here';
var fs = require('fs')
var S3FS = require('s3fs');
var s3fsImpl = new S3FS('entered my valid bucket ame here', { accessKeyId:AWS_ACCESS_KEY, secretAccessKey:AWS_SECRET_KEY });

@ishandutta2007 Could you provide some more information on what you are trying to do? I'm wondering where the Unhandled Rejection is occurring.
There's a few things that could be going on here, so I have a few questions.

What region is your bucket in?
Is your bucket name 100% correct? They are case sensitive, and also things like percent encoding are not interpreted. So my Bucket is different from My Bucket which is different from my%20Bucket.

@ishandutta2007 are you saying is that his bucket name is incorrect and that s3fs is not handling the fact that the bucket does not exist?

My bad, now it's saving; bucket name was wrong.


Gradients and shadows

As a special add-on to Beta 2, I've taken a swing at properly addressing gradients and shadows for folks. This PR is a huge update to how we utilize shadows and gradients across Bootstrap (when they're enabled, at least). Let's start with what issues this addresses:

Fixes #24389: Always forces a focus state box-shadow on inputs and buttons, regardless of $enable-shadows, to ensure proper accessibility.
Fixes #24242: Adds variables for the shadow width and color.
Closes #23837: Improves shadow styles for inputs and buttons, though this isn't always 100% given some shadows are designed to work with gradients.
Fixes #21367: Finally adds gradients to buttons, woohoo!

Now, here's what's changed to address those issues.
For shadows

Replaced $btn-focus-box-shadow and $input-focus-box-shadow with a new unified variable to match our $input-btn- approach: $input-btn-focus-box-shadow.
Added two new variables to control the size of the focus shadow and the color: $input-btn-focus-width and $input-btn-focus-color.
Changed the focus shadow's width from 3px to .2rem.
For accessibility and consistency with validation styles, updated the form-control-focus() mixin to use a manual $enable-shadows check so we can still provide a focus state style despite the global shadow override.
Updated the button-variant() and button-outline-variant() mixins to use the new $input-btn-focus-width variable, replacing static 3px values throughout.

For gradients

Added new gradient-bg() mixin for specifying an opt-in gradient with a background-color fallback.
Added opt-in gradients to alerts, buttons, carousel controls, custom checks and file inputs, and dropdown items.
Added new .bg-gradient- utilities when $enable-gradients is set to true (set to false by default).

Are you sure this should be in beta2? Seems wiser to me to not merge so close to the release :)

The diff itself isn't too bad—mostly a lot of swapping of properties for the mixin for the gradient stuff, and then some shadow tweaks. Going to keep playing with it tonight while reviewing some other issues and PRs though.

What about splitting input- and btn- variables on https://github.com/twbs/bootstrap/pull/24430  and  the new$input-btn-focus-box-shadow.
Does this close #24430 or we are leaving it for later?

sorry :( wrong click

sorry :( wrong click

We've all been there :D.

What about splitting input- and btn- variables [...]?

We'll get to that in Beta 3—it won't be a straight up split, but a series of remapped variable much like we do with all our colors.

Sorry, I got lost. In the end, when will we can use gradients in BS4? :)


Variables not expanded when defining variables

Minimal .gitlab-ci.yml illustrating the issue
---
stages:
  - build

variables:
  RUST_IMAGE: $CI_REGISTRY_IMAGE/rust

build:
  image: docker:19-git
  stage: build
  tags:
    - docker
  script:
    - echo $CI_REGISTRY_IMAGE
    - echo $CI_REGISTRY_IMAGE/rust
    - echo $RUST_IMAGE

Expected behavior
$ gitlab-ci-local
parsing and downloads finished in 59 ms
build starting docker:19-git (build)
build copied to docker volumes in 914 ms
build $ echo $CI_REGISTRY_IMAGE
build > local-registry.example.com/me/gcl-exp
build $ echo $CI_REGISTRY_IMAGE/rust
build > local-registry.example.com/me/gcl-exp/rust
build $ echo $RUST_IMAGE
build > local-registry.example.com/me/gcl-exp/rust
build finished in 2.13 s

 PASS  build
pipeline finished in 2.27 s

Host information
Darwin Kernel Version 21.6.0: Mon Dec 19 20:44:01 PST 2022; root:xnu-8020.240.18~2/RELEASE_X86_64 x86_64
$ gitlab-ci-local --version
4.38.1
Additional context
Actual behavior
$ gitlab-ci-local
parsing and downloads finished in 59 ms
build starting docker:19-git (build)
build copied to docker volumes in 914 ms
build $ echo $CI_REGISTRY_IMAGE
build > local-registry.example.com/me/gcl-exp
build $ echo $CI_REGISTRY_IMAGE/rust
build > local-registry.example.com/me/gcl-exp/rust
build $ echo $RUST_IMAGE
build > /rust
build finished in 2.13 s

 PASS  build
pipeline finished in 2.27 s

When defining the RUST_IMAGE variable, CI_REGISTRY_IMAGE expands to an empty string.

The environment variable does expand, its just undefined.
What do you propose $CI_REGISTRY_IMAGE should be defined as?

build $ echo $CI_REGISTRY_IMAGE
build > local-registry.example.com/me/gcl-exp

It is defined in the script, so I would expect the same value when defining variables.  This is a simplified example from a CI config that works with the gitlab runners.

I just reproduced locally, this is a bug.


Handler enforcer

This PR enforces the expected parameters and, more importantly, the resulting values provided by custom handler implementations.
@pmcnr-hx this should make it easier to implement your mongoDb handler!
This also includes some debugging via the debug module, with the namespacing follows their recommendation:
$ DEBUG=jsonApi:handler:find npm test

$ DEBUG=jsonApi:handler:* npm test

This actions #42

Wonderful effort! :+1: Let's :shipit:.


Using ForColormap as a shared library fails

@jchristopherson @gha3mi
The issue
I am trying to use ForColormap as a shared library (.so under Linux). I have written a toy.f90 minimalist program:
use forcolormap, only: Colormap, wp
type(Colormap) :: cmap

call cmap%set("cubehelix", 0.0_wp, 1.0_wp, 1024)
end

but the shared library libforimage.so is not found at runtime:
$ gfortran toy.f90 -Xlinker -rpath=/usr/local/lib $(pkg-config --cflags --libs forimage forcolormap)
$ ./a.out
./a.out: error while loading shared libraries: libforimage.so.0: cannot open shared object file: No such file or directory

More information
System: Ubuntu 23.10
Compiler: GFortran 13.2.0
The -Xlinker -rpath=/usr/local/lib option allows the compiler to pass to the linker the runtime library search path.
The ForColormap project was built with the command cmake -D BUILD_SHARED_LIBS=true .., then make, and installed in the system with:
$ sudo make install
[ 46%] Built target forimage
[100%] Built target forcolormap
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/lib/libforimage.so.0.3.0
-- Installing: /usr/local/lib/libforimage.so.0
-- Installing: /usr/local/lib/libforimage.so
-- Up-to-date: /usr/local/include
-- Installing: /usr/local/include/lut.mod
-- Installing: /usr/local/include/pnm.mod
-- Installing: /usr/local/include/forimage_parameters.mod
-- Installing: /usr/local/include/forcolor.mod
-- Installing: /usr/local/include/forimage.mod
-- Installing: /usr/local/lib/cmake/forimage/forimageTargets.cmake
-- Installing: /usr/local/lib/cmake/forimage/forimageTargets-release.cmake
-- Installing: /usr/local/lib/cmake/forimage/forimageConfig.cmake
-- Installing: /usr/local/lib/cmake/forimage/forimageConfigVersion.cmake
-- Installing: /usr/local/lib/pkgconfig/forimage.pc
-- Installing: /usr/local/lib/libforcolormap.so.0.8.0
-- Installing: /usr/local/lib/libforcolormap.so.0
-- Set runtime path of "/usr/local/lib/libforcolormap.so.0.8.0" to ""
-- Installing: /usr/local/lib/libforcolormap.so
-- Up-to-date: /usr/local/include
-- Installing: /usr/local/include/miscellaneous_colormaps.mod
-- Installing: /usr/local/include/matplotlib_colormaps.mod
-- Installing: /usr/local/include/colormap_parameters.mod
-- Installing: /usr/local/include/forcolormap.mod
-- Installing: /usr/local/include/forcolormap_info.mod
-- Installing: /usr/local/include/scientific_colour_maps.mod
-- Installing: /usr/local/lib/cmake/forcolormap/forcolormapTargets.cmake
-- Installing: /usr/local/lib/cmake/forcolormap/forcolormapTargets-release.cmake
-- Installing: /usr/local/lib/cmake/forcolormap/forcolormapConfig.cmake
-- Installing: /usr/local/lib/cmake/forcolormap/forcolormapConfigVersion.cmake
-- Installing: /usr/local/lib/pkgconfig/forcolormap.pc

We can see that the libforimage.so and libforcolormap.so shared libraries are installed.
But we can notice a difference between ForImage and ForColormap, the following line is present only for ForColormap:
-- Set runtime path of "/usr/local/lib/libforcolormap.so.0.8.0" to ""

Files in the libraries directory:
$ ls -thor /usr/local/lib/libfor*
-rw-r--r-- 1 root 145K janv. 11 14:12 /usr/local/lib/libforimage.a
-rw-r--r-- 1 root 116K janv. 24 11:08 /usr/local/lib/libforimage.so.0.3.0
-rw-r--r-- 1 root 509K janv. 24 11:08 /usr/local/lib/libforcolormap.so.0.8.0
lrwxrwxrwx 1 root   20 janv. 24 11:08 /usr/local/lib/libforimage.so.0 -> libforimage.so.0.3.0
lrwxrwxrwx 1 root   16 janv. 24 11:08 /usr/local/lib/libforimage.so -> libforimage.so.0
lrwxrwxrwx 1 root   23 janv. 24 11:08 /usr/local/lib/libforcolormap.so.0 -> libforcolormap.so.0.8.0
lrwxrwxrwx 1 root   19 janv. 24 11:08 /usr/local/lib/libforcolormap.so -> libforcolormap.so.0

We can also see that the system knows the path to ForImage:
$ whereis libforimage.so.0
libforimage.so.0: /usr/local/lib/libforimage.so.0

But if we used the command ldd to print shared object dependencies:
$ ldd ./a.out
        linux-vdso.so.1 (0x00007ffc20faa000)
        libforcolormap.so.0 => /usr/local/lib/libforcolormap.so.0 (0x00007f4a2ef85000)
        libgfortran.so.5 => /lib/x86_64-linux-gnu/libgfortran.so.5 (0x00007f4a2ec00000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f4a2eb15000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f4a2ef37000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4a2e800000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f4a2f006000)
        libforimage.so.0 => not found

we see that ForImage is not found.
$ pkg-config --cflags --libs forimage forcolormap
-I/usr/local/include -L/usr/local/lib -lforimage -lforcolormap

I installed ForImage first, then ForColormap, and it works on my Ubuntu system. I am not a CMake expert, I will test it again without installing ForImage.

Thanks @gha3mi ! The good news is that my commands seem good...
I have once again tried to follow the same steps as you on another Ubuntu machine where I had never tried to install ForColormap or ForImage. I have also deleted the previous forcolormap/build directory to be sure everything is clean.
But I have still the same error message. And I don't understand why forimage is not found as all the needed .so files are visible in /usr/local/lib... It's the same on all my Ubuntu 23.10 machines.
I will now try also on my FreeBSD 14.0.

Thanks @vmagnin and @gha3mi for your work.  I use a Windows machine and will see if I have similar troubles.

It works in FreeBSD 14.0 (no previous installation of ForColormap):
$ gfortran toy.f90 -Xlinker -rpath=/usr/local/lib $(PKG_CONFIG_PATH=/usr/local/lib/pkgconfig pkg-config --cflags --libs forimage forcolormap)
$ ./a.out
 test

(in that system I need to add PKG_CONFIG_PATH=/usr/local/lib/pkgconfig before the pkg-config system)

In FreeBSD 14.0, the versions are:
$ cmake --version
cmake version 3.28.1
$ gfortran --version
GNU Fortran (FreeBSD Ports Collection) 13.2.0
$ pkg-config --version
2.0.3

In Ubuntu 23.10, it is:
$ cmake --version
cmake version 3.27.4
$ gfortran --version
GNU Fortran (Ubuntu 13.2.0-4ubuntu3) 13.2.0
$ pkg-config --version
1.8.1

Good, that works!
I'm just curious about the version of pkg-config on your system. The current version on my Ubuntu 22.04.3 is:
pkg-config --version
0.29.2

I checked the latest tags on https://gitlab.freedesktop.org/pkg-config/pkg-config/-/tags, and it seems the latest version is from about 6 years ago, which is 0.29.0.

There are pkg-config and pkgconf ("Implementation of pkg-config without depending on GLib", according to Wikipedia).
Probably Ubuntu migrated toward pkgconf sometime between 22.04 and 23.10... I have only the 1.8.1 package in Synaptic (in fact two package named pkgconf and pkg-config, but they seem the same).

I think I have found the problem. In my Ubuntu systems, I have:
$ echo $PKG_CONFIG_PATH
/opt/intel/oneapi/mpi/2021.11/lib/pkgconfig:/opt/intel/oneapi/compiler/2024.0/lib/pkgconfig

The /usr/local/lib has disappeared.
My problem is therefore fixed if I first type in my terminal:
$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

I will investigate in my .bash_profile, .bashrc and /opt/intel/oneapi/setvars.sh to see where it comes from...
Anyway, thanks @gha3mi and @jchristopherson for testing. It's important to do it in several systems.

Good that you found the problem!
Perhaps we could include those steps along with a simple test in the CI pipeline on Linux, macOS, and Windows to ensure compatibility checks.

I have added one line at the end of my .bashrc to update my environment variable:
# ifort :
source /opt/intel/oneapi/setvars.sh --force > /dev/null
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib

Note also that the -Xlinker option seems then not necessary. You can just type:
$ gfortran toy.f90 $(pkg-config --cflags --libs forcolormap)
$ ./a.out
 test

Tomorrow I will update the README.md file with that command. And try to use ForColormap with my simulation.

On another Ubuntu machine, I wrestled with the same kind of problem, but the problem was in the LD_LIBRARY_PATH environment variable (used by the dynamic link loader ld). It was fixed with:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib


ITMS-90809: Deprecated API Usage  ionic 5

Hello everybody.
ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of apps that use UIWebView APIs . See https://developer.apple.com/documentation/uikit/uiwebview.
My english is very poor.
But I don´t know hot to solve this issue in Ionic 5.

I also encountered the same problem

#431

As Idezho said, see https://github.com/ionic-team/cordova-plugin-ionic-webview/issues/431
But, it's a warning, so you shouldn't worry for now.
The only final solution for now is moving your app to Capacitor
If you want to continue using cordova, there are two cordova-ios forks with two different approaches that you can use instead of the original.


Workfiles: Select latest workfile automatically

Changelog Description
By default select the file with the latest date modified..
Additional info
Fixes #434
Note: in some odd cases where an artists saves over an older version than that file will have the latest date modified and hence will be selected. It's not the latest version, but latest date modified.
Testing notes:

Open workfiles tool
Browsing different tasks and folders should always default to selecting the latest workfile.
It should feel logical for the majority of production cases.
Clicking refresh in the UI should not change the selection.

Does not work for me ATM, is there settings for that in Maya addon? as I have been testing in maya and nothing seems changed in that respect.

This is not settings related, it should select latest workfile when you change context, before this PR it did select random workfile.

Does not work for me ATM, is there settings for that in Maya addon? as I have been testing in maya and nothing seems changed in that respect.

This is not settings related, it should select latest workfile when you change context, before this PR it did select random workfile.

Thats why I asked...not working for me at all...still randomly selects workfiles without any pattern (when jumping accros context)
The only thing working atm is staying selected the same workfile when hitting Refresh function in Workfiles tool