Integration/E2E Tests for Kubicorn using heptio/sonobuoy

We should create E2E tests to make sure our code is working as intended always.
That will cost money as will run this stuff on the real providers.
@kris-nova's and my plan was to use heptio/sonobuoy as it's easy to run tests using it.
My plan of attack is:

Create and Apply K8s Cluster using Kubicorn
Apply Sonobuoy test file
Wait for the results
Download them using client-go and parse them.

I've already tried to implement this but I encountered several problems:

Creating DO cluster using similar functions to the example one is not working as intended -- cluster has only master node.
I don't know how to parse results once I have them.

The first problem is not a big one and I'll probably get it fixed myself.
The second problem is bigger one and I don't really know what's the format of Sonobuoy's results file. I would love some help here.
The e2e branch has some work but I believe code is quite outdated at this point.

Note from @detiber that we should wait and rely on the CLI after 0.11

also, IMO, sonobuoy should output the version.txt as a test result
not sure if there is an upstream issue for this


Add networkpolicy datadog and grafana-agent in tenant namespace

This to make it easier for our developers.
If they want a specific monitoring solution they should have networkpolicyies
inplace to do so straight away.

Have verified that both networkpolicies works as intended, this PR is ready for review.


Add JME 3.6.0 patch notes and fix broken packages

Ready for SDK 3.6.0 release, add Patch Notes for JME 3.6.0 and fix a couple of packages that were broken

Did you @peedeeboy had the rights to merge PRs?

No, I can't merge


Library cleanup

Enhance build node to use a specific folder for bazel build. This will
help recycle bazel cache indenpendently of project name.

Jenkins job istio-testing/pr-master passed

This is a test.

Jenkins job istio-testing/pr-master passed

This is a test.

Jenkins job istio-testing/pr-master passed

This is a test.

Jenkins job istio-testing/pr-master passed


Reference Page Bug and Updates

Requirements

Fix Responsiveness of Reference Page for mobile screen sizes

Update the default text with real recommendations that could be given by peers and managers to one for one's work in software engineering or data science.
Update the pictures with different open source place holder images
Improve the code quality in the reference.js (Use better variable names, etc)

I'm interested, @smaranjitghose could you assign it to me?


Remove openjdk:11 mention until we are actually delivering it

I openjdk11 still not supported? I saw it mentioned in the README, but I'm wondering it's not intended to be there yet:

To select a jdk version, use the runtime_config.jdk field in app.yaml. Supported JDK versions include openjdk8 and openjdk11.

Any ETA for JDK 11 support?


Implement batch_write

Is your feature request related to a problem? Please describe.
We need BatchWrite.
Describe the solution you'd like
NA
Describe alternatives you've considered
NA
Additional context
https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html

Wow... BatchWriteItem can be used to delete items at once. I want to provide more ergonomic API like batch_delete(...) instead of batch_write(...) for multiple deletion.

Created https://github.com/raiden-rs/raiden/issues/48


Add .htaccess

The .htaccess file adds a rewrite script to html files that removes the .html from the url seen on the bookmarks bar. A fairly simple change, no changes occurred except for the addition of this file. No page content was changed, added, or removed.

My method was derived from this page.

the .html from the url seen on the bookmarks bar

Hi, @soccerJoshNumberNine when/where are you seeing this?
All of the links are configured from https://github.com/github/choosealicense.com/blob/04f260afb29790c08e8403b8ad004267a8fa89e6/_config.yml#L11 and in the source for each page to be rendered in a directory with a index.html file, accessed by URLs with trailing slashes, so .html should never appear.
The project is mainly designed to be deployed on GitHub Pages which doesn't use .htaccess or similar configuration files. So closing this pull request, but happy to get fixes for anything on the site not following pattern in previous paragraph that has been missed.

Ok! I noticed that, and I just wanted to submit this pull request to suggest the use of a rewrite engine, but I did know that it was possible my request would be considered obsolete


rotating log

Hi, it would be good if loguru supports keep constant log file size,
but update log in the file, like spdlog's rotate logger:
        // Create a file rotating logger with 5mb size max and 3 rotated files
        auto rotating_logger = spd::rotating_logger_mt("some_logger_name", "logs/mylogfile", 1048576 * 5, 3);
        for (int i = 0; i < 10; ++i)
            rotating_logger->info("{} * {} equals {:>10}", i, i, i*i);

From what I understand, the spirit of loguru is to just assume that an external program will rotate the logs by renaming the file. This might be more flexible that what you are considering. Check LOGURU_WITH_FILEABS in https://github.com/emilk/loguru#user-content-configuration-options

Indeed, please consider using logrotate or similar!


Correction for raw affiliation SPO, Univ Montpellier, INRAE, Institut Agro, Montpellier, France.

Correction needed for raw affiliation SPO, Univ Montpellier, INRAE, Institut Agro, Montpellier, France.
raw_affiliation_name: SPO, Univ Montpellier, INRAE, Institut Agro, Montpellier, France.
new_rors: 03rnk6m14;003vg9w96;04w07sc25
previous_rors: 03rnk6m14;003vg9w96
works_examples: W4403118239
contact: 3a41907ad1cf9380cb0734095f6cb5ee:fc5c6cd9d74ec203b5c1f0a9f03b7174cc5e @ inrae.fr

This issue was accepted and ingested by the OpenAlex team on 2024-11-18. The new affiliations should be visible within the next 7 days.


Doc sample change

Revised documentation including providing examples in response to issue #6000  for following operators:
random_uniform
random_normal
random_gamma
random_exponential
random_poisson
random_negative_binomial
random_generalized_negative_binomial
sample_uniform
sample_normal
sample_gamma
sample_exponential
sample_poisson
sample_negative_binomial
sample_generalized_negative_binomial
Screenshots attached

@zackchase @madjam review

Tremendous! Thank you!


Submission search can't search for multi-word assignment names.

None of the following queries work:

-assignment "Homework 1"
-assignment Homework 1
-assignment --eq "Homework 1"

Taking a look. Has to do with the regex match.

Is there a particular format for querying multi-word arguments? I tried -assignment "Homework 1" again and it still doesn't work. The commit that fixes this issue shows up on Github as having 0 additions and 0 deletions.

Fix (should be) here: https://github.com/Cal-CS-61A-Staff/ok/commit/a129e2735b79c36411d5cc1a2a961962b184d15f
I'll reopen this for now, and check it out again. The query you have should work.

Hmm. You're right, that regex should work. Is the query being escaped when it gets sent to the server?

It works. The latest version just hasn't been deployed yet:

@albert12132 Mhm. I believe the existing framework encodes it and decodes it as needed.

Will this be deployed soon?

You'd have to ask the one and only @Sumukh.

I'll deploy whatever is on master now - as soon as tests pass.


Update README

What changed? Why?

Add a section for public APIs.
Edit the examples.

How did you test the change?

Review Error for chaoyandy @ 2022-11-23 01:23:55 UTC
User must have write permissions to review


Not to pass etag to backend in Copy API

What this PR does / why we need it:
If we copy a object that is uploaded with multitpart,  the ETag cannot be used to check data correctness.
Which issue this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged): fixes #
Special notes for your reviewer:
Release note:

LGTM


A lot of free space until the footer comes in the smartphone mode for pixel 7

Description
If you have a look at any website in the smartphone mode for Google Pixel 7, there is a lot of free and empty space, until the footer starts. The fact that I need to scroll down to the footer gives me confidence that this is not due to the large screen but due to some miscalculation of the min-height of the screensize?
Steps To Reproduce

Open any page of the template in Google Chrome
Switch to developer mode
View the page with Google Pixel Device

Expected Behavior
I would have expected that if there is no more text / words, the footer starts earlier as it happens for other smartphone types.
Actual Behavior
There is a lot of free and empty space, until the footer starts.
Screenshots

Environment

Hugo Version: hugo v0.119.0-b84644c008e0dc2c4b67bd69cccf87a41a03937e+extended windows/amd64 BuildDate=2023-09-24T15:20:17Z VendorInfo=gohugoio
Browser/OS: Chrome Version 120.0.2210.77 (Official build) (64-bit)
Theme Version: Latest git pull of the repo

Additional Context
Thanks a lot for having a look!

The footer is expected to show up when you scroll down a bit further.

the footer starts earlier as it happens for other smartphone types.

It looks normal to me on both Pixel and iPhone, where you need to scroll down to see the footer:

Thanks a lot for your fast reply.
I understood that this is the expected behaviour. I was just wondering if this makes sense or if it would make more sense to show the footer earlier, if there is not enough content on the page. Just though it looks a bit odd to me, if there is just one sentence on the page and you then have to scroll down a bit before the footer starts. I cannot recall any other website where this is the case, mostly footer starts directly after the content, no matter how much content there is on the page.


feat: better command abstraction

Break for 2 days (school trip), will be working again on Thursday


Provide the ability to support system functions

Feature request
Is your feature request related to a problem? Please describe.

Reference to other DBs,provides the following types of system functions:

Control functions that allow you to execute actions in the system
Information functions that return information about the system
Information functions that return information about queries

For example: support dynamic restrict access table for cbo collect statistics

contorl funtion
add exclusion

select system$cbo_stats_add_exclusion("catalog",  "FULL");
select system$cbo_stats_add_exclusion("catalog.db",  "FULL");
select system$cbo_stats_add_exclusion("catalog.db.tbl",  "FULL");

remove exclusion
select system$cbo_stats_remove_exclusion(id)

information funsion

select  system$cbo_stats_show_exclusion()

Design Doc
https://docs.google.com/document/d/1ywUfACK-ph67cgIwM9LzMfc7svIScdnKHTAQOFtXW7s/edit

@zhangheihei
Thank you for adding such exciting features to StarRocks.
Except for the function name, could you add more information for these functions, like the return of these functions?

hi @alvin-celerdata
I'll add doc, UT and sql test later.

hi @alvin-celerdata
the desgin doc added.
For review purposes, I've split pr47951 into two parts.
1 System function frame: https://github.com/StarRocks/starrocks/pull/48380
2 Implementation of specific functions such as cbo_stats_add_exclusion


Ability to disable grammar for particular file type(s)

