Some code seem to be incorrect that while task queue has task but pool don't excute them.

origin code
template<class F, class... Args>
auto ThreadPool::enqueue(F&& f, Args&&... args)
    -> std::future<typename std::result_of<F(Args...)>::type>
{
    using return_type = typename std::result_of<F(Args...)>::type;

    auto task = std::make_shared< std::packaged_task<return_type()> >(
            std::bind(std::forward<F>(f), std::forward<Args>(args)...)
        );

    std::future<return_type> res = task->get_future();
    {
        std::unique_lock<std::mutex> lock(queue_mutex);

        // don't allow enqueueing after stopping the pool
        if(stop)
            throw std::runtime_error("enqueue on stopped ThreadPool");

        tasks.emplace([task](){ (*task)(); });
    }
    condition.notify_one();
    return res;
}

In the 13nd line
std::unique_lock<std::mutex> lock(queue_mutex);
This code seem to be an invaild lock that lead to task can't run after push back into queue.
I change this a bit.
std::lock_guard<std::mutex> lock(queue_mutex);
and work properly.

I don't see the problem with unique_lock here. Can you expand on to why you think it is wrong?

Sorry, I find out it is my mistake that sometimes my task will be blocked by system api :(
unique_lock is work fine. Maybe lock_guard is lightweight that toggle my mistake less times somehow.


Components disappear

Your manual says, that TabLink and TabContent can be nested. But after wrapping them with the  tag, they are not rendered on the page
I repeat your example (https://github.com/patrik-piskay/react-tabs-redux/blob/master/examples/plain-react/src/index.js), but components whatever don't render. When I delete  tags, everything is working!
My scss file: https://ufile.io/4e64d
Browser: https://ufile.io/1fcd41
My declaration:
     <Tabs className="tabs">

          <TabLink to="tender">Тендер</TabLink>
          <TabLink to="lots">Лоты</TabLink>
          <TabLink to="documents">Документы</TabLink>

          <TabContent for="tender">tenders</TabContent>
          <TabContent for="lots">lots</TabContent>
          <TabContent for="documents">documents</TabContent>

      </Tabs>

Hi @davayd, I can confirm your snippet works for me. Can you inspect the code in browser using React devtools? One possible reason why it doesn't work for you is that your setup (maybe a babel plugin?) changes prop names on TabLink/TabContent components.


AttributeError: 'Loop' object has no attribute 'fd'

After #6 is fixed/worked around, people are running into this issue. I saw it myself, but not every time. I think that it depends on whether the host system ran osbuild before you run it in a container after a reboot. I guess that some extra initial setup of loop devices might be needed in the container.
This might be the same issue as Michael Hofmann hit when trying to run osbuild in a container: https://gitlab.com/cki-project/experimental/osbuild-example/-/blob/main/osbuild-composer-loopback.service?ref_type=heads
Note that this might be host-distro specific.
⏱  Duration: 0s
org.osbuild.copy:
5d96bf6806bf5ba0999439a1fd7cbb4b44328b943a8e3b8b6196849bede191e8 {
   "paths": [
     {
       "from": "input://root-tree/",
       "to": "mount://-/"
     }
   ]
}
device/- (org.osbuild.loopback): loop0 acquired (locked: False)
device/boot (org.osbuild.loopback): Exception ignored in: <function
Loop.__del__ at 0x7f2b38fd63e0>
device/boot (org.osbuild.loopback): Traceback (most recent call last):
device/boot (org.osbuild.loopback):   File
"/usr/lib/python3.12/site-packages/osbuild/loop.py", line 137, in __del__
device/boot (org.osbuild.loopback):     self.close()
device/boot (org.osbuild.loopback):   File
"/usr/lib/python3.12/site-packages/osbuild/loop.py", line 144, in close
device/boot (org.osbuild.loopback):     fd, self.fd = self.fd, -1
device/boot (org.osbuild.loopback):                   ^^^^^^^
device/boot (org.osbuild.loopback): AttributeError: 'Loop' object has no
attribute 'fd'
Traceback (most recent call last):
   File "/usr/bin/osbuild", line 33, in <module>
     sys.exit(load_entry_point('osbuild==99', 'console_scripts',
'osbuild')())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.12/site-packages/osbuild/main_cli.py", line
169, in osbuild_cli
     r = manifest.build(
         ^^^^^^^^^^^^^^^
   File "/usr/lib/python3.12/site-packages/osbuild/pipeline.py", line
468, in build
     res = pl.run(store, monitor, libdir, stage_timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.12/site-packages/osbuild/pipeline.py", line
372, in run
     results = self.build_stages(store,
               ^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.12/site-packages/osbuild/pipeline.py", line
345, in build_stages
     r = stage.run(tree,
         ^^^^^^^^^^^^^^^
   File "/usr/lib/python3.12/site-packages/osbuild/pipeline.py", line
218, in run
     devices[name] = devmgr.open(dev)
                     ^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.12/site-packages/osbuild/devices.py", line 92,
in open
     res = client.call("open", args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.12/site-packages/osbuild/host.py", line 348,
in call
     ret, _ = self.call_with_fds(method, args)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.12/site-packages/osbuild/host.py", line 384,
in call_with_fds
     raise error
osbuild.host.RemoteError: FileNotFoundError: [Errno 2] No such file or
directory: 'loop1'
    File "/usr/lib/python3.12/site-packages/osbuild/host.py", line 268,
in serve
     reply, reply_fds = self._handle_message(msg, fds)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.12/site-packages/osbuild/host.py", line 301,
in _handle_message
     ret, fds = self.dispatch(name, args, fds)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.12/site-packages/osbuild/devices.py", line
127, in dispatch
     r = self.open(args["dev"],
         ^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/osbuild/devices/org.osbuild.loopback", line 104, in open
     raise error from None
   File "/usr/lib/osbuild/devices/org.osbuild.loopback", line 101, in open
     self.lo = self.make_loop(self.fd, start, size, lock)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/osbuild/devices/org.osbuild.loopback", line 81, in
make_loop
     lo = self.ctl.loop_for_fd(fd, lock=lock,
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.12/site-packages/osbuild/loop.py", line 649,
in loop_for_fd
     lo = Loop(self.get_unbound())
          ^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.12/site-packages/osbuild/loop.py", line 128,
in __init__
     self.fd = os.open(self.devname, os.O_RDWR, dir_fd=dir_fd)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

One (small) step forward with this should be https://github.com/osbuild/osbuild/pull/1467 to ensure we get correct error reporting from open(). The underlying issue is in the stracktrace:
   File "/usr/lib/python3.12/site-packages/osbuild/host.py", line 384,
in call_with_fds
     raise error
osbuild.host.RemoteError: FileNotFoundError: [Errno 2] No such file or
directory: 'loop1'

but that is hidden from the top because of the incorrect cleanup in del.
Sorry if I'm stating the obvious here but I wanted to spell it out as it was not obvious at first to me.


mlsum

Hello,
The tests for the load_real_data fail, as there is no default language subset to download it looks for a file that does not exist. This bug does not happen when using the load_dataset function, as it asks you to specify a language if you do not, so I submit this PR anyway. The dataset is avalaible on : https://gitlab.lip6.fr/scialom/mlsum_data

I think the dummy_data structure does not also match. In the _split_generator you have something like os.path.join(downloaded_files["validation"], lang+'_val.jsonl') but in you dummy_data you have os.path.join(downloaded_files["validation"], lang+"_val.zip",  lang+'_val.jsonl'). I think  jsonl files should be directly  in the dummy_data folder without the sub-folder
@lhoestq

Hi @RachelKer :)
Thanks for adding MLSUM !
To fix the CI I think you just have to rebase from master

Great, I think it is working now. Thanks :)

It looks like your PR does tons of changes in other datasets.
Maybe this is because of the merge from master ?

Hmm, I see, sorry I messed up somewhere. Maybe it's easier if we close the pull request and I do another one ?

Yea if it's easier for you feel free to re-open a PR


[Refactor,Feature] Refactor collector shapes and stack_result in sync collector

This PR:

[x] Allows users to stack data (and not cat) in MultiSyncDataCollector (@matteobettini)
[x] Documents how batches are collected across collectors
[ ] Documents how collectors interact with replay buffers
[x] Solves a bug for multidim buffers when ndim > 2
[x] Makes sure that the trajectories in MultiSyncDataCollector are unique and consecutive
[ ] Makes sure that the trajectories in MultiaSyncDataCollector are unique and consecutive
[x] Masks and squashes preempted batches in MultiSyncDataCollector

TODO:

[x] Add the stack_result keyword in docstrings
[x] Make stack_result raise an exception in MultiaSyncDataCollector
[x] Resolve the cat dim issue for preemption (cat along dim=-1) and document it
[ ] Check that things work of without doing cat inplace and cloning

Check the updated doc below in collectors to learn more

@albertbou92 I also took this opportunity to refactor preemption. Now you can stack (with padding) or cat (with masking) the values coming from the collectors.
I noticed we preempt based on the proportion of collectors that have reached the end, not on the proportion of frames collected. IMO that would be more sensible.
We could use a mp.Value() shared between processes that tracks how many frames have been collected, and as soon as this goes above the threshold we break. Would you like to give it a shot once this PR lands? No worry if you don't have the time!
I suspect it can bring some decent speed-up over what we're doing.
In a nutshell:
# in SyncDataCollector.rollout
def rollout(self):
    ...
    if self.interruptor is not None:
        self._collected_frames += frame_count

# in MultiSyncDataCollector.iterator
def iterator(self):
    if self.preemptive_threshold and ...:
        if self._collected_frames > self.frames_per_batch * self.preemptive_threshold:
            break # or similar

@albertbou92 I also took this opportunity to refactor preemption. Now you can stack (with padding) or cat (with masking) the values coming from the collectors. I noticed we preempt based on the proportion of collectors that have reached the end, not on the proportion of frames collected. IMO that would be more sensible. We could use a mp.Value() shared between processes that tracks how many frames have been collected, and as soon as this goes above the threshold we break. Would you like to give it a shot once this PR lands? No worry if you don't have the time! I suspect it can bring some decent speed-up over what we're doing.
In a nutshell:
# in SyncDataCollector.rollout
def rollout(self):
    ...
    if self.interruptor is not None:
        self._collected_frames += frame_count

# in MultiSyncDataCollector.iterator
def iterator(self):
    if self.preemptive_threshold and ...:
        if self._collected_frames > self.frames_per_batch * self.preemptive_threshold:
            break # or similar

Yes the preemption was based on the idea that all workers collect a fixed number of frames and can not communicate during collection, but if we can have a shared global value that tracks how many frames that would be much better. Yes, I can give it shot!

@matteobettini This PR addresses an issue that you pointed a long time ago RE the stacking of results in MultiSync
Do you think it solves it in an adequate way?
The idea is to build the collector with cat_results="stack" if you want to stack or cat_results=-1 if you want to cat along the time dimension. cat_result=None results in cat_results=0 + warning since this is the previous behaviour but we want to discourage it.
We recommend "stack" > -1 > 0
Sorry it took so long to solve this!

@matteobettini This PR addresses an issue that you pointed a long time ago RE the stacking of results in MultiSync Do you think it solves it in an adequate way?
The idea is to build the collector with cat_results="stack" if you want to stack or cat_results=-1 if you want to cat along the time dimension. cat_result=None results in cat_results=0 + warning since this is the previous behaviour but we want to discourage it. We recommend "stack" > -1 > 0
Sorry it took so long to solve this!

Amamzing!
So stack_results=True now is exactly like a single collector with the number of collectors B preappended to the batch size which feels so smooth!
This is what i wanted yes!


Awaiting activities not cleared on workflow updating (fix included)

Repro:

Create a worflow with a starting activity (e.g Content Published)
Add a timer activity (e.g 5 minutes)... And save your workflow
Publish a content item to start your workflow and wait a little
Then, edit, optionally update, and save again your workflow
At this point, your workflow has been updated and stopped

Issue:

The workflow is still listed as running in the "Workflows Definitions" page

And in the "Running workflows" page related to the item, you get an exception

Analysis:

The timer awaiting Activity isn't cleared when the workflow is saved

This awaiting activity is linked to an activity that doesn't exist

Fix:
In AdminController.cs, EditPost() action, after this line
workflowDefinitionRecord.ActivityRecords.Clear();

Add this line
workflowDefinitionRecord.WorkflowRecords.Clear();

This way, the related workflows and their awaiting activities will be cleared
Best

I can't find where, but I am pretty sure we commented on the same issue explaining the recommended fix. The idea is to display a confirmation message on Save if there are any running instances,. And if accepted then go on with deleting the instances.

Oh yes, but, when editing a worflow definition, there is no info about the associated workflows in the current view model. Anyway, I think we need to see if they are running instances at the time the user clicks on the "Save" button
So, to get this needed sync info on "Save", I've added an ajax get request that targets a new controller action. But not sure I've done it the right Orchard way, with right names... Let me know

Fixed, the related PR has been committed


[Issue]: amd_hsmp.h local copy of kernel header

Problem Description
amd_hsmp.h is fetched as part of the build process from the upstream kernel here
https://github.com/ROCm/amdsmi/blob/amd-staging/CMakeLists.txt#L125 it should come from the system's kernel header.  A mismatch could crash the app or the kernel.
Operating System
Fedora Rawhide
CPU
x86_64
GPU
AMD Radeon Pro W7900
ROCm Version
ROCm 6.2.0
ROCm Component
No response
Steps to Reproduce
No response
(Optional for Linux users) Output of /opt/rocm/bin/rocminfo --support
No response
Additional Information
No response

Closing this issue as related PR has been merged.


Logout not working with MS Azure Active Directory

Hi,
first of all thank you for this simple solution to use the traefik forward-auth middleware!
In my current setup I use this container in conjunction with Microsoft Azure AD.
My simple config:
secret = {secret}
default-provider = oidc
providers.oidc.issuer-url = https://login.microsoftonline.com/{tenant}/v2.0
providers.oidc.client-id = {client-id}
providers.oidc.client-secret = {client-secret}
cookie-domain = {sub}.{domain}.com
log-level = trace

Now I can login successfully (I will be redirected to the Microsoft login page for this):
time="2020-11-03T21:14:42Z" level=info msg="Successfully generated auth cookie, redirecting user." handler=AuthCallback host={sub}.{domain}.com method=GET proto=https provider=oidc redirect="https://{sub}.{domain}.com/" rule=default source_ip=***.***.***.*** uri="/_oauth?code=***&state=fbb16aa8030d57ea45a7539dd48e347c%3aoidc%3ahttps%3a%2f%2f{sub}.{domain}%2f&session_state=b5dacfe3-2ec9-4f15-9d6f-8497acb5d90d"<EMAIL_ADDRESS>
If I log off the user using traefik-forward-auth logout endpoint https://{sub}.{domain}.com/_oauth/logout and refresh the page, I'm successfully logged out and redirected to the Microsoft login page:
time="2020-11-03T21:15:00Z" level=info msg="Logged out user" handler=Logout host={sub}.{domain}.com method=GET proto=https rule=default source_ip=***.***.***.*** uri=/_oauth/logout

Now I want to use Microsoft's single sign in/out feature, for this I have deposited the mentioned logout url at Azure as logout url. When I log out via Microsoft's endpoint, Microsoft calls this deposited logout url in the background while processing the logout.
MS url used for logout: https://login.microsoftonline.com/{tenant}/oauth2/v2.0/logout
More information on this behavior at Microsoft's docs (scroll all the way down for logout).
The container logs now show me the logout:
time="2020-11-03T21:15:00Z" level=info msg="Logged out user" handler=Logout host={sub}.{domain}.com method=GET proto=https rule=default source_ip=***.***.***.*** uri="/_oauth/logout?sid=b5dacfe3-2ec9-4f15-9d6f-8497acb5d90d"

However, when I now refresh the page I am not redirected to the login page but I am still logged in, the cookies are still there. This is indeed not as expected. Strange thing: This issue occurs only in chrome-based browser (Google Chrome, MS Edge), in Firefox everything works as expected. Windows should not be a problem either, with Chrominum under Ubuntu exactly the same problem. Starting Chrome without application cache does not solve the problem either, Incognito was also tried. This all was tested on several independent systems.
Firefox at least suggests that my configuration works as such.
What also solves the problem is to delete the cookie manually.
I know this may be difficult to reproduce as it requires a MS Azure setup, so if you need more information, just let me know.

Another side note (perhaps also a problem), I don't know why 401 is returned as status code after a successful logout:
https://github.com/thomseddon/traefik-forward-auth/blob/c19f622fbdac74a959477f8f2b8bdc712754e1c9/internal/server.go#L209
Wouldn't it make more sense to return 200 here to indicate that the logout was successful? Microsoft also expects a 200 there.
Thanks in advance,
RK

I did some further analysis and found a way to reproduce the problem differently:
Let's assume we protect the subdomain sub.domain.com  with this container.

open sub.domain.com , you will be forwarded to the sign in page.
sign in
cancel the session at the oidc-provider. For this I simply closed my session from step 2 at Azure.
(If I would update the page now, I would be automatically logged in again, because the cookie was not deleted yet.)
Open a new browser tab, go to 'https://google.com' and open the console in the browser developer tools, enter:

fetch("https://sub.domain.com/_oauth/logout?sid=77749a00-2d20-44fd-b9d1-4cec4042e1d0", {
  headers: {
    "access-control-allow-origin": "*"
  },
  body: null,
  method: 'GET',
  mode: 'no-cors'
})
.then(data => console.log(data))
.catch(reason => console.log(reason.message))

You will get the following response: GET https://sub.domain.com/_oauth/logout?sid=77749a00-2d20-44fd-b9d1-4cec4042e1d0 net::ERR_ABORTED 401.
This tells me that the cookie was successfully deleted - because (as described in my previous post) a 401 is expected after logout.
Now I can refresh my tab with sub.domain.com  and would have to be redirected to the login page again. Unfortunately this does not happen.

Basically with this behavior you are imitating Microsoft Azures sign out process.
I also extracted the call that Microsoft sends when you log out:
Request URL: https://sub.domain.com/_oauth/logout?sid=c079c7f3-b244-4514-8a2c-91a237c82dd4
Request Method: GET
Status Code: 401
Remote Address: [2606:4700:3035::681b:8d6b]:443
Referrer Policy: strict-origin-when-cross-origin
:authority: sub.domain.com
:method: GET
:path: /_oauth/logout?sid=c079c7f3-b244-4514-8a2c-91a237c82dd4
:scheme: https
accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
accept-encoding: gzip, deflate, br
accept-language: de-DE,de;q=0.9
cache-control: no-cache
pragma: no-cache
referer: https://login.microsoftonline.com/
sec-fetch-dest: iframe
sec-fetch-mode: navigate
sec-fetch-site: cross-site
upgrade-insecure-requests: 1
user-agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Mobile Safari/537.36

Here you can see that also the 401 has come back. If I have the body of this call printed out, then you can read "You have been logged out". So the logout seems to work, but unfortunately the cookie does not disappear.

After a few more detailed analyses I have now found the problem:
For the cookies the SameSite attribute must be set to None and the Secure attribute must be true.
Further information here: https://web.dev/samesite-cookies-explained/
The problem now is that some browsers block third-party cookies, e.g. the chrome in incognito mode - then the cookie update fails again. Unfortunately there is no real direct solution for this.


refactor: split offchain-modules into separate

Codecov Report

Merging #77 (605def2) into main (6176f04) will decrease coverage by 4.79%.
The diff coverage is n/a.

:exclamation: Current head 605def2 differs from pull request most recent head 0433ad1. Consider uploading reports for the commit 0433ad1 to get more accurate results

@@            Coverage Diff             @@
##             main      #77      +/-   ##
==========================================
- Coverage   42.89%   38.10%   -4.80%
==========================================
  Files          46       17      -29
  Lines        2457     1732     -725
  Branches       78        0      -78
==========================================
- Hits         1054      660     -394
+ Misses       1403     1072     -331

Impacted Files
Coverage Δ

...ules/eth-contracts/contracts/libraries/Address.sol

...ain-modules/eth-contracts/contracts/test/ERC20.sol

...th-contracts/contracts/libraries/MultisigUtils.sol

...in-modules/eth-contracts/contracts/ForceBridge.sol

...les/eth-contracts/contracts/libraries/SafeMath.sol

...es/eth-contracts/contracts/libraries/SafeERC20.sol

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 6176f04...0433ad1. Read the comment docs.


Add Rt and Gt reading functions to FREDJob

Add get_job_gt_table and get_job_rt_table methods to FREDJob. These methods support reading Rt and Gt variables that are automatically generated for us by FRED for transmissible conditions.
To support these changes we also refactor FREDJob to extract common file reading functionality. Adds private methods _read_plot_data_file, _convert_wide_plot_table_to_long, and _validate_table_format to FREDJob which encapsulate the logic for reading and processing data from the JOB/<n>/OUT/PLOT/<interval> directory. These are now called by get_job_variable_table and get_job_state_table.

It seems odd that the job class can now access this data, but the run class cannot.  I know we have discussed and fretted about duplicating functionality between the FREDJob and FREDRun classes before. But I wanted to make a note here of this divergence.

@duncandc yes, I see your point but think it's going to slow down development if we need to effectively solve the same problem twice for each piece of new functionality.


feat: Educator Page

Pre-Flight checklist

[ ] Screenshots and design review for any changes that affect layout or styling

[ ] Desktop screenshots
[ ] Mobile width screenshots

[ ] Testing

[ ] Code is tested
[ ] Changes have been manually tested

What are the relevant tickets?
https://github.com/mitodl/ocw-hugo-themes/issues/307
What's this PR do?
Educator's page created which can be accessed from homepage, by clicking "Educators start here"
How should this be manually tested?

This PR is Deployed here
Clicking "Educators Start Here" in homepage should redirect to this educator page.
One long, scrolling page
on-page nav should stay sticky, at top of viewport when user scrolls down
Clicking on item in on-page nav should smooth-scroll down to the appropriate section, not jump.
Verify that all links work fine
Should be a part of ocw-www theme
Compare with design: https://invis.io/7Y12598HHF6E#/462148864_Educators_Start_Here
Proofread content: https://docs.google.com/document/d/1DTD0cHXB_n3UH1HZwyD8adFOfrgxfY_zSzY5pTTyKyE
As much as possible, styles should follow existing styles (e.g. fonts & colors), especially those added in About Us Page #303
Test the responsiveness of the page for various screen sizes, including:

1920×1080
1366×768
768×1024
414×816
375×812

Verify that the embedded video play
Test the page on multiple browsers"
Any other instructions, mentioned in relevant ticket

Screenshots (if appropriate)
Laptop screen:

Mobile screen:

Currently, I have redirected all the non ocw.mit.edu links in new tab and all the ocw.mit.edu links in the same tab.
Is there any convention to follow or it is fine this way?
Should we redirect this to Chalk Radio Podcast youtube or there's any other link?

I'm concerned that the CSS is getting too complicated. Can we use the same fonts that @gumaerc used in #303 ?

I'm concerned that the CSS is getting too complicated. Can we use the same fonts that @gumaerc used in #303 ?

Are you referring to font family, color, or size?
I have used the same font family and color that Carey used, for font size, I have taken that from the PSD.
Do you also want me to use the same font size which Carey used or there's anything else that I'm missing?
ps: I have also attached a screenshot above

I was mostly thinking of font family. Carey's PR hasn't merged yet, so the CSS diff looks bigger than it should.
I will take a closer look at the font sizes, but please look for any opportunities to consolidate and simplify the CSS.

I was mostly thinking of font family. Carey's PR hasn't merged yet, so the CSS diff looks bigger than it should. I will take a closer look at the font sizes, but please look for any opportunities to consolidate and simplify the CSS.

So before starting work, I checked out a new branch from Carey's branch, hence I got his fonts file (base-theme/assets/css/font.scss) and then rebased my branch with main. If there's any changes then we can handle them before merging.
Sure, I'll simplify the CSS.
The css which I have written for educator's page is here: www/assets/css/educator.scss.
Are you referring to the same css?

There are some minor changes

Line height for the first block of text under Welcome Educators should be 35px
Colour for links should be #126F9A
Links displayed in lists are using bold version Helvetica, you could probably increase the font weight for it
Line height of the block of text under Explore Open Reflective Practice at MIT should be 22px
The text below Get motivated  heading should not be bold and the spacing between the heading and body of text should be around 13px

I added a note for the css changes

Thanks, I'll look into them

The screenshots look OK to me. We'll probably get (at least) another round of feedback after this is deployed, but I'd like to get it out the door.

Note: Currently we are using window.scrollTo when user clicks on a nav item and we are also changing nav brand when user scrolls so there is a little glitch when we user clicks on a nav item as window.scrollTo function is triggered which also changes the nav brand quite rapidly, turning out to be a glitch.
This issue can be observed when deployed and rectified with other changes accordingly.


Shutdown issue for guides

From @Emily-Jiang when she tried to shutdown:
mvn liberty:stop
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.google.inject.internal.cglib.core.$ReflectUtils$1 (file:/usr/share/maven/lib/guice.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
WARNING: Please consider reporting this to the maintainers of com.google.inject.internal.cglib.core.$ReflectUtils$1
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
[INFO] Scanning for projects...
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom (3.9 kB at 8.1 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/22/maven-plugins-22.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/22/maven-plugins-22.pom (13 kB at 686 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.jar
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.jar (25 kB at 724 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-install-plugin/2.4/maven-install-plugin-2.4.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-install-plugin/2.4/maven-install-plugin-2.4.pom (6.4 kB at 491 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-install-plugin/2.4/maven-install-plugin-2.4.jar
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-install-plugin/2.4/maven-install-plugin-2.4.jar (27 kB at 1.2 MB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-deploy-plugin/2.7/maven-deploy-plugin-2.7.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-deploy-plugin/2.7/maven-deploy-plugin-2.7.pom (5.6 kB at 401 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-deploy-plugin/2.7/maven-deploy-plugin-2.7.jar
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-deploy-plugin/2.7/maven-deploy-plugin-2.7.jar (27 kB at 994 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-site-plugin/3.3/maven-site-plugin-3.3.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-site-plugin/3.3/maven-site-plugin-3.3.pom (21 kB at 1.0 MB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-site-plugin/3.3/maven-site-plugin-3.3.jar
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-site-plugin/3.3/maven-site-plugin-3.3.jar (124 kB at 2.1 MB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-antrun-plugin/1.3/maven-antrun-plugin-1.3.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-antrun-plugin/1.3/maven-antrun-plugin-1.3.pom (4.7 kB at 364 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/12/maven-plugins-12.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/12/maven-plugins-12.pom (12 kB at 1.2 MB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/9/maven-parent-9.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/9/maven-parent-9.pom (33 kB at 1.9 MB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-antrun-plugin/1.3/maven-antrun-plugin-1.3.jar
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-antrun-plugin/1.3/maven-antrun-plugin-1.3.jar (24 kB at 1.7 MB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-assembly-plugin/2.2-beta-5/maven-assembly-plugin-2.2-beta-5.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-assembly-plugin/2.2-beta-5/maven-assembly-plugin-2.2-beta-5.pom (15 kB at 892 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/16/maven-plugins-16.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/16/maven-plugins-16.pom (13 kB at 682 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-assembly-plugin/2.2-beta-5/maven-assembly-plugin-2.2-beta-5.jar
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-assembly-plugin/2.2-beta-5/maven-assembly-plugin-2.2-beta-5.jar (209 kB at 1.1 MB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.pom (11 kB at 545 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.jar
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.jar (153 kB at 3.3 MB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-release-plugin/2.5.3/maven-release-plugin-2.5.3.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-release-plugin/2.5.3/maven-release-plugin-2.5.3.pom (11 kB at 443 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/release/maven-release/2.5.3/maven-release-2.5.3.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/release/maven-release/2.5.3/maven-release-2.5.3.pom (5.0 kB at 418 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-release-plugin/2.5.3/maven-release-plugin-2.5.3.jar
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-release-plugin/2.5.3/maven-release-plugin-2.5.3.jar (53 kB at 2.7 MB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/codehaus/mojo/maven-metadata.xml
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-metadata.xml
Downloaded from central: https://repo.maven.apache.org/maven2/org/codehaus/mojo/maven-metadata.xml (20 kB at 660 kB/s)
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-metadata.xml (14 kB at 217 kB/s)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.460 s
[INFO] Finished at: 2021-05-04T16:54:10Z
[INFO] ------------------------------------------------------------------------
[ERROR] No plugin found for prefix 'liberty' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories [local (/home/theia/.m2/repository), central (https://repo.maven.apache.org/maven2)] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/NoPluginFoundForPrefixException
theia@theiadocker-emijiang6:/home/project$

Emily, which guide were you working with?

The CDI guide

I presume the above message is because you are not in the correct directory? It looks like you are trying to shut down Liberty from the home dir rather than the project dir.

This is the default behavior for Liberty and is working as expected.

This line basically means you have no pom.xml in your directory with the liberty command:
[ERROR] No plugin found for prefix 'liberty' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories [local (/home/theia/.m2/repository), central (https://repo.maven.apache.org/maven2)] -> [Help 1]

close

it is a user error


Compensation for mouse acceleration in android

[X] I have checked that a similar feature request does not already exist.

Is your feature request related to a problem? Please describe.
When trying to game using --otg I realized the presence of that annoying mouse acceleration. This tool could be really useful for gaming (or maybe even normal use can be improved) only if it had this feature and key mapping (but maybe there are tools for that already?).
Describe the solution you'd like
A flag where we can pass a value which will determine how much deceleration (or whatever is the opposite of mouse acceleration) to apply before passing the mouse input. Better yet hardcode a value which will always work (if that is possible).
Describe alternatives you've considered
I tried searching the web and in my phone but I couldn't find a way to disable mouse acceleration without rooting.
Additional context
Not needed?

Not about acceleration, but pointer speed:

https://www.reddit.com/r/ShieldAndroidTV/comments/57q4lr/change_mouse_speed/
https://gossipfunda.com/how-to-disable-mouse-acceleration-on-android-windows-mac/#how-to-disable-mouse-acceleration-in-android

Does it help?
Scrcpy only sends mouse HID events, how the device handles them is out of control of scrcpy.

The problem is mouse acceleration. Many people like to disable mouse acceleration as it helps with muscle memory and afterwards using mouse acceleration feels really weird.
Maybe there is a way to intercept those HID event and apply the deceleration factor? Might be too much to ask for but, it would be a really cool feature for those who want to try gamming using this. 😅

Thank you for your investigations and details!
Mouse event resampling could also solve a separate problem: #3088. So it might be interesting to add an option --mouse-resample=40 for 40ms. For #3088, it seems perfectly reasonable to perform resampling on the client side (where the events are generated).
However, there is one difficulty for mouse compensation.
This option should work for all mouse input modes (sdk, aoa, uhid). In AOA mode, the events are injected the client side, while in SDK and UHID mode they are injected on the device side.
For more precision, the resampling should be applied as close as possible as event injection: if we resample to send an event every 40ms on the client side, we might end up with events separated by 37ms or 43ms on the server side due to network jitter, especially if scrcpy is connected wirelessly. This would break the assumptions about mouse acceleration behavior.
But on the other hand, it is annoying to perform this mechanism both on the client and on the server (depending on the mouse input mode). Worse, for UHID, HID data is generated on the client side (so that the same code can be used for both AOA and UHID). Resampling should occur before serializing HID data, so it could not be performed on the server side (where it does not "understand" HID, and it would not be satisfying to deserialize HID, resample and reserialize HID).
So maybe we should resample on the client side, and "hope for the best", even if sometimes events might be separated by less than 40ms on the server side. It's an heuristic anyway (the implementation in Android could change in theory).

Thank you for all the details!
I do not plan to work on this soon, but your post will definitely help when I do :)
In practice, resampling for high polling rates issues would be great, but resampling for cancelling acceleration looks fragile/hackish to me (in theory), so that's not a goal. But the same option could target both use cases I guess.

Devices running API >= 33 can directly customize the pointer acceleration (in addition to the velocity scale)
https://cs.android.com/android/platform/superproject/main/+/b246ef31bbabcbbe16c069e153b1105650646e1e:frameworks/base/services/core/java/com/android/server/input/NativeInputManagerService.java;l=123

Interesting :+1:

Please find it in this zip: I don't want to maintain a fork open

Why?


[release-0.20] Remove "max-instances" from e2e binary

Description of changes:
This is a manual cherry-pick of #8887.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/retest

/approve

/lgtm

Presubmits failed earlier because #8264 and #8627 weren't backported


Change style with Angular 5

Hello,
I'm on an Angular5 project, I have JQuery and Ion.RangeSlider installed with npm. How can I modify the style of sliders ? I see this subject : https://stackoverflow.com/questions/34798624/increase-height-of-ion-rangeslider and try it in the css of my component but that's not working.
My html looks like that :
<ion-range-slider
  #sliderElement
  type="double"
  min=1
  max=5
  from=1
  to=5
  prefix="Niveau "
  step=1
  ></ion-range-slider>

Thanks.

Maybe the comments in #16 will Help you.


Missing highlights

I had some trouble configuring the highlights as it does not install them (highlights.scm is missing); this is not really a github issue, but here's my solution.
My understanding of it is that nvim-tree should have a copy of highlights.scm in the queries folder, which is not yet the case.
As suggested on this very repository, I installed both but I selected the possibly trademarked name as the filetype, thus keeping the original asciidoctor ftplugin as fallback.
loongdoc = {
	install_info = {
		url = 'https://github.com/cathaysia/tree-sitter-loongdoc.git',
		files 	= { 'tree-sitter-loongdoc/src/parser.c', 'tree-sitter-loongdoc/src/scanner.c' },
		branch	= 'master',
		generate_requires_npm = false,
		requires_generate_from_grammar = false,
	},
	filetype = 'asciidoc',
},

loongdoc_inline = {
	install_info = {
		url = 'https://github.com/cathaysia/tree-sitter-loongdoc.git',
		files = { 'tree-sitter-loongdoc_inline/src/parser.c', 'tree-sitter-loongdoc_inline/src/scanner.c' },
		branch = 'master',
		generate_requires_npm = false,
		requires_generate_from_grammar = false,
	},
	filetype = 'asciidoc_inline',
}

Thus I cloned this repository as a standalone plugin, as a nvim-treesitter dependency (using lazy).
As treesitter only automatically accepts queries/{language}/{highlights.scm} and such as reported here, I symlink'd the respective queries directories to $HOME/.local/share/nvim/rtp/queries/{lang}, thus I added the path to the nvim runtimepath.
{ 'cathaysia/tree-sitter-loongdoc',
		name = 'treesitter.parser.loongdoc',
		init = function(spec)
			local rtp = ('%s/rtp'):format(vim.fn.stdpath('data'))
			vim.fn.mkdir(rtp, 'p')
			vim.opt.runtimepath:prepend(rtp)

			local queries = ('%s/queries'):format(rtp)
			vim.fn.mkdir(queries, 'p')

			-- Symlink queries folder for language
			vim.iter({ { 'tree-sitter-loongdoc', 'loongdoc' }, { 'tree-sitter-loongdoc_inline', 'loongdoc_inline' } })
				:each(function(tuple)
					local src = ('%s/%s/queries'):format(spec.dir, tuple[1])
					local dst = ('%s/%s'):format(queries, tuple[2])

					-- Path exists, either it is the wrong one, or it is fine as it is
					if vim.uv.fs_stat(dst) then
						assert(vim.uv.fs_readlink(dst) == src, ('%s link does not match the right source %q'):format(tuple[1], src))
						return end

					-- Symbolic link
					vim.uv.fs_symlink(src, dst, { dir = true })
				end)
		end },

Also, I tried using this local clone to automatically build the parsers on startup with ensure_installed (install_info also accepts a local url), but as loongdoc and loongdoc_inline shares the same working directory, they conflict with each other during the build phase.
One last thing, thanks a lot for your work and for the parser of course!

If you mean that after you installed queries, it still doesn't highlight. You can try using TSToggle highlight twice. This is because when nvim-treesitter is loaded, it determines whether highlighting is supported based on the file name.
If you don't want to run TSToggle highlight manually, you will need to change asciidoc to loongdoc.

Mh, I was more reporting the steps to use the plugin as of right now which works for me and also asking if there was a better way to install highlights, I suppose there really isn't :laughing:
It does indeed work and pretty well too!

Yes. I don't have any better ideas. :(

Is this what you want?

Yes, tysm!


Fix text encoding

Fixed text encoding, because sometimes instead of characters we could see question marks.

Hello @iamkhan21!
First things first, thanks a lot for contributing, and apologies for taking so long to review this PR.
I am merging this now.


Instructions for latest snapshot installation are wrong

Instructions about installing the latest snapshot are wrong, as they actually point to the latest stable release, and not the main branch.
See: https://cloudnative-pg.io/documentation/current/installation_upgrade/#testing-the-latest-development-snapshot

An issue with rollout forced us to revert the fix. Reopening, will add a fix soon.


Moved from rc2 to rtm packages with netstandard

The title says it all really, i'm a bit unsure about the xunit upgrades bit things seem to work for me. I don't have a windows box to test the silverlight build on either, but it shouldn't've changed.

Cheers 👍

Should be up now with version 4.0.0-beta2-001.


Is it possible to set another color of the indicator?

The indicator by default has colour same as buttonsColor.


Revert "Autogen: Avoid sorting autoloader output, add missing timers, poll more frequently for completed work"

Reverts sorbet/sorbet#4305

We have a policy of testing changes to Sorbet against Stripe's codebase before
merging them. I've kicked off a test run for the current PR.  When the build
finishes, I'll share with you whether or how it failed. Thanks!
Stripe employees can see the build results here:
→ https://go/builds/bui_Jl0YMHjxZCIuc3
→ https://go/builds/bui_Jl0YUYTtT0UHPz

This PR doesn't seem to be causing the problem we're seeing.


Error AVS0118: Some dependencies could not be found for the country/region 'FR'

Hello Freddy,
I've been trying to migrate my app in AppSource in the CI/CD under github actions,when i run "Publish to AppSource" I'm getting this error in partner center
The validation of the submission failed with the following error(s): Error AVS0118: Some dependencies could not be found for the country/region 'FR' and release '22.5.0' of Business Central. Make sure that these dependencies are part of your submission or that they have already been uploaded to AppSource and that they are available for the targeted country/region and release: 'License Management' (50501856-fc24-47ca-8359-4809b382aa19) by 'SBSI Consulting' version '<IP_ADDRESS>'.

the language of depencies is "fr" and the app too
it's the full log:
Downloading BcContainerHelper latest version from CDN
Import from C:\ProgramData\BcContainerHelper\6.0.4\BcContainerHelper\BcContainerHelper.ps1
BcContainerHelper version 6.0.4
BC.HelperFunctions emits usage statistics telemetry to Microsoft
Applying settings from D:\a\FinanceBasics\FinanceBasics.github\AL-Go-Settings.json
Applying settings from D:\a\FinanceBasics\FinanceBasics.AL-Go\settings.json
No settings found in D:\a\FinanceBasics\FinanceBasics.github\Publish To AppSource.settings.json
No settings found in D:\a\FinanceBasics\FinanceBasics.AL-Go\Publish To AppSource.settings.json
No settings found in D:\a\FinanceBasics\FinanceBasics.AL-Go\fofanasbsi.settings.json
Artifacts current
Projects:
.
Project 'FinanceBasics'
Analyzing releases https://api.github.com/repos/SBSI-Consulting/FinanceBasics/releases
Downloading release v1, projects FinanceBasics, type Apps
project 'FinanceBasics'
AssetPatterns: 'FinanceBasics--Apps-.zip' | 'FinanceBasics-Apps-*.zip'
https://api.github.com/repos/SBSI-Consulting/FinanceBasics/releases/assets/148674267
'D:\a\FinanceBasics\FinanceBasics.artifacts\FinanceBasics-main-Apps-<IP_ADDRESS>.zip'
Artifacts:

FinanceBasics-main-Apps-<IP_ADDRESS>
Applying settings from D:\a\FinanceBasics\FinanceBasics.github\AL-Go-Settings.json
Applying settings from D:\a\FinanceBasics\FinanceBasics.AL-Go\settings.json
No settings found in D:\a\FinanceBasics\FinanceBasics.github\Publish To AppSource.settings.json
No settings found in D:\a\FinanceBasics\FinanceBasics.AL-Go\Publish To AppSource.settings.json
No settings found in D:\a\FinanceBasics\FinanceBasics.AL-Go\fofanasbsi.settings.json
Analyzing repository
No performance test apps found in bcptTestFolders in .AL-Go\settings.json
Azure.Storage Module is available in version 2.1.0
Using Azure.Storage version 2.1.0
Attempting authentication to https://api.partner.microsoft.com/.default using clientCredentials...
  Microsoft uses this information to improve our PowerShell cmdlets.  Participation is voluntary and when you
choose to participate your device automatically sends information to Microsoft about how you use Azure PowerShell.

If you choose to participate, you can stop at any time by using Azure PowerShell as follows:

Use the Disable-AzureDataCollection cmdlet to turn the feature Off. The cmdlet can be found in the
AzureResourceManager module

To disable data collection: PS > Disable-AzureDataCollection
If you choose to not participate, you can enable at any time by using Azure PowerShell as follows:

Use the Enable-AzureDataCollection cmdlet to turn the feature On. The cmdlet can be found in the
AzureResourceManager module

To enable data collection: PS > Enable-AzureDataCollection
Select Y to enable data collection [Y/N]:
WARNING: You choose not to participate in Microsoft Azure PowerShell data collection.
WARNING: The setting profile has been saved to the following path 'C:\Users\runneradmin\AppData\Roaming\Windows Azure
Powershell\AzureDataCollectionProfile.json'.
PUT https://api.partner.microsoft.com/v1.0/ingestion/products/xxxxxxx/packages/3af0df27-85c2-469e-9d6e-ee836deb73d8
{
"id":  "3af0df27-85c2-469e-9d6e-ee836deb73d8",
"fileName":  "SBSI Consulting_Finance Basics_<IP_ADDRESS>.app",
"fileSasUri":  "https://ingestionpackagesprod1.blob.core.windows.net/file/3058306304102914289?sv=2018-03-28\u0026sr=b\u0026sig=WT%2FqVOjPxeOhRu2r79RD%2FmovSKud2cww7A3G4Bs4p1M%3D\u0026se=2024-01-31T09%3A37%3A16Z\u0026sp=rwl",
"resourceType":  "Dynamics365BusinessCentralAddOnExtensionPackage",
"state":  "Uploaded",
<EMAIL_ADDRESS> ""b10131b7-0000-0800-0000-65b8bfc80000""
}
PUT https://api.partner.microsoft.com/v1.0/ingestion/products/xxxxxxx/packageConfigurations/4b1546bc-67f7-4d45-b31a-5116760677dd
{
"resourceType":  "Dynamics365BusinessCentralPackageConfiguration",
<EMAIL_ADDRESS> ""e5067aa0-0000-0800-0000-65b8b2a10000"",
"packageType":  "AddOn",
"id":  "4b1546bc-67f7-4d45-b31a-5116760677dd",
"packageReferences":  [
{
"value":  "3af0df27-85c2-469e-9d6e-ee836deb73d8",
"type":  "Dynamics365BusinessCentralAddOnExtensionPackage"
}
]
}
GET https://api.partner.microsoft.com/v1.0/ingestion/products/xxxxxxx/branches/getByModule(module=Property)
GET https://api.partner.microsoft.com/v1.0/ingestion/products/xxxxxxx/properties/getByInstanceID(instanceID=ef328ccc-6df3-0e2b-fafd-e5b8d449046a)
PUT https://api.partner.microsoft.com/v1.0/ingestion/products/xxxxxx/properties/ef328ccc-6df3-0e2b-fafd-e5b8d449046a
{
"resourceType":  "AzureProperty",
"hideKeys":  [
             ],
"categories":  [

               ],
"leveledCategories":  {
                          "Finance":  [
                                          "accounting"
                                      ]
                      },
"extendedProperties":  [

                       ],
<EMAIL_ADDRESS> "\"0c0570bb-0000-0800-0000-65b27af60000\"",
"useEnterpriseContract":  false,
"globalAmendmentTerms":  "",
"id":  "ef328ccc-6df3-0e2b-fafd-e5b8d449046a",
"leveledIndustries":  {

                      },
"termsOfUse":  "https://go.microsoft.com/fwlink/?linkid=2041178",
"applicableProducts":  [

                       ],
"industries":  [

               ],
"productTags":  [

                ],
"marketingOnlyChange":  false,
"additionalCategories":  [

                         ],
"appVersion":  "<IP_ADDRESS>",
"submissionVersion":  "",
"customAmendments":  [

                     ]

}
POST https://api.partner.microsoft.com/v1.0/ingestion/products/xxxxxxxx/submissions
{
"resources":  [
{
"type":  "Package",
"value":  "4b1546bc-67f7-4d45-b31a-5116760677dd"
},
{
"type":  "Property",
"value":  "ef328ccc-6df3-0e2b-fafd-e5b8d449046a"
}
],
"targets":  [
{
"type":  "Scope",
"value":  "preview"
}
],
"resourceType":  "SubmissionCreationRequest"
}
Automated validation......... Failure
New AppSource submission failed
resourceType       : Submission
state              : InProgress
substate           : Failed
targets            : {@{type=Scope; value=Preview}}
resources          : {@{type=Availability; value=280be3e2-6fbb-3cad-43d4-85b85d97fc8b}, @{type=Listing;
value=13c8c3ba-058e-f9d9-ea89-dea5d4fa85ed}, @{type=Package;
value=4b1546bc-67f7-4d45-b31a-5116760677dd}, @{type=Property;
value=ef328ccc-6df3-0e2b-fafd-e5b8d449046a}...}
publishedTimeInUtc : 1601-01-01T00:00:00Z
pendingUpdateInfo  : @{updateType=Create; status=Completed}
releaseNumber      : 3
friendlyName       : Submission 3
areResourcesReady  : True
id                 :<PHONE_NUMBER>697321401

If you upload your app manually to validation - does it then work?

It looks like the version of the license management app in AppSource isn't what you depend on:
You need:
License Management' (50501856-fc24-47ca-8359-4809b382aa19) by 'SBSI Consulting' version '<IP_ADDRESS>'.
AppSource has:

Which is also the error you get.

Thanks freddy, it works now, but I want to know why if I don't add manually it doesn't upload all the dependencies.
I would like to know what other possible solutions are available ?

Sorry, but I still don't know what the problem is/was?
I could see that your app had a dependency on an appSource app in a version, which hasn't been uploaded to AppSource.
When that is the case, validation will obviously reject your app.
This has nothing to do with automatic appsource submission or not.
If it worked after manually uploading the app, then you must have changed the dependency on the licensing app.
Will close this issue as it is unrelated to AL-Go.


X.A.UpdatePointer - pointer warping to lower right outside window when mouse move after update

Problem Description
X.A.UpdatePointer - pointer warping to lower right outside window when mouse move after update
Steps to Reproduce

SUPER+j/k to change focus (the pointer is upated to the center of each window correctly);
Move mouse and pointer will continue moving from the center of the window (not warping);
SUPER + j/k  to update the cursor
focus back on the same window just now, the pointer position is correct;
move mouse again, the pointer will warp to lower right corner and start moving from there;

Strangely in step 5, if I move pointer using touchpad (I'm on a laptop), the pointer will not warp.
So if I use touchpad and mouse alternatively, the pointer will behave correctly, (if mouse went wrong, change to touchpad, and vice versa, for the pointer not to warp after update)
Configuration File
import XMonad.Actions.UpdatePointer

 , logHook = dynamicLog  >> updatePointer (0.5, 0.5) (0, 0)

Checklist

[x ] I've read CONTRIBUTING.md

I tested my configuration

[x] With xmonad 0.16.9999 (commit 13849c6230188cfbc303348ea3b374be4b60b655)
[x] With xmonad-contrib 0.16.9999 (commit  e30269f)

A side effect of X.A.Updatepointer,  it will prevent the new module X.A.TiledWindowDragging from working.

I can't reproduce the issue in the OP.  I tried with the following config:
import XMonad
import XMonad.Actions.UpdatePointer
import XMonad.Hooks.DynamicLog

main :: IO ()
main = xmonad $ def { logHook = dynamicLog >> updatePointer (0.5, 0.5) (0, 0) }

(It's always good to post a complete minimal example, so people don't have to guess how the rest of your confguration looks)

Strangely in step 5, if I move pointer using touchpad (I'm on a laptop), the pointer will not warp.

This suggests it's more likely a bug (at this point arguably a feature 😐) in the X server than xmonad.

I can't reproduce the issue in the OP. I tried with the following config:
import XMonad
import XMonad.Actions.UpdatePointer
import XMonad.Hooks.DynamicLog

main :: IO ()
main = xmonad $ def { logHook = dynamicLog >> updatePointer (0.5, 0.5) (0, 0) }

(It's always good to post a complete minimal example, so people don't have to guess how the rest of your confguration looks)

Hi I updated the config section with addition of TiledWindowDragging,. Below shows the mouse warping either moving the mouse or after dragging the window, it always jump to lower right corner.  bear with the small pointer:
https://user-images.githubusercontent.com/14981695/123546898-24a5af80-d791-11eb-9446-b17f5d548762.mp4

Strangely in step 5, if I move pointer using touchpad (I'm on a laptop), the pointer will not warp.

This suggests it's more likely a bug (at this point arguably a feature 😐) in the X server rather than xmonad.

could it because I adjusted sensitivity of mouse/touchpad(a less reliable touch occurs). but it consistently moves to lower right,  can it be a hardware problem? 🤔🤔🤔

XMonad can't tell the difference between the two inputs, so they should behave the same way unless there's something in the hardware or the server interfering. (It's possible to split the inputs, but then you'd have to teach xmonad and most other apps about XInput2 to use both devices.)

XMonad can't tell the difference between the two inputs, so they should behave the same way unless there's something in the hardware or the server interfering. (It's possible to split the inputs, but then you'd have to teach xmonad and most other apps about XInput2 to use both devices.)

hi,
I have adjusted both touchpad and mouse sensitivity using systems service buy doing:
xinput [mouse id] "transformation matrix" 15 0 0 0 15 0 0 0 0 2.5
xinput [touchpad id] "transformation matrix" 5 0 0 0 5 0 0 0 0 2.5

does it count as a server side input splitting ?

No, but it might conceivably affect this. Splitting the inputs would require first unbinding one or both devices from the "virtual input device" shown in the device tree.

No, but it might conceivably affect this. Splitting the inputs would require first unbinding one or both devices from the "virtual input device" shown in the device tree.

I see! and the culprit is indeed the sensitivity script! After disabling it, the updatePointer works correctly.  But the TiledWindowDragging is still not working: DraggingVisualizer shows the window dragging, but after releasing the mouse no switch is done. What could be the reason?

No, but it might conceivably affect this. Splitting the inputs would require first unbinding one or both devices from the "virtual input device" shown in the device tree.

I see! and the culprit is indeed the sensitivity script! After disabling it, the updatePointer works correctly. But the TiledWindowDragging is still not working: DraggingVisualizer shows the window dragging, but after releasing the mouse no switch is done. What could be the reason? and how can I increase the sensivity without changing the transformation matrix?


Integrate Google OAuth Into Vue App

Integrate the Google OAuth 2.0 we have set up into the Vue application.
The first implementation choice is using this plugin:
https://www.npmjs.com/package/vue-google-api
However a native JavaScript approach is also an option:
https://stackoverflow.com/questions/48426972/importing-javascript-file-for-use-within-vue-component
All unauthenticated calls, except for /login and /accept-invitation should redirect to /login.

After installing and having some troubles implementing vue-google-api, I looked on the package GitHub page to discover the disclaimer:
"This project is outdated and no longer maintained, I can't find time to do what should be done here. Really sorry, if someone wants to maintain it, tell me, I accept to transfer ownership, or even without asking me, fork it..."
Therefore I won't use it, and will explore other options.


Allow TreeItem to revive serialized Uri

I'm building an extension that would like to serialize icon Uris using the memento object so that I can later restore them without parsing on startup. However, TreeItem.iconPath does not seem to accept the object restored from the memento which forces me to needlessly parse my stored Uris. Since the api does not expose any methods to revive Uris, I believe it is necessary for the TreeItem to do the conversion. I'm basing this assumption on the fact that WebviewPanel.iconPath does accept Uris in serialized form and that this functionality is expected behavior. If this feature request doesn't seem like a good idea, could the api instead expose the Uri.from or Uri.revive methods?

WebviewPanel.iconPath does accept Uris in serialized form and that this functionality is expected behavior

That would be oversight or un-intended feature - we don't specify how uris are serialised and therefore we don't expose revive. You can use toString and parse to deal with externalised uris and that's a good option

If that isn't the intended behavior then I'll close the issue. I just thought that since I'm loading a bunch of unique icons it would be more efficient to skip the parsing, but since I haven't run into any problems with parse I guess this isn't worth pursuing.


feat: Gas benchmark and optimization

Resolves #29
Addition

Implement gas benchmarks for the contracts
Optimize gas

Proposal:
Motivations
We need to optimize as much as possible the gas for the various operations we are driving. In the contract PragmaDecoder.sol, which Pragma.sol inherits, we defined a series of mapping like for example mapping(bytes32 => SpotMedian) public spotMedianFeeds; . The goal here is to optimize this mapping. In solidity, stored structures are packed as bytes32. For example, considering the metadata structure:
struct Metadata {
    bytes32 feedId;
    uint32 timestamp;
    uint16 numberOfSources;
    uint8 decimals;
}

This structure will take two storage slots, with the second having 21 free bytes. Thus, if we consider the SpotMedian structure:
struct SpotMedian {
    Metadata metadata;
    uint256 price;
    uint256 volume;
}

this structure will occupy 4 storage slots. Due to the nature of data, we can, under validation lower the allocation to u128 to save a slot. Another point, notably for the Option structure,
struct Options {
    Metadata metadata;
    uint128 strikePrice;
    uint128 impliedVolatility;
    uint128 optionPrice;
    uint128 underlyingPrice;
    int128 delta;
    int128 gamma;
    int128 vega;
    int128 theta;
    int128 rho;
    uint64 timeToExpiry;
    bool isCall;
}

if we lower the size allocated to each variable, we can fill nearly 7 slots, compared to 13 initially.
The simulation ran showed the following results:
 Gas used for SpotMedian update: 150146  Gas used for TWAP update: 196690  Gas used for RealizedVolatility update: 219950  Gas used for Options update: 313157  Gas used for Perpetuals update: 172766
which represents 11.54% decrease compared to the previous optimization for the SpotMedian, 25.33% for TWAP, 23.37% for RV, 22.84% for Options, 20.47% for Perps


Add Identity-Tasklist integration

Blocked by #268 (contains currently lot of commits from 268, will be rebased after merging #268)
Almost similar to #268

[x] Configure Tasklist and Identity to communicate with each other

[x] Add env vars to identity
[x] Add env vars to tasklist

[x] Add integration test for tasklist login (use a session based login here)
[x] Auto generate a secret for Operate-Identity ( can be also overwritten by user and an existing secret)
[x] Adjust docs, values file
[x] Make it possible to disable this configuration
[x] Add notes in Helm release notes file
[x] Add template tests

closes https://github.com/camunda/camunda-platform-helm/issues/270

Does this contain the commits from the Operate PR? It kind of looks like it does, and it would explain the size of the PR :smile:

Hey @npepinpe thanks for your review :+1:
Regarding your comments/questions:

I just realized we have to port-forward keycloak. That's less than ideal smile Is there any way it can just work without that? Because how would this look like in production? They'd need to run a port-forward all the time? Yikes. Did I miss some other way of doing it? If they have an ingress for Keycloak then it will work fine? I find that a bit strange, I would expect all authentication requests to go through Identity, and Keycloak to be fully hidden.

YES. This is what I raised multiple times now as well, but it was considered as the way to go for now. Tbh I saw also currently no other better way. The login is done via redirects to Keycloak and back. As alternative the user can deploy an ingress controller and enable the ingress for the services then it might be nicer to use (instead of port-forwards).
Slack comment about this: https://camunda.slack.com/archives/C02UT3T8DQR/p1648477086721989
Github comment: https://github.com/camunda/camunda-platform-helm/issues/127#issuecomment-1078722653

I think versions can be updated to 8.0.0

I will do it after merging the PR's.

Does this contain the commits from the Operate PR? It kind of looks like it does, and it would explain the size of the PR smile

Yes  sorry. I actually thought I mentioned this in the description.

Do you have any specific proposal otherwise I would say we can iterate over it later

@Zelldon nothing more specific than what I already wrote down. I agree that getting this working first and then iterating later is fine :+1:

In order to make the starting experience easier configured the redirectUrls to different ports and adjusted the release helm notes such that it makes it easier to play around with it. We can just copy the port-forwards and get access to all web applications.
NAME: camunda-platform-test
LAST DEPLOYED: Tue Apr 12 12:09:46 2022
NAMESPACE: zell-helm-test
STATUS: deployed
REVISION: 1
NOTES:
# (camunda-platform - 0.0.29)
   ___   _   __  __ _   _ _  _ ___   _     ___ _      _ _____ ___ ___  ___ __  __
  / __| /_\ |  \/  | | | | \| |   \ /_\   | _ \ |    /_\_   _| __/ _ \| _ \  \/  |
 | (__ / _ \| |\/| | |_| | .` | |) / _ \  |  _/ |__ / _ \| | | _| (_) |   / |\/| |
  \___/_/ \_\_|  |_|\___/|_|\_|___/_/ \_\ |_| |____/_/ \_\_| |_| \___/|_|_\_|  |_|

## Installed Services:

- Zeebe:
  - Docker Image used for Zeebe: camunda/zeebe:8.0.0-rc1
  - Zeebe Cluster Name: "camunda-platform-test-zeebe"
  - Prometheus ServiceMonitor Enabled: false
- Operate:
  - Enabled: true
  - Docker Image used for Operate: camunda/operate:8.0.0-rc1
- Tasklist:
  - Enabled: true
  - Docker Image used for Tasklist: camunda/tasklist:8.0.0-rc1
- Identity:
  - Enabled: true
  - Docker Image used for Identity: camunda/identity:8.0.0-rc1
  - Keycloak: bitnami/keycloak:16.1.1-debian-10-r52
- Elasticsearch:
  - Enabled: true
  - ElasticSearch URL: http://elasticsearch-master:9200

### Zeebe

The Cluster itself is not exposed as a service that means that you can use `kubectl port-forward` to access the Zeebe cluster from outside Kubernetes:

> kubectl port-forward svc/camunda-platform-test-zeebe-gateway 26500:26500 -n zell-helm-test

Now you can connect your workers and clients to `localhost:26500`

### Connecting to Web apps

As part of the Helm charts an ingress definition can be deployed, but you require to have an Ingress Controller for that Ingress to be Exposed.
In order to deploy the ingress manifest, set `<service>.ingress.enabled` to `true`. Example: `operate.ingress.enabled=true`

If you don't have an ingress controller you can use `kubectl port-forward` to access the deployed web application from outside the cluster:

Identity: kubectl port-forward svc/camunda-platform-test-identity 8080:80
Operate:  kubectl port-forward svc/camunda-platform-test-operate 8081:80
Tasklist: kubectl port-forward svc/camunda-platform-test-tasklist 8082:80

If you want to use different ports for the services, please adjust the related configs in the values file since these ports are used as redirect URL for Keycloak.

The authentication via Identity/Keycloak is enabled. In order to login into one of the services please port-forward to Keycloak
as well, otherwise a login will not be possible. Make sure you use `18080` as port.

> kubectl port-forward svc/camunda-platform-tes 18080:80

Now you can point your browser to one of the service's login page. Example: http://localhost:8081 for Operate.

Default user and password: "demo/demo"

I can now easily port-forward and access them:

If no one objects until 1 pm @npepinpe @oleschoenburg @dlavrenuek I will merge it and do a new release (after I updated to cam 8 and do some other smaller pieces)


Q: Source map URL, meteor://??app...

Hi,
It's question rather than issue.  Sorry I couldn't find better place for question.
I'm trying to map between source map path and local map path for remote debugging.
FYI, I'm trying to set up remote debug using VSCode (setup remoteroot and localroot at launch.json)
From Firefox or Chrome, I found the source path starts from meteor://app.. ( is some binary).
**Could you please advice me what is ?
**If it is real binary, it would be quite difficult or impossible to map between 'meteor://app...' and my local path by debugger tool(such as VSCode)
Thanks in advance,
Jin.

This is is a PERSONAL COMPUTER (\u{1f4bb}) character. It makes sure the source map category is always the last in Chrome DevTools. See for more https://github.com/meteor/meteor/blob/baa3f6a152af96ff1e7a7f9f0e00c86c9cd922ee/tools/isobuild/bundler.js#L1093


Webhook agent should provide a way to view

Currently running into a problem with the webhook agent. Whenever I try to send a request with the host header it gives 200 OK and doesn't create an event. If I send a request without the host header then it gives 201 Created and creates the event. Are the headers that get sent to the webhook agent that temperamental?

Also I set the event_headers option of the webhook agent to include host but that value contains the domain the agent is currently running on. I was expecting the domain of the host header the client sent to the webhook. Is there a way to get the domain/host header that was sent to the webhook?


[python] Design and implement append-mode logic

Goals:

Two or more inputs (AnnData, Seurat, etc)
Going into a single SOMA Experiment
Main task: allocation-tracking of soma_joinid

Example:
Input I1, genes g1, g2, g4 have soma_joinid 0, 1, 2
Input I2, genes g3, g4, g5 will have have soma_joinid 3, 2, 4 with 2 being re-used and 3,4 being new

Needs to be implemented in Python and R.
Python PRs:

#1474
#1500
#1554
#1556
#1498 (sketchware only)

#1587 is merged. Remaining work includes

Cloud notebooks, outside the scope of this task
Port to R


Missing optional Array params default to the Hash instead of Array

If if declare a param as a type: Array with nested params
params do
  optional :comments, type: Array do
    optional :description, type: String
  end
end
post do
  { params: params.slice(:comments), declared: declared(params) }
end

and it is missing from the incoming params (or has a default of nil) then it defaults to a Hash
curl -X POST http://localhost:9292/api/entities  -d '{}' -H "Content-Type: application/json"

{"params":{},"declared":{"comments":{"description":null}}}

This only occurs on the optional as the group and requires both throw validation errors.
There is a workaround by setting a default: [] on the Array param.

This is an interesting one. I think it's a legit bug. Would love at least a spec that reproduces it.

@dblock - I open a PR w/ two specs for Arrays and Hashes.
I wonder if the required params inside optional groups issue (#723) is related.

There are two different issues here.
The first,

def slice(*keys) # If the given keys don't exist, returns an empty hash.

so { params: params.slice(:missing_param) } => "{"params":{}}" is expected behaviour
the second one, declared has include_missing option(by default is true)
so your specs from https://github.com/intridea/grape/pull/895  are passed if include_missing: false is used.
@adamcooper take a look :)

@dm1try - Thanks for the response.
I just included the first slice to prove that nothing was actually in the params.
I wrote the specs to possibly simplify the implementation.
The issue is the default value (with include_missing = true) for nested arrays comes back as a hash instead of an array.  That seems like a bug to me.
I updated the specs in this commit to help show the issue.

@adamcooper,

I just included the first slice to prove that nothing was actually in the params.

why just not params[:comments]?)

The issue is the default value (with include_missing = true) for nested arrays comes back as a hash instead of an array. That seems like a bug to me.

Anyway, it's definitely a bug. I see now.

I updated the specs in this commit to help show the issue.

Thanks, now it is better than it was and makes sense!

@dm1try - I can't remember exactly why I used slice instead of the simpler params[:comments].  I think I was trying different combinations of multiple parameters so slice(:array, :hash) was simpler in one line rather than array: params[:array], hash: params[:hash].  hehe.
Thanks!  Please let me know if I can help out.  I spent some time reading through the source when I was using Grape and Grape Swagger - trying to understand how to use them together really.  I'm not super familiar but would like to help out if I can.
I originally ran into something like this issue #928.  I also was trying to use nested require(s/d) validations inside an optional array validation.

See #994.It can be closed, I think.

Closing, @adamcooper please confirm.


Proguard Rules + Kotlin Serialization

This is more of FYI than an open issue, but I spent too long on this problem.
If the client doesn't use kotlinx.serialization then in release these types of problems will come up
Error decoding JSON: Serializer for class 'EvaluationFlag' is not found.
Mark the class as @Serializable or provide the serializer explicitly.

We don't use kotlinx.serialization but seeing as the library does, we needed to add proguard rules to stop the classes from being obfuscated during run-time for our release builds. You can find the rules here.
Might be worth adding this note to your documentation + the rules for such cases.

Hello! we are facing the same issue. It looks like this change introduced kotlinx.serialization but no proguard rules were added nor published by the library. I agree with @ppetarr this should either be included by the SDK itself or add the required proguard rules in the docs. Thanks!

This should be fixed in 1.12.2


Post processing HTML python script

partially fixes #35

Thanks. Worked well.
Some feedback (I imagine you were probably already considering some of these since this was a quick first iteration/partial commit!):
(1) Please sort in reverse order (the one with most contribution should be first)
(2) In comments on top, please add instruction to start a static browser on ~/suibase/docs/src/.vuepress/dist (something I will forget 6 months from now).
(3) Consider making "grep -ril contributors" tighter.
e.g. mermaid.core-0f834940.js should not be in the list
Adding a bit more regex helps:
grep -ril "const.*JSON.*git.*contributors"
(4) "const e" vs "const t"
Is there a way to make this work without caring if e or t (who knows... could be a different letter used in slightly different scenario!)


Modifying sections and headings controller and added tree action

ORIGINAL ISSUE DESCRIPTION:
Step 1 work on the new endpoints for smoke test project
WHAT'S WE DONE IN THIS PR:

Modified routes to add new tree actions
Modified sections and headings controllers and added tree functions
Added new templates for new tree actions

TRELLO STORY

Couple things I'd like to point out we could do as an additional enhancement :

The endpoint for sections is very slow as expected, we'll need to do some caching here I think
The headings#tree could probably take advantage of find_heading before_action and not re-implement the lookup, but I m leaving this for the end, as now I can copy paste goods_nomenclature_id from the db to test it for various headings


DB: Add set up of sqflite & sqflite_common_ffi

I have done the set up of sqflite and sqflite_common_ffi. Right now the interaction with the db is possibile from any OS. I have also written 3 tests to verify correct operation. I took the liberty of renaming some directories.
Signed-off-by: Federico Bruzzone<EMAIL_ADDRESS>

There are these conflicts because I have renamed the directories ...


[SPARK-49136][SQL] Eagerly initialize DriverManager on Driver

What changes were proposed in this pull request?

This is similar to SPARK-23186, which eagerly initializes DriverManager on the executor side to mitigate some JDBC drivers' deadlock issue on initializing.
Why are the changes needed?

We got a report from our customer that there is a deadlock issue when using the Spark JDBC connector with StarRocks connector, the Spark driver thread dump shows it is caused by com.mysql.jdbc.Driver initializing deadlock, more tech details are explained at STORM-2527 and SPARK-23186.
"SparkSQLSessionManager-exec-pool: Thread-8176" #8176 daemon prio=5 os_prio=0 tid=0x0000000003ee0000 nid=0x932 in Object.wait() [0x00007f0a22c2e000]
   java.lang.Thread.State: RUNNABLE
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:264)
	at com.starrocks.connector.spark.sql.connect.StarRocksConnector.createJdbcConnection(StarRocksConnector.java:94)
	at com.starrocks.connector.spark.sql.connect.StarRocksConnector.extractColumnValuesBySql(StarRocksConnector.java:111)
	at com.starrocks.connector.spark.sql.connect.StarRocksConnector.getSchema(StarRocksConnector.java:46)
	at com.starrocks.connector.spark.sql.StarRocksTableProvider.getStarRocksSchema(StarRocksTableProvider.java:82)
	at com.starrocks.connector.spark.sql.StarRocksTableProvider.inferSchema(StarRocksTableProvider.java:64)
	at org.apache.spark.sql.execution.datasources.v2.DataSourceV2Utils$.getTableFromProvider(DataSourceV2Utils.scala:90)
	at org.apache.spark.sql.execution.datasources.v2.DataSourceV2Utils$.loadV2Source(DataSourceV2Utils.scala:140)
...

"SparkSQLSessionManager-exec-pool: Thread-8693" #8693 daemon prio=5 os_prio=0 tid=0x00007f0a78a0a000 nid=0x26d2 in Object.wait() [0x00007f0a2161b000]
   java.lang.Thread.State: RUNNABLE
	at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions.$anonfun$driverClass$2(JDBCOptions.scala:107)
	at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions$$Lambda$3369/1410955143.apply(Unknown Source)
	at scala.Option.getOrElse(Option.scala:189)
	at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions.<init>(JDBCOptions.scala:107)
	at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions.<init>(JDBCOptions.scala:39)
	at org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:34)
	at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:346)
	at org.apache.spark.sql.execution.datasources.CreateTempViewUsing.$anonfun$run$2(ddl.scala:114)
	at org.apache.spark.sql.execution.datasources.CreateTempViewUsing$$Lambda$3355/398586231.apply(Unknown Source)
	at scala.Option.getOrElse(Option.scala:189)
	at org.apache.spark.sql.execution.datasources.CreateTempViewUsing.run(ddl.scala:106)
...

"SparkSQLSessionManager-exec-pool: Thread-8185" #8185 daemon prio=5 os_prio=0 tid=0x00007f0a5c3d0000 nid=0x11ce in Object.wait() [0x00007f0a24345000]
   java.lang.Thread.State: RUNNABLE
	at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions.$anonfun$driverClass$2(JDBCOptions.scala:107)
	at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions$$Lambda$3369/1410955143.apply(Unknown Source)
	at scala.Option.getOrElse(Option.scala:189)
	at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions.<init>(JDBCOptions.scala:107)
	at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions.<init>(JDBCOptions.scala:39)
	at org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:34)
	at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:346)
	at org.apache.spark.sql.execution.datasources.CreateTempViewUsing.$anonfun$run$2(ddl.scala:114)
	at org.apache.spark.sql.execution.datasources.CreateTempViewUsing$$Lambda$3355/398586231.apply(Unknown Source)
	at scala.Option.getOrElse(Option.scala:189)
	at org.apache.spark.sql.execution.datasources.CreateTempViewUsing.run(ddl.scala:106)
...

PS: the tread dump comes from a Kyuubi Spark engine (similar to the Spark Thrift Server) - that serves multiple Spark sessions to accept and run queries, thus I suppose this patch would benefit STS and Spark Connect use cases.
Does this PR introduce any user-facing change?

Yes, this would mitigate a potential Spark driver-side JDBC driver initializing deadlock issue.
How was this patch tested?

Tested in our customer env for a few days, the deadlock has gone after eagerly initializing DriverManager.
Was this patch authored or co-authored using generative AI tooling?

No

cc @dongjoon-hyun @yaooqinn @LuciferYang

@dongjoon-hyun thanks for your questions

Why DriverRegistry is not sufficient for your use case?

on the driver side, JDBCOptions has more chances to be invoked and initialized early than DriverRegistry;
on the executor side, they will be initialized at almost the same time.
https://github.com/apache/spark/blob/a3feffdff9cd17e0435ac5620731093f40d1a3bf/sql/core/src/main/scala/org/apache/spark/sql/jdbc/JdbcDialects.scala#L230-L238

Why you choose JDBCOptions.scala as a place for eager initialization?

my idea is, to call DriverManager.getDrivers as early as possible, with a JVM-level global lock. I went through the JDBC-related code, object JDBCOptions should be a better place than object DriverRegistry


add: eva icons

Screenshots

Hi @akshayitzme! :) Welcome to LinksHub! :) Your PR has been closed because you have not raised an issue for this link. Please read the Issue Requests section of our Contributing Guide to learn how to do this. After your raised issue is approved and assigned to you, your PR will be reopened.

fixes #1792
@CBID2 please reopen this PR

Done! 😅

@CBID2
review and merge it.

@CBID2
review and merge it.

Lol, I need your review first

Well done @akshayitzme! :)


add cumsum and cumprod ops

Hi
I made a PR #3791 to add these ops to the Keras backend directly. Do people think it is a good idea to add these ops?

Tests pass now.


error: dereferencing pointer to incomplete type ‘RSA {aka struct rsa_st}’ rsa->n =

I git the latest source code, compile them in Ubuntu 16.04
that got follow errors:
[MAKE] Generating cache.mk [C] Compiling src/core/lib/security/credentials/jwt/jwt_verifier.c src/core/lib/security/credentials/jwt/jwt_verifier.c: In function ‘pkey_from_jwk’: src/core/lib/security/credentials/jwt/jwt_verifier.c:498:10: error: dereferencing pointer to incomplete type ‘RSA {aka struct rsa_st}’ rsa->n = ^ Makefile:2526: recipe for target '/home/berli/grpc/objs/opt/src/core/lib/security/credentials/jwt/jwt_verifier.o' failed
I tried https://github.com/grpc/grpc/issues/8976 the instructions, but still
please help

This is a duplicate of #8801 and #10589

Closing as a duplicate of issues 8801 and 10589.


Publish this fork as an own npm package

To make usage of this fork of the library easier, we should publish our own npm package for it.
This should be possible by using npm Scopes, e.g. as @PointCloudTechnology/resumable.

When this is done, please also add a small explanation on how to install the package to the reamde.


print images registries as part of OSL prod UMB message job

Print the images registries in the same format that is expected as part of the promotion email to make it easier.

@mareknovotny just FYI


The description is out-dated. Current Commands are not matched correctly

[Enter feedback here]

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: eae83e71-1253-2894-8a38-669d26e100ec
Version Independent ID: a2c48126-6401-3ea4-42fe-1c98a1e2cc55
Content: Create templates for email - Power Platform
Content Source: power-platform/admin/create-templates-email.md
Service: power-platform
Sub-service: admin
GitHub Login: @sericks007
Microsoft Alias: sericks

Thanks for your comment, @DietmarD. This issue has been assigned to the doc author for review.


Update emotefilter.json

Intrusive emotes using common names, words or phrases suck. I added a few to the blacklist.

May I add those to my PR? Then Jiiks only has to merge one.

Yamato Shinobu Jeanne Ayyy AAAAA AYYY THICC SUCC CUCC Hiro Nono Oooh RUDE should also be added to the blacklist.

Doggo is an emote, and SHOULD NOT be an emote. To be honest, any single words shouldn't be an emote. Should at least have "GASM" at the end, or some random letters before it or something.

Pfft Pffft Imperfect

Conflict merged: https://github.com/Jiiks/BetterDiscordApp/commit/031c64271ac4bcabdc25cd5080753c3814a037ee


Changed name to aheinze/lime in compoer.json

I think you still have your own name in the file ;)

Yeah, I do!
I just close this pr, it was just to test what was wrong and why Lime didn't work as a composer package


Add exclude_under option to exclude small files by default

Pending tests, but this is a way that #25 could be solved: optional exclude_under option that is defaulted to 6. This is another breaking change that means all files with line counts under 6 are excluded from analysis by default.
Note: the small files are still analyzed but later excluded from the output. This is because this option takes into account include_comments which in turn depends on the analysis.
A simpler approach that would avoid analyzing these small files is to ignore the include_comments option and just exclude files that are under n lines, comments always included. However, my current stance is that accounting for include_comments is easier to understand for the end user and produces a more predictable result

Do you agree with this approach @marcusedwardhaslam @theofidry @bencollins54?


feat: Support fractional TTLs via floats/doubles

Maintains a BC interface (assuming we say extending the class is not a valid use case), enabling ms-precision of TTLs.
FYI 1, float nearly always means "double" in PHP land - the type depends on the CPU.
FYI 2, due to needing to support PHP 7.4, we can't use union types, only type-doc.

Moved to #187.


Gone is the sun in the examples

The new version does not show the sun

This is due to a bug in Cesium 1.19 and 1.20: https://github.com/AnalyticalGraphicsInc/cesium/issues/3800
The fix will be available in Cesium 1.21. Or you can try getting the latest version of Cesium from Git.

I just tested ol3-cesium with Cesium 1.21 and the Sun is rendered correctly.

Thanks for the info. When the planned release ol3-cesium with Cesium 1.21?

There is a high chance Cesium 1.21 works out of the box with the latest release of OL3-Cesium.

@gberaudo indeed, I am using it with no issues for my use cases.


Missing StreamExt::unzip

See core::iterator::unzip

Are you looking for this?
https://github.com/rust-lang/futures-rs/blob/7340d3d5d6fe8082a73069582b048ebaef6626b1/futures-util/src/stream/stream/zip.rs#L56-L62
Or are you talking about a single stream which returns a tuple and you want unzip that into two streams?

Or are you talking about a single stream which returns a tuple and you want unzip that into two streams?

Yes. This is what I wanted.


[MRG] Fix GUI dipole data overlay

RMSE between simulations and data was not displaying on plots when simulations had multiple trials #858. The GUI was also behaving oddly where the plot was not being displayed #859.  Both issues are due to an error raised when attempting to average the dipoles when an average had already been calculated.
Work done:

Fixed logic that was attempting to average dipoles. Created a function that will check and return if an average already exists, if not, it will calculate the average.
Created a test to make sure a plot with the expected number of lines, legend items, and RMSE text is generated.

closes #859 #858

@dylansdaniels
Can you merge this?


Document inconsistencies???

Hi, I'm trying to make an API using sqlx::postgres however bugs after bugs later I found some documentation which make me confused:
pub async fn get_url_by_origin(self) -> Result<PgRow, sqlx::Error> {
    let query = Box::new("SELECT * FROM shortenurl WHERE origin_url = $1");
    let result = sqlx::query(&query)
      .bind(self.payload.origin_url)
      .fetch_one(&self.pool)
      .await;

    return result;
  }

On that code I'm returning Result<PgRow> type and after .unwrap I wanna get the length of the row which is stated on this docs (https://docs.rs/sqlx/latest/sqlx/trait.Row.html#method.len) and this docs:

And apply it to the following code:
  pub async fn verify_and_hash_url(self) -> Result<Box<URLpayload>, postgres::Error> {
    let pool = ...
    let existing_url_data = pool.get_url_by_origin().await.unwrap();

    if existing_url_data.len() > 0 {  --> issue here
      // ...
    }
    return Ok(Box::new(self));
  }

However, the compiler gave me the following error:
no method named _len_ found for struct _sqlx::postgres::PgRow_ in the current scope
Then I thought ok, lets try the .execute() rather than .fetch_one() then I got confused again as the docs.rs said that .execute() wont return anything:

Nonetheless, on Github readme it said it would return sth:

Thus I got confused with all of those, and do we have any proper one page documentation for fetch_one, execute and the likes? I couldn't find on the internet.
Thanks

https://docs.rs/sqlx/latest/sqlx/query/struct.Query.html#method.fetch_one
I wouldn't call any of them inconsistencies, most db libs I have worked with are doing it the same as sqlx.
fetch_one - returns one row, erros if it can not return any
fetch_all - returns all found rows, so it can return empty rows, not an error
fetch_optional - that is for the people how are confused how fetch_one works
Everything is in the docs I send.

@dragonnn Thanks a lot ! How about the issue with .len() method doesn't exist on PgRow? Meanwhile it exists on sqlx::portgres docs: https://docs.rs/sqlx/latest/sqlx/trait.Row.html#method.len

Do you have imported that trait?
Trait functions are not visible if you don't have that trait imported.

The .len() method is defined on the Row trait, so you need to import it to call it.
If you had read this compiler error further:
 no method named `len` found for struct `sqlx::postgres::PgRow` in the current scope

it should have recommended importing the Row trait to get access to the method.
Please pay closer attention to Rust's compiler errors, they're designed to be vastly more helpful than those from other languages.
If you haven't already, I would also recommend reading through the Rust Programming Language book, which covers basic Rust concepts like this.

Thanks bro @abonander


Consider using uv?

It seems for this particular use case uv might make sense?
Have you considered this?

Hi! Yes, i think about it, but i can't give you a certain term.

Amazing!
Shout if I can help out in any way


Support bulk (batch) API uploading for chosen automated systems

[ ] Use dedicated token generation (same to that we have in SAVE) for particular automated systems. (@sanyavertolet).
[x] #2313
[x] Add UI to upload a batch with COSV files
[x] #2504
[x] #2521
[ ] #2506
[x] #2508
[x] #2525
[x] #2538
[x] #2543

Use dedicated token generation (same to that we have in SAVE) for particular automated systems. (@sanyavertolet).

@akuleshov7, what does it mean? is it about generating ID for vulnerability in format SOTV-2023-16?

Use dedicated token generation (same to that we have in SAVE) for particular automated systems. (@sanyavertolet).

@akuleshov7, what does it mean? is it about generating ID for vulnerability in format SOTV-2023-16?

discussed offline: it's about basic auth using token generated by the saveourtool platfrom


Enable better-jumper-mode when loaded

As per request when submitting better-jumper to MELPA, I've added a minor mode. This pull request enables better-jumper-mode when the package is loaded.

Looks good to me! Let me know when it gets into MELPA and I will merge this.


List all non-idempotent checks

@graphicore could you please list all fontbakery checks that are currently non-dempotent?
Later I may want to have individual issues to provide further info about each of them, so that we could discuss them in more details. But for now, a comprehensive list of them all would be a great starting point.

See also: https://github.com/googlefonts/fontbakery/issues/2093#issuecomment-430314766


integer shouldn't match -123424

data is like ""created": -34245",
and json schema is
"created": {       "type": "integer",       "pattern": "^15[0-9]{8}$"     },
that's should be an exception! but validate pass!

-34245 is a valid integer - a pass result is correct. This is not a bug.
The pattern keyword only applies to strings; ignoring it when validating integer values is the intended behavior, and is in accordance with the spec.

If you are trying to limit your integer values to within a certain range, the correct way to do that is with the minimum and maximum keywords. I'm your case, that would mean a minimum of<PHONE_NUMBER> and a maximum of<PHONE_NUMBER>.

Thanks，you're right！