By any chance, is there an option to change the base whitelist for what extensions a grammar applies to? My issue is that I want to have JSX highlighting separate from JS highlighting (I don't like the way it highlights JS), but if I install language-babel or language-javascript-jsx (the two main grammars for JSX), they also apply a more specific scope to JS than source.js (source.js.babel and source.js.jsx respectively), which makes customFileTypes no longer a viable workaround. I'd like a way to just prevent them from applying to .js files over the core grammar.

If I understood you correctly, you want to use the source.js grammar for js files instead of the ones that come in community packages which override the extension. Anything you define in customFileTypes takes precedence over what grammars define:
customFileTypes:
  "source.js": [
    "js"
  ]

Yes, but when I tried that with language-babel enabled, it did nothing.

To clarify, I want source.js instead of source.js.babel, broadening the scope rather than narrowing it.
Note: in case this is actually an Atom bug that the scope isn't being broadened, I'm running 1.23.1 on macOS Sierra.

@Ingramz Not what I was getting. I did literally the same thing and it didn't work. Disabling the grammar and closing/opening the file worked, though.

@isiahmeadows try without other community packages, (only have language-babel and maybe language-javascript-jsx enabled). It might be easier for you to temporarily back up ~/.atom directory and let atom re-create a pristine one, then install the two packages and try setting customFileTypes again.

Figured it out: my customFileTypes wasn't indented far enough (it wasn't immediately after core:, so it wasn't obvious).


TWA Throwing Error - android.app.RemoteServiceException

I am seeing crash reports in Play Console with latest version of TWA which is based on svgomg-twa
android.app.RemoteServiceException

android.app.ActivityThread$H.handleMessage

Today, 1:29 AM on app version 100171
Samsung Galaxy Grand Prime (fortuna3g), Android 5.0

android.app.RemoteServiceException:
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1556)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:135)
  at android.app.ActivityThread.main (ActivityThread.java:5753)
  at java.lang.reflect.Method.invoke (Method.java)
  at java.lang.reflect.Method.invoke (Method.java:372)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1405)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1200)

Reports by Devices:
Galaxy Grand Prime (fortuna3g):10
Galaxy S4 (jflte): 4

@andreban  / @PEConn  - +1 on this issue from my side. We are also seeing this for George TWA app. Here is OS / device breakdown

Would you mind filing this bug in bugs.chromium.org, under this component: https://bugs.chromium.org/p/chromium/issues/list?q=component%3AUI>Browser>Mobile>TrustedWebActivities&can=2 ?

Thank you so much @andreban I have filed the bug here https://bugs.chromium.org/p/chromium/issues/detail?id=1052365&can=2&q=component%3AUI>Browser>Mobile>TrustedWebActivities
Somehow it seems that the category isn't properly assigned, the components list doesn't show category of component:UI>Browser>Mobile>TrustedWebActivities. Its only showing Blink components.

@naveedahmed1 I have added the component to the bug.

Thank you so much @andreban :)

@andreban this is what they are saying:
https://bugs.chromium.org/p/chromium/issues/detail?id=1052365#c5

The issue seems to be out of our triaging scope as it is related to TWA which is based on svgomg-twa. Hence, adding label TE-NeedsTriageHelp for further investigation from dev team.
Thanks...!!

Does this mean that its something that needs to be resolved in this repo?

This repository doesn't contain any Java code and just uses code that is part of android-browser-helper. We're centralising issues on bugs.chromium.org, as we're getting duplicated issues across many surfaces. Closing the issue here in favour of bugs.chromium.org.


Migrate to eclipse formatter to support multiple IDEs

Migrate to eclipse formatter which seems to be the standard that is supported by many IDEs and add insructions for VSCode, IntelliJ and Eclipse.

[x] Migrate from IntelliJ IDEA formatter to Eclipse formatter, started from https://github.com/google/styleguide/blob/gh-pages/eclipse-java-google-style.xml and tweaked until it produced the smallest diff to what's currently on main
[x] Formatted all of the code according to those settings
[x] Allow running formatter from command line through spotless mvn spotless:apply / mvn spotless:check (bound to mvn verify)
[ ] Add instructions for using the Adapter for Eclipse Code Formatter for IntelliJ
[ ] Add instructions for VSCode and .vscode/settings.json with defaults
[ ] Add instructions for Eclipse
[ ] Switch to ratchetFrom

See prior discussion on #110

@wipfli here's a stab at migrating to the eclipse formatter, want to try out the VSCode instructions

Also I can add <ratchetFrom>origin/main</ratchetFrom> to the config for spotless which limits it to only format (or check formatting of) files that have been changed from main.  Do we think that's worth it to add? Or if we're starting off with a completely formatted repo then maybe it's not necessary.

I can run the tests from vscode. Cool!

I can check formatting from cli with ./mvnw spotless:check


Can you please make it possible to extend the events?

I found the code is like the following:
<canvas ref="canvas"
      @click.stop.prevent="_handleClick"
      @touchstart.stop="_handlePointerStart"
      @mousedown.stop.prevent="_handlePointerStart"
      @pointerstart.stop.prevent="_handlePointerStart"
      @touchend.stop.prevent="_handlePointerEnd"
      @touchcancel.stop.prevent="_handlePointerEnd"
      @mouseup.stop.prevent="_handlePointerEnd"
      @pointerend.stop.prevent="_handlePointerEnd"
      @pointercancel.stop.prevent="_handlePointerEnd"
      @touchmove.stop="_handlePointerMove"
      @mousemove.stop.prevent="_handlePointerMove"
      @pointermove.stop.prevent="_handlePointerMove"
      @pointerleave.stop.prevent="_handlePointerLeave"
      @DOMMouseScroll.stop="_handleWheel"
      @wheel.stop="_handleWheel"
      @mousewheel.stop="_handleWheel"></canvas>

And in the method for example "_handleClick", you do not emit an event, which means that developer is not easy to write some bussiness logic when the event is trigger.Can you please make it possible to extend the events?

Yes, it'll do.

Thank you very much! And may I know when you plan to make this change?

@Tsingbo-Kooboo Please upgrade to v1.3.3 you can use native event like @click. Example: https://codepen.io/zhanziyang/pen/aYPoea?editors=1011

@zhanziyang the event will not trigger in mobile. Steps to reproduce:

open the example you write.
switch to the mobile version(also you can open it in mobile directly).
click the image placeholder.

you will see that the open file dialog is open but do NOT alert 'clicked'.
It works fine in desktop version.

@Tsingbo-Kooboo I forgot to mention you need to use @touchstart on mobile. Is this ok for you? I edit the demo: https://codepen.io/zhanziyang/pen/aYPoea?editors=1011


MB-6837-update-counseling-service-pricer-display-param

Draft PR
Description
A PriceRateOrFactor param is added to allow the TIO to be able to see pricing details for the Counseling Service service item.
The test was updated to reflect the addition of the new parameter.
Reviewer Notes
Please confirm that no command line argument errors are showing up when the test is run.
Setup
To test the details for the counseling services service item:

Create a new move
Log in to office local as the TIO and find that move. There is a list of service items for the move that has been created. Selecting Counseling Services should enable the service item pricer details to be visible.

To run the test:
go test pkg/services/ghcrateengine/counseling_services_pricer_test.go --testify.m TestPriceCounselingServices -v

Code Review Verification Steps

[ ] If the change is risky, it has been tested in experimental before merging.
[ ] Code follows the guidelines for Logging
[ ] The requirements listed in Querying the Database Safely have been satisfied.
Any new migrations/schema changes:

[ ] Follow our guidelines for zero-downtime deploys (see Zero-Downtime Deploys)
[ ] Have been communicated to #g-database
[ ] Secure migrations have been tested following the instructions in our docs

[ ] There are no aXe warnings for UI.
[ ] This works in Supported Browsers and their phone views (Chrome, Firefox, IE, Edge).
[ ] Tested in the Experimental environment (for changes to containers, app startup, or connection to data stores)
[ ] User facing changes have been reviewed by design.
[ ] Request review from a member of a different team.
[ ] Have the Jira acceptance criteria been met for this change?

References

Jira story for this change
this article explains acceptance testing for payment requests

Messages

:book:
:link: MB-6837

  Generated by :no_entry_sign: dangerJS against 72f719af035855a1feff62ea683609d8043d43e8


Refac user login

@feekosta can I have your first thoughts here?

@rpuggian you may be interested on this

Folks, are we good to go here?


SA1611 reported for non-exposed members even when documentInternalMembers is false

When the documentInternalMembers or documentPrivateElements option is set to false, SA1611:ElementParametersMustBeDocumented should never be reported for those non-public members which are exempted from the documentation requirement. As expected, there is no reported violation for:
private int Foo(int arg)

However, it is reported in the following examples:
///
private int Foo(int arg)

/**
 *
 */
private int Foo(int arg)

:memo: This was filed per a request in #2361.


[HOLD for payment 2023-02-01]  Console error appears when clicking Save&Continue without selecting the bank account after successful plaid flow.

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Select Connect bank account for any workspace
Choose connect online with plaid option
Complete the plaid selection flow by selecting multiple accounts
After navigating to our app try to click Save and continue button without selecting account from the dropdown
Observe the console as it will throw an error

Expected Result:
Should show the related error(Choose the account plz) and console error shouldn’t be there
Actual Result:
Console error(Cannot read properties of undefined (reading ‘routingNumber’))
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platform:

Where is this issue occurring?

Web

Version Number: 1.2.39-0
Reproducible in staging?: y
Reproducible in production?: Could not check
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos:
https://user-images.githubusercontent.com/43996225/207707484-0e63be73-34f5-49ac-8738-0a80b8f93a5e.mp4
https://user-images.githubusercontent.com/43996225/207707514-ebb14884-cf4f-423f-9f65-6484446cb667.mov
Expensify/Expensify Issue URL:
Issue reported by: @Pujan92
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1671026877428529
View all open jobs on GitHub

Nabbing this and taking it internal to complete - you shouldn't be able to hit Save & Continue without selecting the bank account

I've been digging into this and found out why this happens
When we load that page, we get the selectedPlaidAccountID from https://github.com/Expensify/App/blob/91f7bac522377034b1380df5fce52b6095a3a43c/src/pages/ReimbursementAccount/BankAccountPlaidStep.js#L65-L65
the reimbursement account draft
https://github.com/Expensify/App/blob/91f7bac522377034b1380df5fce52b6095a3a43c/src/libs/ReimbursementAccountUtils.js#L24-L27
Basically, if we've already gotten to this step and select an account, we'll have stored the bank account in that onyx key.  So when you come back to it, it grabs that selectedAccountID from the old bank account

An easy way to reproduce is

Create a workspace, add a new bank account and select a bank account on that screen
Exit out, and then go through the process again connecting with plaid and notice that even when you are shown 'Choose an account', the button is visible.

You can just fix it by signing out which will clear your onyx data.
This problem only happens when you decide to go back and reconnect to another bank account with plaid.

Should be fixed by https://github.com/Expensify/App/pull/13668

As a note, I'm going to be OOO from Dec 23rd to January 9th. In case this needs to be paid before the week of January 9th then please reassign.

@nkuoch and @thienlnam can I close this GH given this will be fixed by https://github.com/Expensify/App/pull/13236?

Let's keep it open, and it will close once the PR is deployed. Meanwhile, let's just switch it to weekly

Linked PR https://github.com/Expensify/App/pull/13236 is in review

Switching this back to daily so that I don't miss payment.

Chill Melvin, I'm only paying them on the 1st.

I'm going to issue payment to @Pujan92 for reporting the bug. Once that's done are we good to close this @nkuoch and @thienlnam?

Payment has been made to @Pujan92. I'm going to close this, but please reopen it in case I missed something.


chore(deps): upgrade dev dependencies

Upgrades project dependencies. See details in workflow run.

Automatically created by projen via the "upgrade-dev-dependencies-k8s-29-main" workflow

⚪ Backport skipped
The pull request was not backported as there were no branches to backport to. If this is a mistake, please apply the desired version labels or run the backport tool manually.
Manual backport
To create the backport manually run:
backport --pr 4676

Questions ?
Please refer to the Backport tool documentation


Exploratory testing tool

Description in the 015-exploratory-test-module.md

I can see what you're trying to achieve with this, but it seems incredibly similar to:
https://cucumber.io/
Which uses the gherkin syntax. What you seem to want to design here is an interactive gherkin based manual testing framework that allows for switchable steps (i.e. switch the kafka CR to exhaustively do similar scenarios but with same assertions)
I wonder then why even bother doing this manually at all - and instead just automate this, the human y/n prompts in theory can be answered by a machine that queries the state of a resource or its sub resources.
This seems to be an acceptance that manual testing has to be necessary and exhaustive, which in my opinion is rarely sustainable.
Wouldn't more exhaustively system testing a release give more assurances?

Thanks for the comment @samuel-hawker .
Yes, I know gherkin syntax with behave (python) implementation. First of all, Gherkin uses pre-defined scenarios given, when, then, which in my case can be interpreted as BaselineExploration class but that's all. If you take a closer look atCreativeExploration there is no similarity because you are letting the user input his ideas to this kind of testing and discover paths, which can invoke bug. Second of all the idea behind doing it manually is that you will never create a test case which has for instance 12 steps and more. (1.deploy co, 2.deploy Kafka, 3. deploy metrics, 4.deploy Grafana... etc.). We design our system tests to be as quick as possible.

Wouldn't more exhaustively system testing a release give more assurances?
I think no because you can't achieve with system tests this goal. As I previously mentioned system tests has to be compact and not so long. In this type of testing, you can do whatever you want and create really bizarre scenarios which can find a system error.


Call mrb_env_unshare() in mrb_top_run() if necessary

This is to keep the local variables of the previously created blocks consistent in case the mrbc_context passed to mrb_load_exec() is NULL or different. Switching between mrbc_context pointers that are non NULL can be done safely by calling mrbc_cleanup_local_variables().
Before this patch, the result of the following code is not as expected.
% cat loadstr.c
#include <mruby.h>
#include <mruby/compile.h>

int
main(int argc, char *argv[])
{
  mrb_state *mrb = mrb_open();

  mrb_load_string(
      mrb,
      "(a, b, c, d, e, f, g) = [1, 2, 3, 4, 5, 6, 7] \n"
      "$lambda = -> { p [a, b, c, d, e, f, g] }");
  mrb_load_string(mrb, "$lambda.call");

  mrb_close(mrb);

  return 0;
}

% $(bin/mruby-config --cc --cflags --ldflags) loadstr.c $(bin/mruby-config --libs) && ./a.out
[main, nil, nil, main, nil, nil, main]

Also, since mrb_env_unshare() was not used before, the internal stack of simply detached env objects could show invalid addresses by stack_extend(). ref. https://github.com/kou/mruby-pp/commit/ef5951aca870183d8767cb61f6414240988ca35e

Additional note:
Strictly speaking, if the slen of different mrbc_context pointers are the same, the call to mrbc_cleanup_local_variables() may not be necessary, but it would only complicate the explanation.


Fix wrong order of display columns

Currently when cycling through the outer leds of the display in the nonblocking mode the order is broken for the top & bottom row. The current order is 1->4->3->2->5.
This PR fixes the issue some of the columns were mixed up and matches with the docs from the microbit.
It can be tested by replacing the display_nonblocking example with the slightly modified example here: https://gist.github.com/7b8d71b6b06eb8ab11a5f5f0a13f7a47

That is really interesting because when I wrote this those two pins were flipped on the V2 device I have (hence the very frustrated comment). I'll retest this evening. It may be that I have a dodgy device.

I can confirm that with my V2 board this PR fixes the broken ordering of the led-matrix.


Build Fails with latest .net 3.1.414

Hi,
When i try to build the tooling package. I am getting the following error:

@melzoghbi : any luck with this issue? I am also facing the same.

Thank you for reaching out! As of now, I would try using version 3.1.418.


Allow wp-login.php query variables to be filtered

We have a situation where we need to use unique urls for things that are currently hard-coded as query variables (specifically the assertion URL and the XML metadata urls, but the same could apply to any of the URL query variables).
This PR adds filters to each of the url query variables where they are being used so additional developers can customize the query variables (say to distinguish between dev/prod environments, which is our scenario).
Also tweaked usage of get_site_url where it was being used (specifically with reference to wp-login.php with these query variables applied) to pass the relative path to the actual get_site_url function.

I dont know if that PR affects the security of the plugin, I may review.
I think there are alternatives to distinguish between dev/prod environments, like use specific SP entity ID (at advanced settings section of the SAML settings) for each environment, rather than create different SAML endpoints.

Using a different SP ID is something we're going to do as well, but we've been told that the endpoints need to be unique also.
I can add sanitization so the result of the apply_filters is run through esc_html or something to make sure someone doesn't embed malicious code in there.

We've been told that the endpoints need to be unique also.

I don't understand what motivate to have different endpoints, but that seems a very custom behavior that rest of the users of the SAML plugin  really don't need.
BTW, right now you are able to set different ACS endpoint (using the alternative acs parameter)

Using the alternative ACS parameter changes the script that's run, though, doesn't it? We don't want to change how logins are processed, just the URL that's configured in the IdP.
I understand that this is pretty edge case, and that's fine, but I would rather not fork the plugin just to add in some filter hooks if possible.


Allow me to specify which types are top-level in TypeScript input

I have a current workaround in quicktype/figma-types where I:

Generate Schema schema.json from types/*.ts.
Maintain a separate schema, toplevels.json, that references the top-level types I want from schema.json.
quicktype toplevels.json.

I would rather be able to do something like:
/**
 * A person.
 *
 * @toplevel
 */
interface Person {
  pet: Pet;
}

interface Pet {
  name: string;
}

Which would make Person top-level, but not Pet.
It would also be reasonable to let me do:
$ quicktype types/*.ts --top-level FileRepsonse,ProjectFilesResponse,CommentResponse -o Figma.swift
The advantage of the former is that it's easier to add to the web app, but I only need this in the CLI for now.

Fixed in #770


Recent rules_rust (via proxy-wasm-cpp-host) breaks Rust plugin compilation

Actual Behavior
$ CARGO_BAZEL_REPIN=1 bazelisk build //samples/example:plugin_rust.wasm
ERROR: Target //samples/example:plugin_rust.wasm is incompatible and cannot be built, but was explicitly requested.
Dependency chain:
    //samples/example:plugin_rust.wasm
    //samples/example:_wasm_plugin_rust_wasm
    @crate_index//:hmac
    @crate_index__hmac-0.12.1//:hmac
    @crate_index__digest-0.10.7//:digest
    @crate_index__block-buffer-0.10.4//:block_buffer
    @crate_index__generic-array-0.14.7//:generic_array
    @crate_index__generic-array-0.14.7//:build_script_build
    @crate_index__generic-array-0.14.7//:generic-array_build_script
    @crate_index__version_check-0.9.4//:version_check   <-- target platform (@local_config_platform//:host) didn't satisfy constraint @platforms//:incompatible

All the generated Cargo targets have the same problem:
    target_compatible_with = select({
        "@rules_rust//rust/platform:wasm32-wasi": [],
        "//conditions:default": ["@platforms//:incompatible"],
    }),

Somehow we are not setting target platform correctly? We should be, via this rust_binary transition:
https://github.com/proxy-wasm/proxy-wasm-cpp-host/blob/master/bazel/wasm.bzl
Steps to Reproduce the Problem

Update proxy-wasm-cpp-host, which picks up https://github.com/bazelbuild/rules_rust/pull/1976
Build a Rust plugin, see build error

Workaround: set generate_target_compatible_with = False

Somehow we are not setting target platform correctly? We should be, via this rust_binary transition

This might be the crux of the issue. Because we're using the ProxyWasm transition for rust_binary targets, perhaps the overall build (and thus crates_repository) does not have a wasm platform set.

I bet the wasi_rust_binary_rule would work (it explicitly gets a platform attribute in the transition), but the rust_binary() rule here does not have a platform (hence target platform @local_config_platform//:host)


HSEARCH-2100 Cache the DocumentBuilder in the QueryBuildingContext

Merged, thanks @gsmet! A world with less map look ups is a better one :)


[todo] support inference for quant module

https://github.com/flashinfer-ai/flashinfer

https://github.com/casper-hansen/AutoAWQ_kernels


HEC-1189: correct content on wrong GG account page

I deleted TmpSpec while I was here - don't need it anymore since we're actually talking to those API's in the service now


Question: Busy indicator when will be available?

Hi, for the time being i'm using a font awesome refresh icon with spin inside an alert body to show user when my app is busy, this leads to a lot of inconsistency due to the way ionic v2 alert works, the alert needs to be pushed (in this case presented) to the nav component, which takes some time, if the provisional busy indicator needs to close or cancel the opening i need to use timeouts to wait for the alert to finish being presented.
This leads to 2 issues:

The user experience suffers as those timeouts makes users think the app works slow.
The app becomes inconsistent, as in older devises without a lot of processing power could exceed the time used in the timeouts, this breaks the flow of the alerts if the busy operator didn't even managed to finish being presented before the need to close it.

For the moment i address this issue letting the other alerts stack and knowing how many were instantiated i proceed to pop (close) each alert, this is certainly a whole mess of a workaround about the issue, this should have it's own component or at least some kind of solution like a way to stop the presentation of the alert midway.
When will be ready a busy indicator? i'm facing http request and sql queries that ranges in times of micro seconds to a max of 10 secs (mostly because a timeout i put over the http requests).

I'm going to close this as we have it added to our roadmap: https://docs.google.com/document/d/1Qlc5X2eJyOB0izkFlH7KJ5BmMi0MeXUZRHJHt3hS6Wo/edit?usp=sharing
We don't have dates set but we are going to work on using milestones in Github more to be better about showing what we're working on and which release it will go in. Thank you for the issue though, I added it next to our roadmap to reference.


cmake macro add_backward erroneously expanded

replace _BACKWARD_INCLUDE_DIRS by BACKWARD_INCLUDE_DIRS to fix issue #82

https://travis-ci.org/bombela/backward-cpp/jobs/309694795 seems that it broke the build :(

I think the problem comes from the conan config:
if you change
  cmake = CMake(self.settings)

into
  cmake = CMake(self)

It seems to be build ok (need to change that in top-level conanfile.py, as well as in test_package/conanfile.py)

ah interesting thank you
On Thu, Nov 30, 2017 at 1:51 PM Pierre Kestener<EMAIL_ADDRESS>wrote:

I think the problem comes from the conan config:
if you change
cmake = CMake(self.settings)
into
cmake = CMake(self)
It seems to be build ok (need to change that in top-level conanfile.py, as
well as in test_package/conanfile.py)
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/bombela/backward-cpp/pull/83#issuecomment-348332529,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AANMjDLeyQ6qMF7CvH6D_mgNtAdSlPR6ks5s7yNzgaJpZM4QdfDw
.


v4 - Move collapse js away from panels to cards

Fix #17170
Probably cc fat?

@kkirsche Could you please rebase this?

@cvrebert rebased

The failure here is unrelated to the change made:
Running "scsslint:src" (scsslint) task
Running scss-lint on src
scss/_reboot.scss:286 [W] PropertySortOrder: Properties should be ordered box-sizing, -webkit-appearance
Warning: Task "scsslint:src" failed. Use --force to continue.
Aborted due to warnings.

@kkirsche × 4 tests failed in "collapse" module when I test it locally.
(There are some other failures, but those are also present in v4-dev :unamused: )

@cvrebert noted. I'll look at those probably next week. Traveling for work this week so may be a bit before I can tackle making those fixes

Would it be possible to also have this be a configurable selector using data-selector or something? Having JS rely upon hard-coded HTML class names makes it more difficult to use semantic class names and then use SCSS to mixin the appropriate styles. Just spent an hour or so trying to get this working before reading the source and realizing it was selecting child elements of .panel (now .card) instead of just collapsing the elements matching $(parent).find('.collapse.in'). What's the reason we're sticking to making this plugin dependent upon any specific HTML class name?

@dalabarge That's still on the roadmap. This is just a quick fix until we can get around to implementing that.
See #17021:

Collapse

Make accordion feature of collapse plugin independent of panels?: twbs/bootstrap#10966

yeah this is great - do you mind just  poppin ACTIVES selector onto the default object while you're at it so people can change?

(otherwise lgtm)

Would love to get this merged into Alpha 5. Was @fat's feedback addressed?

My PR https://github.com/twbs/bootstrap/pull/18400 do the same things but is up to date and apply changes to js/tests/visual/modal.html which use Collapse too.

Merged #18400 to address this. Thanks though @kkirsche!

Course. Thanks for considering this


[QUESTION]: Unity pods gets into CrashLoopBackOff event<pod starting, crashing, starting again, and then crashing again>

How can the Team help you today?
Details: ?
I have followed the exact procedure to the tee yet the installation fails and the status below depicts what I am experiencing.  Also note that the Array ID, the IP address, username, password configured in the secret.yaml are all proper and have validated it.
The secrets.yaml is validated with successful installation with OpenShift.
Now I am trying the procedure with EKS Anywhere and to my knowledge there should not be a challenge.
Can you confirm if there is NO issue with regards to Cilium CNI or some other CNI issue as EKS Anywhere uses Cilium as the CNI.
ubuntu@localhost:~/w01/csi-unity/dell-csi-helm-installer$ ./csi-uninstall.sh --namespace unity --values ./myvalues.yaml
Unknown option --values
For help, run ./csi-uninstall.sh -h
ubuntu@localhost:~/w01/csi-unity/dell-csi-helm-installer$ ./csi-install.sh --namespace unity --values ./myvalues.yaml
WARNING: version difference between client (1.23) and server (1.21) exceeds the supported minor version skew of +/-1
WARNING: version difference between client (1.23) and server (1.21) exceeds the supported minor version skew of +/-1

Installing CSI Driver: csi-unity on 1.21

Checking to see if CSI Driver is already installed

WARNING: version difference between client (1.23) and server (1.21) exceeds the supported minor version skew of +/-1
WARNING: version difference between client (1.23) and server (1.21) exceeds the supported minor version skew of +/-1

Verifying Kubernetes and driver configuration

|- Kubernetes Version: 1.21
|
|- Driver: csi-unity
|
|- Verifying Kubernetes version
|
|--> Verifying minimum Kubernetes version Success
|
|--> Verifying maximum Kubernetes version Success
|
|- Verifying that required namespaces have been created Success
|
|- Verifying that required secrets have been created Success
|
|- Verifying that required secrets have been created Success
|
|- Verifying alpha snapshot resources
|
|--> Verifying that alpha snapshot CRDs are not installed Success
|
|- Verifying sshpass installation.. |
|- Verifying iSCSI installation
Enter the root password of <IP_ADDRESS>:Enter the root password of <IP_ADDRESS>:
Failed
|
|- Verifying snapshot support
|
|--> Verifying that snapshot CRDs are available Success
|
|--> Verifying that the snapshot controller is available Success
|
|- Verifying helm version Success
|
|- Verifying helm values version Success------------------------------------------------------

Verification Complete - With Warnings

Warnings:

iSCSI client is either not found on node: <IP_ADDRESS> or not able to verify
iscsid service is either not running on node: <IP_ADDRESS> or not able to verify
iSCSI client is either not found on node: <IP_ADDRESS> or not able to verify
iscsid service is either not running on node: <IP_ADDRESS> or not able to verify

WARNING:
Kubernetes validation failed but installation can continue.
This may affect driver installation.Press 'y' to continue or any other key to exit: y
|
|- Installing Driver Success
|
|--> Waiting for Deployment unity-controller to be ready Success
|

--> Waiting for DaemonSet unity-node to be ready Failed

WARNING:

Timed out waiting for the operation to complete.

This does not indicate a fatal error, pods may take a while to start.

Progress can be checked by running "kubectl get pods -n unity"Press 'y' to continue or any other key to exit: y

Operation complete

ubuntu@localhost:~/w01/csi-unity/dell-csi-helm-installer$
ubuntu@localhost:~/w01/csi-unity/dell-csi-helm-installer$ kubectl get pods -n unity
NAME READY STATUS RESTARTS AGE
unity-controller-6c5c475854-68kx7 4/5 CrashLoopBackOff 5 5m56s
unity-controller-6c5c475854-h5zx5 5/5 Running 4 5m56s
unity-node-4vkm7 1/2 CrashLoopBackOff 5 5m56s
unity-node-tmwhb 1/2 Error 6 5m56s

Hi @thecloudgarage ,
Could you please  set the logLevel to 'debug' (logLevel: "debug") in myvalues.yaml and  share the node logs. You can get the node logs by using the command kubectl logs <node_pod_name> -n unity -c driver. This logs will help us to analyze what is causing the pods to crash.
Thanks!!

@thecloudgarage : Could you please provide the logs as requested above?

@thecloudgarage Closing this for now. Feel free to reopen if needed. Thanks

Hi,
I am closing this issue with the overall summary and documentation presented in the attached text file below. The entire issue with all the possible details of installation logs with level set to DEBUG, configurations,  etc. has been provided in the attached text file. The text file is segregated in to 11 steps each of one which has the relevant information.
The issue was note in Unity CSI version 2.10. I can confirm that whatever fix has been applied, the issue seems to be resolved in v2.2.0.
At the time of raising this issue, the official documentation indicated use of version 2.1.0 and the defect was observed in 2.1.0
Unity-XT-CSI-2.1.0-Pod-CrashLoopBack.txt
Thanks for resolving this particular issue in 2.2.0
cheers,
Ambar


Clean up API boundaries when null-safety is non-optional.

Current null-safe platform libraries have seemingly redundant null-checks in many places.
A parameter of type int should only contain integers, but if the function is called from a non-null-safe library, it can get away with passing null values anyway.
To improve the error message in that case, we have inserted test which check that the value is indeed not null (mostly using ArgumentError.checkNotNull calls).
When null safety becomes non-optional (when language versions before the introduction of null safety stops being supported), those extra checks should be removed again.
This issue should be kept open until this has happened.

I think this should be part of one of Dart 3 milestones.

Most of the uses that I've touched are using the internal checkNotNullable, which should make them easy to remove.
We may need to keep supporting non-null-safe code a little past the 3.0 release, for technical reasons, but removing unnecessary checks should be on the list for when we turn it off for good.

Ran into one of these today.  I presume this is possible now?


Fixed bing provider (and jsonp providers in general). Added new option "panOnly"

Changed to geosearch to use jquery.ajax to be able to use jsonp. Tested with Bing and Google.
Fixed Bing provider to use jsonp with correct parameters.
Added option "panOnly": if "true" then the map pans to new location but doesn't change current zoom level.

Fixed by #16 & #42


gitAndTools.git-subtrac: 0.01 -> 0.02

Motivation for this change
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[X] NixOS
[X] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[X] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[X] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 86935 1

1 package built:
- gitAndTools.git-subtrac


Errors installing in Ubuntu 20.04

I have installed nvim v0.7.0.
When running your installer I see this error:
[lsp-installer] [ERROR 11:41:55]...ested URL returned error: 404 \n'[lsp-installer] [INFO  11:41:55]...name="sumneko_lua", success=false
Then it appears to be stalled. If I installed sumneko_lua manually, I don't get that error but it doesn't seem to make any progress and doesn't install other lsp's.

can you please paste the full log of installer?
i think setup.py script need some works.
for now, you can install it manually
1. $ git clone https://github.com/shaeinst/roshnivim ~/.config/nvim
2. # then comment out line number 33 in ~/.config/nvim/lua/configs.lua flie  (--  cmd('colorscheme rvcs')
3. $ nvim -c PackerSync
4. # now uncomment   line number 33 in ~/.config/nvim/lua/configs.lua flie
5. # to install LSP, use PackerInstall <LSPname>. eg: :LspInstall clangd

i have exams. i will fix install script later

Thanks. I'll try it out again when I get a chance.


v1.1.8 update

Minor update to bump to Avalonia 0.10.11 and a couple minor fixes:
CoreWindow

Makes sure :windows10 pseudoclass is added when on Windows 10 (fixes #61)
On Windows 10 with WinUI composition enabled (WS_NOREDIRECTIONBITMAP ex. window style), the top border of the window is missing, so I fake it by adding a border to the top of the window. This isn't the ideal solution as if you use a different accent color than the system or disable WinUI Comp it will show, but I tried to implement what Windows Terminal did, but was unsuccessful (if you want to take a look or even take a crack at it, look at _OnPaint() in NonClientIslandWindow.cpp on their repo).
Ensures the Window's ContentPresenter has a top margin equivalent to titlebar height on startup

CommandBar

Hide the overflow separator if overflow is enabled but SecondaryCommands are empty (fixes #62)

Next update will be 1.2 sometime in January, finishing (or at least mostly finishing) the work I started in 1.1.7 on the ListView/GridView, (most likely) porting the TabView from WinUI, and revamping the Sample app

Thank you for all the great work! And happy holidays :) Looking forward to V1.2!


Fix log4j error for other commands

https://issues.jboss.org/browse/DBZ-325

Merged; thanks, @jpechane.


Feature Request: More/Custom Variables | Customize E-Mail Confirm Screen

Hey,
I saw you are working on extending the customizability of the Admin UI and wanted to throw in that I'd be lovely to be able to change the way the screen looks on confirming an E-Mail. Also, it would be awesome to have more and or custom Variables for the E-Mails that you can Configure or maybe even make new E-Mail Templates for different things like News which you can then easily send out too

Sorry but I don't understand what is the intention of this issue. For now there are no plans to change how the default email settings should look or work.
If you have concrete suggestions feel free to outline them but just saying "it would be awesome to have more and or custom Variables" doesn't really make sense to me.


refator()  Remove this use of the "void" operator.  to cliose #18

#18

Codecov Report

Merging #19 (b2eace6) into main (243688e) will increase coverage by 4.11%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main      #19      +/-   ##
==========================================
+ Coverage   40.08%   44.19%   +4.11%
==========================================
  Files          13       13
  Lines         247      224      -23
  Branches       63       63
==========================================
  Hits           99       99
+ Misses        148      125      -23

Impacted Files
Coverage Δ

lib/services/tests/mocks/dispatcher.mock.ts
12.06% <ø> (+3.42%)
:arrow_up:

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


VMware Carbon Black Cloud (using Function app) data connector not ingesting full three type of logs - Sentinel

Describe the bug
A clear and concise description of what the bug is.
In VMware Carbon Black Cloud data connector, there are three types of logs: CarbonBlackEvents_CL, CarbonBlackAuditLogs_CL, CarbonBlackNotifications_CL
After deploy Azure Function app successfully, only one CarbonBlackAuditLogs_CL appears in LAW:
To Reproduce
Steps to reproduce the behavior:

Deploy Azure Function App
In Carbon Black Log Types, I have type: Audit, Events, Alert
The deployment successful.
Check the Function Apps details, there is no errors

Please advice!

Hi @laylavo, Thanks for flagging this issue, we will investigate this issue and get back to you with some updates by 15-05-2024. Thanks!

hi @sudkharat, may i know is there any updates ?

Hey @laylavo, We need more time to check and investigate into this issue. Thanks!

Sure, we will share update you by- 23-05-2024. Thanks!

Hi @laylavo, The CarbonBlackNotifications_CL is got deprecated as per Document and there is new Alert API to get Alert information. The API required the CarbonBlackOrgKey filed configured in the Environment Variable section of Function App. So kindly check on the below Highlighted parameter screenshot and fetch org_key details screenshot: -

org_key in console side:-

Hey @laylavo, Are we good with above response? please let us know you having any questions or can we close this issue. Thanks!

Hey @laylavo, Could you please ping me on<EMAIL_ADDRESS>Thanks!


fix(ui): combine virtual text bg highlight with cursor line bg

Before:

After:

Thanks for the PR!


x/mobile: Getting error in building GO using "org.golang.mobile.bind" plugin

Hi,
First of all, thanks for the good information on how to build go programs
I tried the example mentioned in the "https://go-review.googlesource.com/#/c/12800/ "
But, getting bellow error:
FAILURE: Build failed with an exception.
Where:
Build file '/home/SDL/gocode/src/SDL-SRC/build.gradle' line: 2
What went wrong:
A problem occurred evaluating root project 'SDL-SRC'.
No signature of method: build_4s3bi4u0rg0mg10bktcmg7ughp$_run_closure1.id() is applicable for argument types: (java.lang.String) values: [org.golang.mobile.bind]
Possible solutions: is(java.lang.Object), is(java.lang.Object), find(), find(), find(groovy.lang.Closure), find(groovy.lang.Closure)
build.gradle:
plugins {
id "org.golang.mobile.bind" version "0.2.1"
}
gobind {
/* The Go package path; must be under one of the GOPATH elements or
a relative to the current directory (e.g. ../../hello) */
pkg = "/home/SDL/gocode/src/SDL-SRC"
/* GOPATH where the Go package is; check go env */
GOPATH = "/home/SDL/gocode"
/* Absolute path to the go binary */
GO = "/usr/local/go/bin"
}
Please help me to resolve this issue

CC @crawshaw

Hi,
I got above issue resolved, the issue was because of old gradle. I update the gradle to 2.4(from 1.12).
after this, issue is something else.

No such property: GO for class: org.golang.mobile.GobindExtension_Decorated
Possible solutions: pkg

Please help me to resolve this issue.

In the snippet you posted you are using version 0.2.1 of the gradle plugin. The current version is 0.2.3. Please try that. Also note there is a GOMOBILE parameter to set. See the README.md in https://github.com/golang/mobile/tree/master/misc/androidstudio

Did the use of Gobind plugin 0.2.3 fix the issue?

I'm closing this; there is no followup since 2016.


Desktop VS code does not allow the use of match

Whenever the match function is used it keeps stating that a version newer than python 3.10 is required even if i am on 12.1 and the problem persists even if i switch to pylance

Does this issue occur when all extensions are disabled?: Yes/No

VS Code Version:
OS Version:

Steps to Reproduce:

/extPython

It looks like this is caused by the Python extension. Please file the issue to the Python extension repository. Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our issue reporting guidelines for more information.
Happy Coding!


Continuous Maintenance

Hello.
This module is widely used in NodeJS ecosystem but it seems not to be maintained actively, even though it is stable enough for years. However, there seem lots of issues and pull requests, so I think there are rooms to be improved.
So I propose that this module should be moved to some organization to maintain it continuously. What do you think of it?

Or perhaps see npm make-dir and use it

Or just use fs.mkdir("some/random/path", {recursive: true})
And it has the same effect.

@TheGrandmother
Nice suggestsion!
https://nodejs.org/api/fs.html#fs_fs_mkdir_path_options_callback
Its history sais recursive option was added in v10.12.0, so we no longer use a third-party library for mkdir -p.
Thanks.


invalid seed check

Hi @xssnick ,
I am wondering about the following line
what are we checking here?
The official tutorial code just creates the key directly.
Thanks.

Hi, we are checking seed type, we doing additional hash to detect is seed with password (1) or not (0), this is how it is implemented in official ton node, see https://github.com/ton-blockchain/ton/blob/4cfe1d1a96acf956e28e2bbc696a143489e23631/tonlib/tonlib/keys/Mnemonic.cpp#L77

Please use wallet.NewSeed(), it is simpler and better :)

Thanks a lot for the quick answer, a related question about the wallet:
README states This library will deploy and initialize wallet contract if it is not initialized yet.
But I am getting SendWaitTransaction err: failed to send message: lite server error, code 0: cannot apply external message to current state : External message was not accepted error, following basic usage example, as the wallet is inactive, any code reference to init the wallet?
Thank you very much.

Probably this is because balance is 0 or not enough

Probably this is because balance is 0 or not enough

The issue is I have sent to the bounceable addresses of the wallet which I want to init previously. Thanks again for the help.
Closing the issue now.


InfluxDB Java client tests

Integration tests with the InfluxDB Java client for compatibility assurance

Note related to #116 : the Java driver uses URI query params for authentication.

Moved to JIRA
https://issues.jboss.org/browse/HWKMETRICS-13


New configuration proposal

I've been playing around a bit with configuration: https://github.com/tipsy/javalin/pull/507
The general idea is to move away from app.enabledXyz methods, and to reduce the amount of methods on the Javalin class:
val app = Javalin.create().config { c ->
    c.contextPath = "/"
    c.caseSensitiveUrls = false
    c.devLogging = true
    c.requestLogger { ctx, ms ->
        println("${ctx.method()} ${ctx.path()}, took $ms}")
    }
    c.server { Server() }
    c.addStaticFiles("/public")
    c.addSinglePageHandler("/", "/public/subpage/index.html")
}.start()

Any thoughts?

This is a great idea!  Maybe this could lead to having the option of using external config files?

@fwgreen The idea is to make it easier to configure Javalin via config files at least, but I wasn't planning on having an official "Javalin Config File" concept. When you configure your apps, do you usually have more than one config file?

When I use Javalin, the only config file in my project is my persistence stuff.  My little projects are not sophisticated enough to require configuration management.  I only just suggested a possible future direction as it occurred to me that if one wanted to, for some reason, alter the port number after deployment, they couldn't without going back into the code.  I wasn't thinking of anything as comprehensive as Spring 😄.  Maybe you can add it to the 4.0 wishlist?

You definitely can already use config files now, this is how I configure my projects:
object Config {
    val port = ProcessBuilder().environment()["PORT"]?.toInt() ?: 7070 // use port 7070 for localhost
    val isLocalhost = port == 7070
    val resourcePath = if (isLocalhost) "src/main/resources/public" else "/public"
    val resourceLocation = if (isLocalhost) Location.EXTERNAL else Location.CLASSPATH
    val secrets = JavalinJson.fromJson(Util.readResource("/deploy/secrets.json"), Secrets::class.java)
}

data class Secrets(
    val sendgridApiKey: String,
    val pagerdutyApiKey: String,
    val basicAuthPassword: String,
    val githubBot: String,
    val githubToken: String
)

...

val app = Javalin.create().apply {
    enableStaticFiles(Config.resourcePath, Config.resourceLocation)
}.start(Config.port)

I'm reluctant to add a custom format, since then users will end up with more than 1 config file.

Wow!  This library just keeps getting better:  You've thought of everything.  Could you please add some more documentation about this feature.  I would love to be able to manage my app's port number or it's logging level from a config.json file.

It's not really a feature of Javalin, it's reading a file and mapping it to a Kotlin/Java object. I see that a lot of people are confused about this, so I can write a tutorial after Javalin 3 is done.

In #517 I split Javalin in to three classes. Config could look like this:
val app = Javalin.create().configureServer{ c ->
    c.contextPath = "/"
    c.caseSensitiveUrls = false
    c.server { Server() }
}.configureServlet {
    c.devLogging = true
    c.requestLogger { ctx, ms ->
        println("${ctx.method()} ${ctx.path()}, took $ms}")
    }
    c.addStaticFiles("/public")
    c.addSinglePageHandler("/", "/public/subpage/index.html")
}.start(0)

Alternative:
val app = Javalin.create().configureServer{ server, servlet ->
    server.contextPath = "/"
    server.caseSensitiveUrls = false
    server.server { Server() }
    servlet.devLogging = true
    servlet.requestLogger { ctx, ms ->
        println("${ctx.method()} ${ctx.path()}, took $ms}")
    }
    servlet.addStaticFiles("/public")
    servlet.addSinglePageHandler("/", "/public/subpage/index.html")
}.start(0)

PR up now: https://github.com/tipsy/javalin/pull/534


Parallel demo to test ProgressHandler queue strategy

This PR is a sandbox environment to test concerns raised in https://github.com/catalystneuro/tqdm_publisher/pull/49.
While implementing this, it became apparent that we can't use the TQDMProgressHandler directly when working with parallel progress bars because these exist on independent threads. To overcome this while still supporting the new class, all updates coming from the HTTP relay server are registered manually to the handler with the _announce method.

Yeah, the Mac one works fine for some reason
Now that I see it running, one thing I'd suggest is the very first progress bar at the top - we want to be tracking the total progress over the length of the outer list of task times (so like, 1/7 after a single job completes a full list of tasks, then 2/7, etc. each will we also have the bars below showing the progress of each individual of the 7 tasks)
https://github.com/catalystneuro/tqdm_publisher/assets/51133164/f49b0d03-2311-4fa5-933f-25675621426b

I wonder, could you let a Flask endpoint run that progress handler (even more like on GUIDE) and see if that perhaps helps? (It's OK for now if the flask server has to be run on a separate terminal window)

Alright I've switched the main parallel demo to Flask and added a demo_parallel_ws command to reference the previous implementation.
Just FYI there were two implementations in this demo: one that was not queued, which was enabled by default, and one that is queued.
I've swapped this now so that the queued version (rather than direct forwarding) is enabled by default.
Can you confirm if the Windows issue is still seen on one or both demos?

The flask one works great!
The websocket one still has the same problems of not updating and being unable to cancel
Can you add that 'total' top bar for the number of tasks completed? (always fixed in that top position)

Added!

I see the top bar present but it never updates

Hmm it's working fine on Mac for both demos here.
Since it relies on n and total being the same, there's a chance the progress bar completes without this being explicitly sent. I'd noticed this several times before,
I'll add an explicit call to pass these format options.

I also keep seeing the following like in console while Flask is running
<IP_ADDRESS> - - [04/Apr/2024 23:09:50] "GET / HTTP/1.1" 404 -

pings about every second or so - any idea what this is? It feels like it is the thing preventing keyboard interruption

pings about every second or so - any idea what this is? It feels like it is the thing preventing keyboard interruption

This is because port 8000 is a special port, so it seems that there's some background process constantly pinging it.
I've bumped to a different port without such an association and this goes away.

pings about every second or so - any idea what this is?  Since we're using the same client for both WS and non-WS servers, the latter will result in 404 errors for these requests.
I've limited the reconnection request to 3 tries so this doesn't go on forever.

Everything is working great on my end - happy to merge this as is and make improvements in follow ups

Alright sounds good to me!


GraalJS memory leak in Engine

Hello.
I'm creating service like FaaS for JS scripts with limited API and found memory leak issues on prototyping different approaches while using Graal Polyglot.
Approaches that I've trying to implement:

Pool of Context with single Engine. Source evaluated once in Context. Any JS code wrapped to unique namespace, that can be accessible as member of Context and executed.
Any other invocations just execute existing member and nothing more
Single Engine, Sources are cached. On any new invocation we just getting existing Source and evaluate them in new Context that created for every invocation.
After that getting function member from Context and execute (as in previous approach)
New Engine and New Context for every invocation, Sources are built once.

Only third approach have no memory leaks, because GC will grab them out from heap.
In first and second approaches are memory leaks. Looks like Engine have issues on executing some code and generates much data for each invocation, that will be never removed from Engine.
I have a prototype that reproduces the first approach:
https://github.com/mdsina/graaljs-executor-web-service
Also I wrote a load tests that simulate real-world invocations of JS code:
https://github.com/mdsina/graaljs-executor-web-service-load-tests/tree/master
Service was executed with VM options:
-Xmx2g -XX:+UseG1GC

Looks like links to ContextJS never be removed.

Hi @mdsina,
thanks for your question.
I've not looked at your code yet, but a very generic answer of the best practice when you want code to be cached in principle is:

Have one Engine, that you share among all your contexts.
Create a fresh context for ever (independent) execution, AND .close it!
For (only) those sources you want to share, enable caching (public Source.Builder cached(boolean cached)) Note that you want to reuse the identical source object for sharing to work, otherwise this could lead to a memory leak.

As you don't see any memory leak in your third option, I don't think this is a memory leak in our core JS  engine code. Before further investigating, please make sure you properly share the engine, close the contexts, and only put the caching flag on sources that you actually want to be cached.
Thanks,
Christian

Thanks for your answer, @wirthi
Of corse I do what documentation say in second approach:

One Engine
Contexts are closed after invocation (through try-with-resource statement)
Every shared sources are built with cached option

The one thing that I have is that when I build Context I put to JS bindings some members, like require or another one that are present like a singleton Java object (my example have that)
The last one have no problems with memory leaks is obviously. Because Engine exactly keep links to some Context object or what in self. If Engine was destroyed after every invocation so there are no problems
For the second approach I take the example from documentation https://www.graalvm.org/docs/graalvm-as-a-platform/embed/#enable-source-caching
But I want to warm up the contexts and keep them, so that's because I implements the first one approach.

Hi @mdsina
We have fixed a memory leak problem around Objects with lots of (different) properties. This fix has landed in RC14 and might fix the problem you reported.
Best,
Christian

Hi @mdsina
can you confirm this problem is solved for you by a newer Release (RC14 or later, or GraalVM 19).
Thanks,
Christian

I hit what I think was the same problem on rc12 and tried upgrading to rc16 and still saw the memory leak. I haven't tried on v19 yet.

@wirthi
The problem still presents on warming of graal context with caching

Checked this out on graal 19.3.0. The same.
Also I forgot to attach heapdump initially. So where it is: https://drive.google.com/file/d/1pGQBM8pEFar1bXK7-3SIbOVXiCMCKgV-/view?usp=sharing

I believe we are both hitting https://github.com/graalvm/graaljs/issues/268
I am wondering if there is a release plan for GraalVM and if this issue is going to be checked. I can provide some help, eventually.

Hi,
what would be super-helpful for us would be an example to easily reproduce. Ideally just one Java file without any other dependency. From what I read from your descriptions (especially in #268) stems from DynamicObjects/Shapes, i.e. from Objects on the JavaScript side being created. So, in theory, the problem should be reproducible by something as simple as (pseudocode):
while (true) {
  Context ctx = new Context();
  ctx.eval("js", " //create your JavaScript object here, that you think should be GCed once the context is closed");
  ctx.close();
}

Best,
Christian

Hi Christian,
I will try to come up with a simple project with a single JUnit test and try to reproduce it there. I will put it on Github and share the link if I succeed :)
Thanks for the help,
Dario

Hi again,
I did my best to try to reproduce the leak I see in my application (https://github.com/graalvm/graaljs/issues/268), but without success. What you see in the attached test application is basically what I exactly do in my software but with this test application there seem to be no leak.
The only difference is that in my application the returned object is saved in memory for some time, while in the test application the returned object is not really used. But I can't believe that the problem is because of this, since typically these objects are primitive objects. Also, in my original application, if I do not cache the Engine object and I put it in a try-with-resources, I see no leak (but performance are bad) while if I cache it, I start seeing the leak... that I do not see in this test application!
In an attempt to work-around the leak, I even cached the Engine object as a SoftReference, so that in case of high memory consuption, the GC could still reclaim it. If I do that, I still see the leak, even though I see via VisualVM that the memory (and the number of related Shape objects) actually goes down a few times due to GC kicking in. I suspect that, since nobody is actually closing the Engine, something remains still laying around somewhere cached in the GraalVM JS implementation...
So I am actually clueless... maybe the problem is somewhere else, but I find it hard to believe, if changing literally two lines of code in a single class (caching the Engine and the Source, or not doing it) makes the problem to appear or disappear.
It is sad, because GraalVM JS is the script engine that provides so far the best performance I could find out there...
TestGraalVmJsLeak.zip

Hi,
I also seem to have GraalVM/JS related memory leak, but with different objects:
Here are the first entries of my jmap histogram:
----------------------------------------------
   1:       5380455      473480040  java.lang.reflect.Method
   2:       6100005      417736320  [C
   3:       5686429      232862248  [Ljava.lang.Object;
   4:       9428532      224668864  [Ljava.lang.Class;
   5:       4617418      184696720  java.util.LinkedHashMap$Entry
   6:       5370855      171867360  com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod$MethodMHImpl
   7:       6007220      144173280  java.lang.String
   8:       5815221      139565304  sun.reflect.generics.tree.SimpleClassTypeSignature
   9:       5539169      132940056  java.util.ArrayList
  10:       5816264      106812120  [Lsun.reflect.generics.tree.TypeArgument;
  11:       3627752      101215200  [Ljava.lang.reflect.Type;
  12:       5495914       87934624  sun.reflect.generics.tree.ClassTypeSignature
  13:       1432177       57287080  sun.reflect.generics.repository.MethodRepository
  14:       1438703       46038496  sun.reflect.generics.tree.MethodTypeSignature
  15:       1438703       41626424  [Lsun.reflect.generics.tree.TypeSignature;
  16:       2153832       40182336  [Lsun.reflect.generics.tree.FieldTypeSignature;
  17:        114918       36246592  [Ljava.util.HashMap$Node;
  18:        877581       35103240  java.lang.invoke.BoundMethodHandle$Species_LL
  19:       1439608       34550592  sun.reflect.generics.factory.CoreReflectionFactory
  20:       1432184       34372416  sun.reflect.generics.scope.MethodScope
  21:       1439262       23060408  [Lsun.reflect.generics.tree.FormalTypeParameter;
  22:        377851       21159656  java.util.LinkedHashMap
  23:        717713       17225112  sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl
  24:        638514       16625136  [Lcom.oracle.truffle.polyglot.HostMethodDesc$SingleMethod;
  25:        282888       15841728  java.lang.invoke.MemberName
  26:         56240       12942152  [B
  27:        638514       10216224  com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod
  28:        282182        9029824  java.lang.invoke.DirectMethodHandle
  29:        354505        8508120  sun.reflect.generics.tree.Wildcard
  30:        265330        8490560  sun.reflect.generics.reflectiveObjects.WildcardTypeImpl
  31:        221932        7101824  java.lang.invoke.BoundMethodHandle$Species_L
  32:        163952        6558080  java.lang.invoke.BoundMethodHandle$Species_L3
  33:         23420        5268936  [I
  34:        278113        4449808  sun.reflect.generics.tree.TypeVariableSignature
  35:        110947        4437880  java.util.WeakHashMap$Entry
  36:         55318        4425440  java.lang.reflect.Constructor
  37:        130141        4164512  java.lang.ClassValue$Entry
  38:         64822        3630032  com.oracle.js.parser.ir.IdentNode
  39:         89169        3566760  com.oracle.truffle.polyglot.HostClassDesc$Members
  40:        109761        3512352  com.oracle.truffle.polyglot.HostClassDesc
  41:         58849        2824752  java.lang.invoke.BoundMethodHandle$Species_L5
  42:         23138        2568224  java.lang.Class
  43:         25978        2493888  com.oracle.truffle.object.ShapeBasic
  44:         68815        2202080  java.util.HashMap$Node

I made sure to call close on my Contexts (I even added a finalizer which checks if it was called), but I still have the JVM going OOM after some time.
I will try to gather more information. My idea is to try to check for ThreadLocals using reflection. My assumption would be that something is still held in ThreadLocals. Does anyone perhaps have more/better ideas how to approach this?
regards,
Christian

Hi Christian,
The only thing that I can say with some reasonable confidence is that, if you close the Engine object, the memory is properly deallocated. Using a SoftReference to an ad-hoc class holding the reference to Engine, and adding a finalizer to close the Engine object when the holder class is marked for GC helps in keeping the memory under control.
As I wrote, any attempt to reproduce the behaviour in a unit test failed on my side... :(
Best regards,
Dario

Hi,
@dariol83 : Perhaps its some kind of code cache in the engine, that is growing? I tried to have changing code in my test, but also failed reproducing the behaviour. Might I ask what are the objects on your heap? (e.g. like shown in jmap -histo)
In my application, even though I do
		context.close(true);
		context.getEngine().close(true);

, I still get a growing heap in my application and a memory histogram like posted above.
regards,
Christian

Hi Christian,
You can have a look here: https://github.com/graalvm/graaljs/issues/268
Best regards,
Dario

One thing I figured out:
For every transaction in my app (for which a create a Context/engine and close it again) I get exactly one entry of com.oracle.truffle.polyglot.HostClassCache and org.graalvm.polyglot.HostAccess, which are never freed.

Hi Christian,
Could you please post a snippet of code documenting exactly how you would use a cached HostAccess? So that I can test it here as well and confirm or not the finding.
Thanks a lot in advance!

Hi @dariol83 ,
I simply hold the host-access as a static final variable:
private static final HostAccess	HOSTACCESS	= HostAccess.newBuilder().allowArrayAccess(true).allowPublicAccess(true).build();
Then I use it:
context = Context.newBuilder(lang).allowHostAccess(HOSTACCESS)	.build();
Before I had the following, which was leading to a memory leak:
context = Context.newBuilder(lang).allowHostAccess(HostAccess.newBuilder().allowArrayAccess(true).allowPublicAccess(true).build())	.build(); // this is bad
regards,
Ch

Hi Christian,
I see, thank  you. In my code I am using a straightforward
Context context = Context.newBuilder()
                    .engine(jsEngine)
                    .allowAllAccess(true)
                    .build()

and I was getting the leak. I will try to use a custom cached HostAccess and see if something changes. I will report here.
Best regards,
Dario

I applied the change, but the leak on the ShapeBasic objects and the related other objects is always there.

@dariol83 : Keeping an eye on this for a while now: On our production I seem to have the same issue. But it only there. I was not able reproduce it locally (even though I tried with the same data & requests). Perhaps it only happens when multiple threads are involved (which I did not test so far)? Have you tested such scenarios, or perhaps others ?

Hi @dariol83
thanks for your reproducer application (that does not reproduce the problem, unfortunately). I had a quick look at it and can confirm I don't see any immediate problem there. But let me try a few remarks:

you are not explicitly closing the context. That should not be an issue, they are auto-closeable and you have them in a try-with-resource, so it should be fine.
you say you return (and store) an object sometimes. What kind of object is that? A Java object, or a JavaScript object? The latter does retain a link to the context, so this might be a problem. You can anyway not share them between threads (at least, not execute them in other contexts). I assume this is not the case, but you are talking about Java objects?
you share the Engine in order to profit from code caching (better performance) I assume? If not, you could try not to share the Engine, and see if the problem persists.
you could also try, just for the purpose of hunting this bug, to close your Engine and create a new one every X iterations. That might degrade the performance around that time, but if the problem remains the same, it needs to be somewhere else.
Sources: you seem to create 16 Sources overall (4 ExpressionDefinitions per Thread, times 4 threads). In this example, it would suffice to create only 4 (and share them). Again, does not make a difference, just noting it. Might be different with more threads and more sources.

My best guess is around JavaScript objects and Shapes being created. Thus, to get your example into a form where it exposes the problem, can you maybe try to add returning the object as you state, and see if that changes anything? In the current example code, you are not creating any objects dynamically.
Best,
Christian

Hi @wirthi
My apologies that I am not progressing on this investigation, I had personal issues recently but I will try to have a new analysis starting from your suggestions:

"you say you return (and store) an object sometimes" -> Yes, these are typically numbers, booleans or Strings. Checking with the debugger I can see that the returned classes are java.lang.Integer, java.lang.Long and so on, so no Javascript objects.
"you share the Engine in order to profit from code caching (better performance) I assume? If not, you could try not to share the Engine, and see if the problem persists" -> I have one Engine per "processing object", and the engine is used to evaluate the same expression every time, even though it has different values for the bindings. Threads in a thread pool access the various objects, but each object can be accessed only by a single thread at a given point in time.
"you could also try, just for the purpose of hunting this bug, to close your Engine and create a new one every X iteration" -> I will try and report, indeed. This is a clever idea: actually I know that closing the Engine after each object evaluation frees the memory. In my current 'workaround' solution I put the Engine object into a wrapper, which has the finalize() method overwritten to close the Engine and the wrapper is referenced via a SoftReference: in case the memory pressure becomes high, then the SoftReference becomes eligible for GC and the finalisation of the wrapper closes the Engine. It is not elegant but, with this approach, I can tell you that I have no "leak".

I will keep digging here.
Thanks for all the valid points!
Best regards,
Dario

Hi again,
I tried to do the following tests:

I am still using an Engine per expression;
I am using a counter X, so that each Engine is closed after X evaluations (per object)

See attached code:

If I set X to 1, then I see no memory leak: performance are slow but there is no apparent leak. The allocation of Truffle objects goes up and down, and they seem to be properly collected (see the sawtooth profile and the memory around 2GB). This is in line with the test I already did in the past, so no surprise here.

If I set X to 2, then the application becomes memory hungry and the memory usage jumps to 8 GB (max memory).

If I set X to 3, same thing:

If I use 100, it gets worse, obviously:

I don't know what I am doing wrong in my 20 lines of code, but the impression is that the Engine is constructing some objects, which are not disposed at the end of the evaluation.

Hi,
I observed similar symptoms to the ones described by @horschi. Also his solution worked in my case (btw thanks Christian!).
I prepared a reproducer project for this memory leak
https://github.com/xardasos/GraalVMMemoryLeak.
@wirthi could you please take a look at it? On my PC after around 23000 iterations I get OOM error (VM options: '-Xmx512m').
Regards,
Tomasz

@xardasos Glad I could help :-) Since I made the Hostaccess static, things have been smooth.
I see you are using graal version 19... in your test. Have you tried with newer versions also?
Currently I am using <IP_ADDRESS>, which is fine. I tried <IP_ADDRESS> , but it was leaking memory in my application.

I also tried to run my test with 20.3.2 and 21.1.0 (java 11), the leak is still there. I also checked this <IP_ADDRESS> version (java 11), but the result is the same.

Hi @xardasos
thanks for your example.
Regarding the HostAccess, you answer yourself in the code example: don't create that for each iteration. There is no need for that; if you cannot use one of the existing configurations (HostAccess.ALL, HostAccess.EXPLICIT, etc.), then create a static one and reuse that across all your engines/contexts.
You create an org.graalvm.polyglot.Engine every iteration. Again, this is not necessary. You can create just one engine and share that across all Contexts.
Finally, is there a specific reason why you use GraalJSScriptEngine? You might have to use that if you interact with code that expects a ScriptEngine. But if that code is under your control, you are better of with just using a org.graalvm.polyglot.Context directly.
Engine polyglotEngine = Engine.newBuilder().build();
for (int i = 1; i < 1000000; i++) {
    System.out.println(i);
    Context ctx = getContextBuilder().engine(polyglotEngine).build();
    ctx.eval("js", SCRIPT_BODY);
    ctx.close();
}
polyglotEngine.close();

6.6 MB heap usage after ~300.000 iterations of your loop.

Best,
Christian

I would like to chime in with my observations. I'm using the latest Graal. For my tests I used to not use the JIT compiler but rather the "default" settings (the interpreter) and all was fine. The latest version (from a few days ago) started outputting some warnings so I enabled JIT compilation for the tests (-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:-UseJVMCICompiler). Then, I started getting OOM failures.
I use a single Engine, create a new Context with it for every execution (using a try-with-resources block to close it after that) and use shared Source objects. At the end of the tests the engine is closed. Digging in I noticed the following: even though the engine is closed, there are a few threads named TruffleCompiler that were running at 100% CPU for quite a while after that - a couple of minutes. Memory usage spiked at that time (and mostly after all were done). Running GC after that cleared all the memory - but before that there were many GBs taken.
Perhaps that's one source of memory "leakage" that people observe. It is indeed cleared after a GC run but why don't the compiler threads stop immediately after I close all Contexts and the Engine? Otherwise that's kind of useless - I stop the Engine, my other tests continue and I get an OOM because Graal is still compiling stuff I won't need and my memory is exhausted. :smile:

I have the same observation as boris-petrov, I have a rest API that call Graal js script engine. I also used a single Engine, create a new Context with it for every execution, and shared source object. I ran a test with 100 concurrent connections to the API. It was very strange that the heap size shoot up to 2.5GB only after all the call was complete, and after garbage collection after a few a min the heap size shoot up again to 4G. As it is a rest API, it absolutely no other threads should consume the heap space. Tried on the latest Graalvm 21.2.0 version, it still have this issue.
Running on Java 11 with Graal JavaScript engine lib (https://mvnrepository.com/artifact/org.graalvm.js/js) does not have such issue, I am using this solution for now, but I hope this issue could be resolved so that I can have improved performance on my application.

is there any update on this issue please？

I have to increase the memory to 6GB to prevent OOMKill, the memory usage shoot up to 6GB for a while and then came down.

Hi @limanhei

is there any update on this issue please

We will most likely only be able to help you if you provide an executable example that exhibits the behavior, best in a minified version that has the code around the Context and Engine creation and a mockup code. If we can run your example on our machines and see the leak, figuring out the source is trivial. Another option is a heap dump (e.g. from VisualVM). Not quite as easy, but still possible to track the issue then.
Only thing I can see in your heap snapshot is that the GraalVM compiler is still active (lots of org.graalvm.compiler.* entries). This means that the JIT-compilation has not yet finished. Either your codebase is large enough so that it just takes a while for everything to be compiled, or there could be a deoptimization loop (that would most likely be a bug on our side, where a certain pattern does not stabilize and e.g. Graal.js repeatedly sends new patterns to the compiler to optimize) - that would be a peak performance problem, but typically not a memory leak.
In general, we are not aware of any open memory leaks, so we don't have any clue what to investigate. As I have written above, typically we find that the Context or Engine API is used wrongly so that it is harder or impossible for the garbage collector to clean up. So seeing your actual usage of the API might give us a hint what is wrong.

Tried store Java with upgrade module path method to enable graal compiler, still got the same memory leak issue. Not providing upgrade module path will not have memory leak, but the performance is worst than Nashorn.

The best possible solution is to use a GraalVM directly; then you should not have any troubles with setting the correct paths. If that is not possible, https://www.graalvm.org/reference-manual/js/RunOnJDK/ and https://github.com/graalvm/graal-js-jdk11-maven-demo should show you how to properly set up Graal.js and the GraalVM compiler on a stock JDK installation.
Best,
Christian

Hi Christian,
The javascript codebase itself is 2.4M large, which consist of 373 functions in 14364 lines. Does it consider to be large? I tried to replicate the issue in my own code but due to security policy I couldn't create the minified version with this javascript codebase.  Hope you can provide some optimization for large codebase so that I can move my application to graalvm. Thanks a lot for your help!

Hi Christian,
I saw 1 opt failed. GraphTooBigBailoutException: Graph too big to safely compile. Node count: 400002. Limit: 400000.
The compilation only started when I stopped the load test, after a while, the compilation still continue, and then the container got killed.

Hi,

I saw 1 opt failed. GraphTooBigBailoutException: Graph too big to safely compile. Node count: 400002. Limit: 400000.

That it not critical - it means, that our compiler was not able to compile that method as it became to big. That could have a performance impact if it is a frequently executed method, but does not cause any correctness or memory issues. Can you state what method is reported to be affected? If that was from a public library (or you could share the relevant code), we might be able to look into the problem.

The compilation only started when I stopped the load test

I am not sure what exactly you mean with that, but in general, compilation of JavaScript methods should begin as soon as you execute them repeatedly. Maybe you just execute initialization code before, that does not contain any repeated function calls or loops in JavaScript?
What also could be the case here is that compilation happens on a separate thread. If you saturate the available cores with other high-priority threads, the compilation threads would starve and not have a chance to do their job.

... then the container got killed

Because it ran out of memory?

how much memory is required

I believe you have two crucial questions: how much memory do you require max, while JIT-compilation is happening, and how much do you require for executing the application after the JIT compiler has done its job. While the first number will be crucial as you need to provide at least as much, the second number should be much lower, as the compiler and all the data and memory it requires should eventually disappear. Maybe you can tweak the number of compiler threads and thus trade in compilation time with memory requirements, if memory is crucial for you?
Again, all this is theoretical discussion. To really help you, we'd need to see the source of your application or at least have some insight into your architecture, heap dumps, compilation logs, etc.
Christian

Thanks Christian!
All js code are developed by us, most of them are just if then else, there is nothing complicated.
We are running the application in a pod so need to know how much memory need to be allocated, otherwise may easily fall into oomkill. To my observation, the JIT compiler seems using memory outside the jvm, correct me if I am wrong, so when I allocate memory to the pod I need to take this into account.
Another observation I have in my load test is, when I test it with 1 thread, the performance in graalvm is better than hotspot + graal js interpreter. However, if I test it with 75 client threads, hotspot vm + interpreter had better performance,  not sure if it is due to the fact that the script engine is shared.


#6207 should be cleaned up for ZF 2.4.0

The current implementation merged at #6207 is a hack, and it requires a new UnderscoreToStudlyCaseFilter as well as a UnderscoreToCamelCaseFilter

@adamlundrigan this can be closed.

@adamlundrigan this can be closed.


feat: Add Cross Account Flow Support

Description
Add support for cross-account vpc flow
Motivation and Context
Need to be able to send vpc flow logs to another account used for centralized log archival where they will be ingested by a Kinesis Firehose
Breaking Changes
No, I don't expect any breaking changes.
How Has This Been Tested?

[x] I tested this locally by changing the source of on a local terraform config which uses the vpc module

This PR is included in version 5.4.0 :tada:


add production dockerfiles and deployment configs

Build and push updates to our validator whenever it's updated.

https://issues.redhat.com/browse/DPP-7582 to apply a webhook that rebuilds it on push to repo


[WFCORE-543] Use the correct op to read the attribute

Windows Build 1047 is now running using a merge of b86c163b0ab25db68e313ec91db9f2353882522a

Linux Build 1376 is now running using a merge of b86c163b0ab25db68e313ec91db9f2353882522a

Core - Full Integration Build 627 is now running using a merge of b86c163b0ab25db68e313ec91db9f2353882522a

Core - Full Integration Build 627 outcome was FAILURE using a merge of b86c163b0ab25db68e313ec91db9f2353882522a
Summary: Exit code 1 (new) Build time: 0:00:27
Build problems:
Process exited with code 1

Windows Build 1047 outcome was FAILURE using a merge of b86c163b0ab25db68e313ec91db9f2353882522a
Summary: Tests passed: 42; exit code 1 (new) Build time: 0:00:37
Build problems:
Process exited with code 1

Linux Build 1376 outcome was FAILURE using a merge of b86c163b0ab25db68e313ec91db9f2353882522a
Summary: Tests passed: 42; exit code 1 (new) Build time: 0:00:38
Build problems:
Process exited with code 1

retest this please

retest this please

Core - Full Integration Build 629 is now running using a merge of b86c163b0ab25db68e313ec91db9f2353882522a

Linux Build 1378 is now running using a merge of b86c163b0ab25db68e313ec91db9f2353882522a

Windows Build 1049 is now running using a merge of b86c163b0ab25db68e313ec91db9f2353882522a

Core - Full Integration Build 629 outcome was FAILURE using a merge of b86c163b0ab25db68e313ec91db9f2353882522a
Summary: Exit code 1 Build time: 0:00:32
Build problems:
Process exited with code 1

Linux Build 1378 outcome was FAILURE using a merge of b86c163b0ab25db68e313ec91db9f2353882522a
Summary: Tests passed: 42; exit code 1 Build time: 0:00:41
Build problems:
Process exited with code 1

Windows Build 1049 outcome was FAILURE using a merge of b86c163b0ab25db68e313ec91db9f2353882522a
Summary: Tests passed: 42; exit code 1 Build time: 0:00:41
Build problems:
Process exited with code 1

Linux Build 1379 is now running using a merge of b86c163b0ab25db68e313ec91db9f2353882522a

Core - Full Integration Build 630 is now running using a merge of b86c163b0ab25db68e313ec91db9f2353882522a

Windows Build 1050 is now running using a merge of b86c163b0ab25db68e313ec91db9f2353882522a

Core - Full Integration Build 630 outcome was FAILURE using a merge of b86c163b0ab25db68e313ec91db9f2353882522a
Summary: Exit code 1 Build time: 0:00:22
Build problems:
Process exited with code 1

Windows Build 1050 outcome was FAILURE using a merge of b86c163b0ab25db68e313ec91db9f2353882522a
Summary: Tests passed: 42; exit code 1 Build time: 0:00:36
Build problems:
Process exited with code 1

Linux Build 1379 outcome was FAILURE using a merge of b86c163b0ab25db68e313ec91db9f2353882522a
Summary: Tests passed: 42; exit code 1 Build time: 0:00:35
Build problems:
Process exited with code 1

Windows Build 1051 is now running using a merge of 34ea1f35f6f21f8298e4face8f8e4626f90c548e

Linux Build 1380 is now running using a merge of 34ea1f35f6f21f8298e4face8f8e4626f90c548e

Core - Full Integration Build 631 is now running using a merge of 34ea1f35f6f21f8298e4face8f8e4626f90c548e

Core - Full Integration Build 631 outcome was FAILURE using a merge of 34ea1f35f6f21f8298e4face8f8e4626f90c548e
Summary: Exit code 1 Build time: 0:00:30
Build problems:
Process exited with code 1

Linux Build 1380 outcome was FAILURE using a merge of 34ea1f35f6f21f8298e4face8f8e4626f90c548e
Summary: Tests passed: 42; exit code 1 Build time: 0:00:34
Build problems:
Process exited with code 1

Windows Build 1051 outcome was FAILURE using a merge of 34ea1f35f6f21f8298e4face8f8e4626f90c548e
Summary: Tests passed: 42; exit code 1 Build time: 0:00:40
Build problems:
Process exited with code 1


[Telink] Fix restart BLE adv after basic commissioning fail

To restart the BLE advertising after the basic commissioning failed to need to restore the default values to the setting partition after erasing.
For this need to reboot the system only after a problem during the basic commissioning mode.
The setting partition will be set during the system initialization.

@bzbarsky-apple Could you perform PR review?

@bzbarsky-apple Could you perform PR review?

@s07641069 Boris is in vacation until Aug 27. Could get another reviewer (ask on slack) or if nobody else availabe I can fast track this as platform-specific fix

@bzbarsky-apple Could you perform PR review?

@s07641069 Boris is in vacation until Aug 27. Could get another reviewer (ask on slack) or if nobody else availabe I can fast track this as platform-specific fix

No problem let's merge.
@bzbarsky-apple can give additional feedback after merge.