Hash value cannot be processed because it is empty

Core Library
MSAL.js v2 (@azure/msal-browser)
Core Library Version
2.22.0
Wrapper Library
MSAL React (@azure/msal-react)
Wrapper Library Version
1.3.0
Description
The user cannot log in after entering email & password. The login popup gets closed and nothing happens.
After getting the error, that does not happen all times, it's possible to login after clicking the login button again (sometimes, it is needed to click it several times). This intermittence makes it difficult to debug.
I basically followed this tutorial: https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-react
The Azure AD app in portal.azure.com (Microsoft_AAD_RegisteredApps) was configured with Single Page Application redirect URIs having the URI set matching the one configured in the msal configuration (auth.redirectUri property)

Error Message
error BrowserAuthError: hash_empty_error: Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash. Given Url: https://myUrl.com/
Msal Logs
No response
MSAL Configuration
const msalConfig = {
  auth: {
    clientId: '930b1k1b-...',
    authority: 'https://login.microsoftonline.com/l2cba3e8-...',
    redirectUri: 'https://myUrl.com/'
  },
  cache: {
    cacheLocation: 'sessionStorage',
    storeAuthStateInCookie: false,
  },
}

Relevant Code Snippets
ClientApp instantiation:
---------------------------------------------------------------------
import { PublicClientApplication } from '@azure/msal-browser';
import { MsalProvider } from '@azure/msal-react';
import { msalConfig } from './config';

const msaInstance = new PublicClientApplication(msalConfig);

ReactDOM.render(
  <React.StrictMode>
    <MsalProvider instance={msaInstance}>
      <App />
    </MsalProvider>
  </React.StrictMode>,
  document.getElementById('root')
);
---------------------------------------------------------------------
Signing in:

const { instance } = useMsal();
const navigate = useNavigate();

let signin = () => {
    return instance
      .loginPopup({
       scopes: ['User.Read'],
      })
      .then((response) => {
          setUserData(response);
          navigate('welcomPagePath');
      })
      .catch((e) => {
        console.log('error', e);
      });
};

Reproduction Steps

Enter Microsoft email
Enter password

Expected Behavior
The user can log in
Identity Provider
Azure AD / MSA
Browsers Affected (Select all that apply)
Chrome
Regression
No response
Source
External (Customer)

Hi, which version of chrome are you using, and did you add any code to the sample? Could you also share a network trace and verbose logs to the email on my github profile?

Could you upgrade to the latest version of MSAL?

Hi, which version of chrome are you using
I am currently using Version 98.0.4758.109 (Official Build) (arm64)

... and did you add any code to the sample?
I did not add any particular code to the sample beside the one shared in this ticket

Could you also share a network trace and verbose logs to the email on my github profile?
I will check if I can gather any log and send them. The popup closes and makes it difficult to get data from it

Could you upgrade to the latest version of MSAL?
I will try with the new version released. The ticket was created using 1.3.0

Not sure if it's related, but it also throws this error sometimes:

This error message is shown after entering the Microsoft account. It does not get to ask you for the password.
No particular error is shown in the console.
I can get to see the following requests:

But since I get redirected to the error popup, I do not get to inspect them further.
Switching to an incognito tab solves the problem.

I am facing this exact issue with Chrome on Android. Using Edge, Chrome or Firefox on Windows 11 works perfectly fine. Below is a video of the issue. While trying to record the first time for this comment, it worked for the first time on my phone, so I gave it another try and the error happened again, which is even more strange.
Either way, it never happens once on all 3 browsers I tried on Windows, but it happens (almost, apparently) everytime on Android. Haven't tested on iOS as I unfortunately can't. It seems really important that this issue gets solved ASAP.
https://user-images.githubusercontent.com/27915933/157475012-61fc147d-fc51-4e30-a4f8-dda96f146d57.mp4

I am facing this exact issue with Chrome on Android. Using Edge, Chrome or Firefox on Windows 11 works perfectly fine. Below is a video of the issue. While trying to record the first time for this comment, it worked for the first time on my phone, so I gave it another try and the error happened again, which is even more strange.
Either way, it never happens once on all 3 browsers I tried on Windows, but it happens (almost, apparently) everytime on Android. Haven't tested on iOS as I unfortunately can't. It seems really important that this issue gets solved ASAP.
Packages<EMAIL_ADDRESS>&<EMAIL_ADDRESS>2022-03-09.16-31-17.mp4

Could you upgrade to the latest version of MSAL? If this persists, could you share the logs?

I am facing this exact issue with Chrome on Android. Using Edge, Chrome or Firefox on Windows 11 works perfectly fine. Below is a video of the issue. While trying to record the first time for this comment, it worked for the first time on my phone, so I gave it another try and the error happened again, which is even more strange.
Either way, it never happens once on all 3 browsers I tried on Windows, but it happens (almost, apparently) everytime on Android. Haven't tested on iOS as I unfortunately can't. It seems really important that this issue gets solved ASAP.
Packages<EMAIL_ADDRESS>&<EMAIL_ADDRESS>2022-03-09.16-31-17.mp4

Could you share the logs? Try an upgrade to the latest MSAL version and see if it persists.

I've just updated msal-browser to 2.22.1 and the issue persists unfolrtunately. The react-specific package was already on the latest version. Here's the stack trace log below, I'm not sure exactly what logs you're asking me so if something else, let me know so I can help you get those as well :)
Thanks!
localhost-1646850881167.log

Am facing this same issue on react webapp. Though I have used loginPopup() , still it opens a new tab and then closes by itself. Login is unsuccessful and get this below error message in console.
at BrowserAuthError.AuthError [as constructor] (vendors.59b4d47dd671469824f8.bundle.js:2:227816)
at new BrowserAuthError (vendors.59b4d47dd671469824f8.bundle.js:2:12149)
at Function.BrowserAuthError.createEmptyHashError (vendors.59b4d47dd671469824f8.bundle.js:2:12832)
at vendors.59b4d47dd671469824f8.bundle.js:2:168252```

Versions :

"@azure/msal-browser": "^2.22.1",
"@azure/msal-react": "^1.3.1",

not sure what the issue is !! I cannot fetch the network logs since am in a corporate network !

For me, when the login popup is opened in a popup window, then it succeeds. However, if the login popup is opened in a tab - then it fails with the same error as above (hash_empty_error). I find Chrome, running in fullscreen mode on a Mac (rather than just expanded to the display) will open the popup as a tab, rather than a new window - triggering the error.

For me, when the login popup is opened in a popup window, then it succeeds. However, if the login popup is opened in a tab - then it fails with the same error as above (hash_empty_error). I find Chrome, running in fullscreen mode on a Mac (rather than just expanded to the display) will open the popup as a tab, rather than a new window - triggering the error.

In my case, for few users irrespective of doing anything, it always opens in new tab.

I too facing this issue, my react app is used both in electron and browser. In electron it is working fine but in browser most of the time it returns this error, one difference I observed in both is there is no refresh for electron so it’s always you close and open and when open it always making authorization but in browser it’s different. I see in storage, cache hits is incrementing when I see this error. How to overcome this issue. did lot of browsing but no proper solution

only @mpminayo or somebody from msft can comment on this issue now.. Its been faced by many as far as github issues is concerned. Maybe they need to address the issue, or provide FAQ / Sample app to demo how library needs to be used.

We've resolved this in our application. For us, we had our redirect URL as the home page of our application. This caused an issue where our router (in Next.js) took over the routing in the popup, stripping the hash and redirecting it to the login page - before the window that launched the popup had time to extract it. Redirecting to a blank page allowed consistent logins.
These comments and documentation helped:
https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/4550#issuecomment-1058519256
https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/4456#issuecomment-1046328877
https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/login-user.md#redirecturi-considerations

We've resolved this in our application. For us, we had our redirect URL as the home page of our application. This caused an issue where our router (in Next.js) took over the routing in the popup, stripping the hash and redirecting it to the login page - before the window that launched the popup had time to extract it. Redirecting to a blank page allowed consistent logins.
These comments and documentation helped: #4550 (comment) #4456 (comment) https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/login-user.md#redirecturi-considerations

@atkinchris - Could you let me know what this blank.html should consist of ?? How will this redirect back to my application landing page ?? A sample would be of great help to me as am a newbie to React.

We use the popup login methods. The popup first directs the user to Microsoft, they sign in (or are already signed in) and are then redirected to our redirectUri that we've set in both the PublicClientApplication config and Azure portal. The URL they're redirected to has a hash appended (http://your.redirect.url#some-hash-from-microsoft). The parent window (the one where you created the popup from) reads the hash from the popup's URL, and then closes the popup.
We had our redirect URL set to our application's homepage (i.e. /). This meant that, when the popup loaded the page after being redirected back from Microsoft, our application was loaded - including the code that checks if the user is logged in. If the parent window didn't read the hash in time before the application in the popup checked the user's login status, then the hash would be cleared - and our parent application would error, as it couldn't read the hash from the popup. So we had a race between the parent window reading the URL and our application loading - not good!
The solution, as given in docs and issue comments, was to redirect the popup to a blank page.

Could you let me know what this blank.html should consist of

Not very much, ideally. 😄 It's literally just a page to redirect the popup to; it just needs to be on the same domain as your application, so the parent window can read from it. Here's a (slightly redacted) version of ours:
<html>

<head>
  <title>Blank Page | [Our Application Name]</title>
</head>

<body>
  <!-- This is an intentionally blank page -->
</body>

</html>

This page should never be seen by your users. It will flash up quickly just before the popup closes, so having it as minimal as possible will help with performance. It doesn't need to be styled - if anything, having content will confuse users who'll see a momentary flash of content in the popup before its closed for them.

How will this redirect back to my application landing page

If you're using the popup login, then it never redirects back to your application landing page. You have MSAL in your main application window that a user sees (we'll call this the "parent"). The parent creates the popup, the popup goes to Microsoft, Microsoft redirects back to your blank page, and the parent reads from the popup URL before closing the popup. Your parent window never redirects to Microsoft - but when you're logged in the AuthenticatedTemplate will show rather than UnauthenticatedTemplate.

We use the popup login methods. The popup first directs the user to Microsoft, they sign in (or are already signed in) and are then redirected to our redirectUri that we've set in both the PublicClientApplication config and Azure portal. The URL they're redirected to has a hash appended (http://your.redirect.url#some-hash-from-microsoft). The parent window (the one where you created the popup from) reads the hash from the popup's URL, and then closes the popup.
We had our redirect URL set to our application's homepage (i.e. /). This meant that, when the popup loaded the page after being redirected back from Microsoft, our application was loaded - including the code that checks if the user is logged in. If the parent window didn't read the hash in time before the application in the popup checked the user's login status, then the hash would be cleared - and our parent application would error, as it couldn't read the hash from the popup. So we had a race between the parent window reading the URL and our application loading - not good!

This part I did understand. Thanks for giving a detailed info.

The solution, as given in docs and issue comments, was to redirect the popup to a blank page.

React being a SPA, is it even possible to have a url to open up a static html page ? My application entire routes + App components are bound by
const rootEl = document.getElementById('root');
const msalInstance = new PublicClientApplication(MSAL_CONFIG_TEST);

const render = Component =>
  // eslint-disable-next-line react/no-render-return-value
  ReactDOM.render(
    <MsalProvider instance={msalInstance}>
      <ErrorBoundary>
        <Provider store={store}>
          <div>
            <Component />
          </div>
        </Provider>
      </ErrorBoundary>
    </MsalProvider>,
    rootEl
  );

render(AppComponent);

According to msft docs, this blank route should be outside of the <MsalProvider /> . Is my understanding correct ? If so, how do we now open a blank.html outside of the SPA 🤔

Could you let me know what this blank.html should consist of

Not very much, ideally. 😄 It's literally just a page to redirect the popup to; it just needs to be on the same domain as your application, so the parent window can read from it. Here's a (slightly redacted) version of ours:
<html>

<head>
  <title>Blank Page | [Our Application Name]</title>
</head>

<body>
  <!-- This is an intentionally blank page -->
</body>

</html>

This page should never be seen by your users. It will flash up quickly just before the popup closes, so having it as minimal as possible will help with performance. It doesn't need to be styled - if anything, having content will confuse users who'll see a momentary flash of content in the popup before its closed for them.

How will this redirect back to my application landing page

If you're using the popup login, then it never redirects back to your application landing page. You have MSAL in your main application window that a user sees (we'll call this the "parent"). The parent creates the popup, the popup goes to Microsoft, Microsoft redirects back to your blank page, and the parent reads from the popup URL before closing the popup. Your parent window never redirects to Microsoft - but when you're logged in the AuthenticatedTemplate will show rather than UnauthenticatedTemplate.

Again appreciate you providing this explanation regarding how MSAL is enabling authentication !! 👍

There'll be a few ways to solve this, depending on your setup and how you want to implement it.
If you're serving your application from a static location, and routing all unmatched resources to index.html, add an empty (or nearly empty, as above) blank.html alongside your index.html.
If you're serving from nginx or similar, again add a blank.html alongside your index.html - and make sure it can be routed to.
If you absolutely cannot ship a blank.html file alongside your index.html, you'll need to add a "blank" route to your router, likely within your UnauthenticatedTemplate or otherwise outside of AuthenticatedTemplate.
| - /
| --- /some-route-in-your-app
| ------ AuthenticatedTemplate
| ------ UnauthenticatedTemplate
| --- /blank

Am using JHipster to generate my React application. Given the structure of JHipster React App, I have tried to add below snippets -
<UnauthenticatedTemplate>
  <Route exact path="/blank">
    <Redirect push to="/blank.html" />
  </Route>
</UnauthenticatedTemplate>

This is added inside of <MsalProvider /> only, since <Route />  cannot be added outside of Router and Router in-turn is under <MsalProvider /> only.
I have also tried adding a BlankPage component like below -
import React from 'react';
import { Redirect } from 'react-router-dom';

const BlankPage = () => {
  return <Redirect push to={'/blank.html'} />;
};

export default BlankPage;

and blank.html is same as you have provided and added alongside index.html. Webpack is used to generate production ready resources.
Still the issue persists and throws hash error ! 😞

If you navigate to http://your-application.url/blank.html does your blank.html appear? Does your blank.html appear in the build folder that webpack writes to, alongside your index.html?

Great - then you can set that as your redirect URL in your PublicClientApplication config and Azure portal. 🙂

Great - then you can set that as your redirect URL in your PublicClientApplication config and Azure portal. 🙂

Seems like its working now.. Still under testing though.. Thanks for your help and valuable feedback !!

@atkinchris 's answer above should resolve this issue - thank you for your input. We will update our docs to be more clear that you must either allow MSAL to complete processing before the router, or follow the docs listed and redirect to a blank page.
Thank you for your help @atkinchris!

Yes.. The documentation is provided by msft which states we need to provide a blank.html redirect URI. But the samples do not incorporate this. Probably a full scale sample with this recommendation would help or at least a comment on the config values in the sample.
We are getting consistent logins now via blank.html redirect uri !

A full scale sample would help a lot
Thanks for your feedback

Am getting into a new issue now. The LOGIN_SUCCESS callback event is getting triggered many times post login success.
Am not able to figure our why this behaviour.
Code snippets -
const handleLogin = async () => {
    await msalInstance
      .loginPopup(loginRequest)
      .catch(function (error) {
        console.log(error);
      });
  };

msalInstance.addEventCallback((event: EventMessage) => {
    if (event.eventType === EventType.LOGIN_SUCCESS && event.payload) {
      const payload = event.payload as AuthenticationResult;
      const account = payload.account;
      instance.setActiveAccount(account);

      console.log("Inside LOGIN_SUCCESS event handler");
      handleResponse(payload); // custom-business logic post login
    }
  });

console.log("Inside LOGIN_SUCCESS event handler"); print 4 times in my case.
code snippets are from the samples provided by Azure only. Nothing new here.
I was able to work around this issue by calling handleResponse(payload) from within then() block of loginPopup(). But this is not the solution though for multiple event callbacks.

I have seen these a few times in my own testing, and I have theory on why it is happening, will follow up with a fix.

We are getting this "hash_empty_error" error as well. Been trying to resolve it for days now.
Our React apps are deployed using a very common method (Azure Static Web Apps with GitHub Actions). How would we get this required blank.html page included in this case? Github Actions is building our app so we can't just add a blank.html page into the public folder.
Additionally, how would this play with the staticwebapp.config.json (Azure SPA Static Web App Docs) that is required for SPA's?

@bryce-by A common cause of this is the page used as the redirect uri redirects and/or removes the hash before MSAL has a chance to parse it. When your redirect URI is loaded in a popup with a hash response (i.e. myapplication.com/redirect#code=), does your application redirect and/or clear the hash? If so, make it so that it doesn't do that, and for popup/silent requests, you can set your redirect URI to a blank HTML (that does literally nothing). This will help performance and help mitigate this issue.
Note, for redirects (i.e. loginRedirect/acquireTokenRedirect), you cannot use a blank html page for the redirect uri.

Github Actions is building our app so we can't just add a blank.html page into the public folder.

Why not?

I have seen these a few times in my own testing, and I have theory on why it is happening, will follow up with a fix.

Does this relate to multiple LOGIN_SUCCESS events getting fired, post login or is this related to Hash error in general ??

For those who have a fixed for this, please can you create a sample on Codesanbox @tejaswibm-roposo?

this worked for me. shame on you microsoft for making users have to write hacks like these
const runApp = () => {
    ReactDOM.render(
        <App />,
        document.querySelector('body')
    );
};

if (location && location.href.indexOf('<reference to your redirect url>') > -1) {
    setTimeout(runApp, 5000);
}
else {
    runApp();
}

"Has value cannot be processed because it is empty"
I see this error due to a recent update in the msal-common package which is being referenced by msal-browser.
Recent version msal-common is [6.3.0]. msal-browser version should sync with this.
Below is a combination which works :
npm uninstall @azure/msal-common
npm uninstall @azure/msal-browser
npm uninstall @azure/msal-react
npm i<EMAIL_ADDRESS>npm i<EMAIL_ADDRESS>npm i<EMAIL_ADDRESS>

Please see the explanation here which will be added to our docs as a part of the linked PR


instaloader checks everything as login user (--stories)  if first you have download them as not login user

why instaloader must check whatever exists? This counts against "download rate" of instagram.
How this can be bypassed? and continue to download from the point that it stopt.
Note this behavior is presented when i download without username/ login and then i try to download as login user. It checks everything again.
[500] ....../:tagged/2018-12-05_14-26-14_UTC.jpg exists
[501] ....../:/:tagged/2018-12-05_13-28-14_UTC.jpg exists
[502] ....../:/:tagged/2018-12-05_12-49-20_UTC.jpg exists
[503] ....../:/:tagged/2018-12-04_21-50-27_UTC.jpg exists
[504] ....../:/:tagged/2018-10-30_14-57-30_UTC.jpg exists
[505] ....../:/:tagged/2018-12-04_18-40-45_UTC.jpg exists
[506] ....../:/:tagged/2018-12-04_15-08-10_UTC.jpg exists
[507] ....../:/:tagged/2018-12-04_12-50-59_UTC.jpg exists
[508] ....../:/:tagged/2018-12-04_12-45-16_UTC.jpg exists
[509] ....../:/:tagged/2018-12-04_12-36-00_UTC.jpg exists
[510] ....../:/:tagged/2018-12-03_21-00-29_UTC.jpg exists
[511] ....../:/:tagged/2018-12-03_20-02-24_UTC.jpg exists

Incomplete bug report. It's more a question.
At least you have to mention your command line. Did you set --fast-update?

no, i am in linux, debian bookworm sid. I will try and report back.

I find out that downloading as login user and then as not login user, checks also everything.

I think that we can download stories, without the login required


Implement color schemes as utility classes

Create a set of color schemes as CSS utility classes for eccentric touch. The color details are given in the core-properties page of Figma. Do take a reference while working on this feature.
Feature progress

[x] Neutral colors
[ ] Base colors
[ ] State colors

Should I Work On Yellow Color scheme

@yashsehgal

@rishabhrathore055 Do try to stick with the gradient sequence. In this screenshot, the yellow color shades are looking very randomly generated.

@yashsehgal  Sure I'll Update You

@yashsehgal  Sure I'll Update very soon


perf: make route pages lazy loaded

Description
make all route pages - lazy loaded
closes #187
screenshots

currently i found problem with singleMap page
it keeps crashing
trying to figure out why
On Thu, Nov 9, 2023 at 9:28 AM NoamGaash @.***> wrote:

@.**** approved this pull request.
In src/routes/index.tsx
https://github.com/hasadna/open-bus-map-search/pull/188#discussion_r1387586361
:

@@ -86,9 +88,20 @@ const RoutesList = () => {
const routes = PAGES.filter((r) => r.element)
return (

 {routes.map(({ path, element }) => (

   <Route key={path} path={path} element={element} />

 ))}

 {routes.map(({ path, element }) => {

   const Element = lazy(() => import(element as string))

can we avoid the as string part? Maybe if you'll define Page type it will
help
—
Reply to this email directly, view it on GitHub
https://github.com/hasadna/open-bus-map-search/pull/188#pullrequestreview-1721864903,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAKGMHWMDSQNLEPDXRDTEYLYDSA3DAVCNFSM6AAAAAA7EBXCQCVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMYTOMRRHA3DIOJQGM
.
You are receiving this because you authored the thread.Message ID:
@.***>

--
http://gs500coder.blogspot.com

I guess you must send constant strings to the dynamic import function


How: Placing the contents of a file into the parent folder?

Hi,
Great little tool...... Many thanks for making it available.
I have a manifest that syncs all my repos as I want:

However I want to place the contents of a repo (Resharper) into the top level folder .....\src so in the manifest I have:
  - src: .
    url: xxx@vs-ssh.visualstudio.com:v3/xxxx/yyyy%20yyyy/Resharper
    branch: master

however this then generate the error:

How do I put the contents of Resharper into the top level folder?

Hello,

Great little tool...... Many thanks for making it available.

Thanks!
I think the feature you're looking for is the copy fied inside the manifest : https://tankerhq.github.io/tsrc/ref/formats/#repos

@dmerejkowsky Yeah putting it all under Resharper is not quite what I want. Ultimately what I am trying to do is put the R# settings for all projects at the top of all the folders so that https://github.com/Artesian/reshsettingsdiscover can find it.
Means we can make things consistent for all devs. Any chance of a feature request to satisfy copying a file from one location to another?

Any chance of a feature request to satisfy copying a file from one location to another?
Sorry I misread. Yes, you can do that:

repos:
  - src: .
    url: xxx@vs-ssh.visualstudio.com:v3/xxxx/yyyy%20yyyy/Resharper
    copy:
      - src: AutoLoad.DotSettings
        dest: AutoLoad.DotSettings

Ok it seems to me that copy is actually a rename? As it only seems to copy in the same folder?
As you can see (Using README.md just because it was easier) I want to copy it into the parent folder but that does not appear to be possible? (As it only works on files not folders?)
- src: Resharper
    url: RollercoasterDigital@vs-ssh.visualstudio.com:v3/xxxx/yyyy%20yyyy/Resharper
    branch: master
    copy:
      - src: README.md
        dest: ../README.md

so as expected the file ends up from the repo where it should:

but I ultimately want it one level up viz:

The problem is that you don't need the ../ in the dest field. The path in src is relative to the repo, but the path in dest is relative to the workpace.
So you should use:
- src: Resharper
    url: RollercoasterDigital@vs-ssh.visualstudio.com:v3/xxxx/yyyy%20yyyy/Resharper
    branch: master
    copy:
      - src: README.md
        dest: README.md

instead

Hi,
So I tried the above config but all I ended up with was README.md in the Resharper folder and not in the parent (workspace folder). The output from the sync command was as follows:
=> Cloning missing repos
* (1/1) Resharper
Cloning into 'Resharper'...
remote: Azure Repos
remote: Found 6 objects to send. (2 ms)
Receiving objects: 100% (6/6), done.
=> Configuring remotes

So is it possible the copy is not happening (or maybe not logged)?

So is it possible the copy is not happening (or maybe not logged)?

This is really weird - did you push the changes in the manifest repo ?

Yeah the manifest from the repo is "correct" this is what I have local:

Bug perhaps?

It looks like a bug indeed - but I have no clue about what's going wrong :/
You can try inserting import pdb;pdb.set_trace() somewhere in tsrc source code and use the debugger to figure it out.
The other option is to make it possible for us to reproduce the bug

I'll see what I can do about adding the debugging and get back to you.
However you should be able to reproduce this on your end with a simple change to one of your existing internal manifests. Or are you saying it does not happen for you?
Not sure what your git end point is, however it should not matter, what I have been testing with is Azure Git.

Or are you saying it does not happen for you?

Yes - all my attempts to reproduce the bug have failed :/ I don't think that Azure Git is the problem

You can try with the dummy manifest I just created:
tsrc init git@github.com:dmerejkowsky/dummy-manifest.git

Seems like I don't have enough permissions?

Sorry - I assumed you had a GitHub account with an ssh key
You can retry with:
tsrc init  https://github.com/dmerejkowsky/dummy-manifest.git

So your example works.... so there is something on my end - I will get the debugger going if I can see what is going on. Because for some reason tsrc stubbornly refused to do a copy because it thinks everything is up to date.

I will come back to you once I figure this out. Thanks for your help and patience so far ;-)

Hi @natiki did you figure it out? If so, please not that the project has moved. The discussion can continue on GitLab : https://gitlab.com/tsrc2/tsrc/-/issues/212

Hi @natiki did you figure it out? If so, please not that the project has moved. The discussion can continue on GitLab : https://gitlab.com/tsrc2/tsrc/-/issues/212


Tests

@techytushar @rtgdk @goneall
I have added tests for the functionalities which I implemented.
Please have a look.

Code LGTM. @techytushar any reviews regarding no of tests/ any functionality missed.


Smart Provider Resolver support

tested on 12.2.1 and 12.4.0, should work on 12.x

deliberately does not use the 12.3.0-specific Chef.class stuff
deliberately does not use the 12.4.0-specific node_map improvements

test on centos6 and centos7, added a TK suite for centos7

@someara here you go.

Merged, and released in 0.2.15


Query handler resubscription bug

Basic information

Axon Framework version: 4.5.3
Axon Server version: 4.5.7

Steps to reproduce
If something triggers a QueryGateway query while Axon is down, then query handlers are not resubscribed when Axon is available again.
Example:
Application starts up, query handlers are registered:
2021-09-27 10:51:50.490  INFO [,,] 3420 --- [           main] i.a.a.c.query.impl.QueryChannelImpl      : QueryChannel for context 'default' connected, 0 registrations resubscribed
2021-09-27 10:51:50.500  INFO [,,] 3420 --- [           main] i.a.a.c.query.impl.QueryChannelImpl      : Registered handler for query 'se.lantmateriet.applikationslistan.coreapi.anvandare.AnvandareQueries$FindAll : java.lang.Iterable<se.lantmateriet.applikationslistan.app.query.anvandare.AnvandareView>' in context 'default'

I trigger a query using queryGateway and everything is fine.
I shutdown Axon server and make sure that no traffic is sent to my controllers that use queryGateway. Once Axon Server is down, I start it again and both command and query handlers are resubscribed.
2021-09-27 10:52:38.720  INFO [,,] 3420 --- [ML-CND7143VP3-1] i.a.a.c.impl.AxonServerManagedChannel    : Successfully connected to localhost:8124
2021-09-27 10:52:38.928  INFO [,,] 3420 --- [ML-CND7143VP3-1] i.a.a.connector.impl.ControlChannelImpl  : Connected instruction stream for context 'default'. Sending client identification
2021-09-27 10:52:38.935  INFO [,,] 3420 --- [ML-CND7143VP3-1] i.a.a.c.query.impl.QueryChannelImpl      : QueryChannel for context 'default' connected, 24 registrations resubscribed
2021-09-27 10:52:38.938  INFO [,,] 3420 --- [ML-CND7143VP3-0] i.a.a.c.command.impl.CommandChannelImpl  : CommandChannel for context 'default' connected, 23 command handlers registered

I trigger a query using queryGateway, and everything is fine.
I do this 3 more times, just to be sure it works.
Then I shutdown Axon Server, and once its down I trigger a query using queryGateway.
"java.util.concurrent.ExecutionException: org.axonframework.axonserver.connector.query.AxonServerQueryDispatchException: Task io.grpc.internal.SerializingExecutor@75fd78f0 rejected from java.util.concurrent.ThreadPoolExecutor@7db7d2d1[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 57]"

Expected behaviour since Axon Server is down.
Now I start Axon Server again:
2021-09-27 10:54:08.072  INFO [,,] 3420 --- [ML-CND7143VP3-0] i.a.a.c.impl.AxonServerManagedChannel    : Successfully connected to localhost:8124
2021-09-27 10:54:08.324  INFO [,,] 3420 --- [ML-CND7143VP3-1] i.a.a.connector.impl.ControlChannelImpl  : Connected instruction stream for context 'default'. Sending client identification
2021-09-27 10:54:08.325  INFO [,,] 3420 --- [ML-CND7143VP3-0] i.a.a.c.command.impl.CommandChannelImpl  : CommandChannel for context 'default' connected, 23 command handlers registered

but this time only command handlers are resubscribed and any attempt to query using queryGateway fails:
java.util.concurrent.ExecutionException: org.axonframework.queryhandling.NoHandlerForQueryException: No handler for query: se.lantmateriet.applikationslistan.coreapi.applikation.ApplikationQueries$FindByPubliktId

I have to restart my pod to get queries working again.

My apologies for the late reply here, @magnusheino. We somehow missed this issue you constructed...
Now, instead of diving into your exact versioning setup, I'd like to ask whether you're able to upgrade all the mentioned dependencies?
Axon Framework has recently seen another patch release (4.5.5), and Axon Server Standard Edition (assuming you're not using Enterprise, right?) is currently on 4.5.8.
I'd like to rule out the predicament hasn't been resolved already through other adjustments by adjusting the versions.

Upgraded all dependencies and after that I cannot reproduce this bug again (And I no longer see the ExecutionException).  Great :-)

Alright, happy to hear the problem dissipated! :-)

Thanks for sharing this with us, @ZakMcKrack3n.
If you could, as you suggest, validate this behavior with earlier versions, that would be great.
More specifically, if you can try out whether the issue persists with Axon Framework 4.5.15, that would be great.
This version of AF uses the latest 4.5 release of the axon-server-connector-java.

Reopened this issue in expectance of a reply from @ZakMcKrack3n.

@smcvb If it helps at least the command side of the giftcard-demo fails the same way when a command was issued in the absence of axon server, the query side throws different errors but is unusable as well, so you should be able to recreate this pretty easily.
I could only test with 4.5.15 as the current version with 4.6.1 from the repository did not run in java 11 or 17 for me due to throwing some serializer errors.

Thanks for that, @ZakMcKrack3n.
In all honesty, if this is consistent for all users out there, I should have heard this sooner, I hope.
So, as a matter of investigation, can you move back versions until the issue dies out?
If it does not, within the entire flow of Axon Framework 4.5 release, I think chances are high the culprit is somewhere else.
Or, I'd hope so, too ;-)

Thanks for that, @ZakMcKrack3n. In all honesty, if this is consistent for all users out there, I should have heard this sooner, I hope. So, as a matter of investigation, can you move back versions until the issue dies out?

Will try to start my way up with 4.5 and the giftcard demo as I can trigger the failure much faster by button press.

It is completely consistent in my local tests as well as in a completely different set up using docker images running axon and separate docker with a service, the end result is exactly the same. (both eclipse-term based images using JDK 17)

If it does not, within the entire flow of Axon Framework 4.5 release, I think chances are high the culprit is somewhere else. Or, I'd hope so, too ;-)

If I understand correctly , you tested this with the giftcard demo and it always works for you?
On what OS and what java version (OpenJDK network stack issue?) ?
How did you terminate the axon server ? (I did NOT disconnect the network but stopped axon and restarted it after command/queries where issued and failed)
Also in a live environment there still could be multiple instances of the service MASKING that the command/query handler of the failed one are no longer registered, so command and query handling would continue there without error.
I too hope that this is not a fundamental problem , but I first need to have at least one working version, maybe I will try to trigger this under windows and see if using a fresh axon server and the giftcard-demo behaves exactly the same.

I personally run on Ubuntu 20.04. Have ran AxonFramework apps with JDK 8 and 11. Granted, I tend to use Axon Server Enterprise our AxonIQ Cloud mainly.
Nonetheless, me and a colleague managed to get a similar issue as you've described, @ZakMcKrack3n. Just not consistently.
Regardless, we have pinpointed an issue in the connector. So, we'll start working on a fix. Thanks for bearing with us, @ZakMcKrack3n.

@smcvb So I tested the following versions of Axon Framework using a rest endpoint that issued a valid command and query (wrapped in try catch so both always run) when the server was unavailable.

4.5.5 (first compatible version for my service)
4.5.6
4.5.7
4.5.8
4.5.9
4.5.10
4.5.11
4.5.12
4.5.13
4.5.15
4.6.1

All tests failed the same way and have the log output that Query/CommandChannel is already connected and commands and queries are not re registered and would fail if called again.
The inconsistent behavior you described I encountered with a brief test with the giftcard demo using 4.5.15 (higher would still throw runtime errors at start) under windows 10 (Adopt OpenJDK 11).
The first reconnection somehow worked and commands and queries did run again, so for me the first test somehow worked , but any subsequent test would always fail.
This was however with a completely CLEAN axon server and giftcard demo db.

Your input here is extremely awesome, @ZakMcKrack3n.
This safes us a lot of time to fix the issue.
I'll start drafting up a fix for this right away for within the connector.
As soon as it's there, we'll post the PR here too, for your reference.

I've been digging a little too with this info, finding out that AF 4.5.5 uses Axon Server Connector 4.5.3.
Furthermore, version 4.5.6 that according to your tests does show the faulty behavior, uses Axon Server Connector 4.5.4.

My tests with Axon Framework 4.5.5 did not succeed , so wouldn't the error be in changes introduced PRIOR / WITH  Axon Server Connector 4.5.3 ? You lost me there, sorry.

I assume it's okay if we put this in 4.6.2 of Axon Framework

@smcvb Our services are updated to 4.6.1 already , so this was my starting point, so I think 4.6.2 should work just fine

I wanted to notify you, @ZakMcKrack3n, and possible other followers of this thread, that we found the predicament in the axonserver-connector-java project.
If you're curious, you can find the PR fixing it here.
Note it'll be part of axonserver-connector-java release 4.6.3, which we'll add to AxonFramework 4.6.2 ASAP.

FYI to all reading this, the aforementioned PR has been merged into the axonserver-connector-java project after several tests.
We'll move to release a new version of the connector soonish. I hope today but at the latest, somewhere next week.

@smcvb I can confirm that for my case this fixes the reconnection issue.
Command and query handlers are registering themselves again and work after the connection is reestablished.
(By explicitly setting the axon server connector version in pom.xml with axon framework 4.6.1)

Thanks for the confirmation, @ZakMcKrack3n! :-)


Fix count=none when we have filters

The where clause should be discarded when count=none.
This was generating a database run time error for we did not have a test case for filters with count=none, so I modified one of the test cases I've included in the previous PR

Good find, thanks for the fix.


Error building with NextJS: Attempted import error: 'marked' does not contain a default export (imported as 'marked')

Error:
Failed to compile.

<EMAIL_ADDRESS>Attempted import error: 'marked' does not contain a default export (imported as 'marked').

Import trace for requested module:
<EMAIL_ADDRESS>./pages/index.js

Repro:

Setup new NextJs app: https://nextjs.org/learn/basics/create-nextjs-app/setup
Follow exact instructions in https://github.com/glideapps/glide-data-grid/blob/main/README.md
Remove types (compatible with JS)
Build

Expected:
Standard glide-data-grid instructions work with standard NextJS getting started.

Note, you can get around the marked error by downgrading to marked: "^0.7.0" however, you then run into the second error.


Schema and data migrations

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

I work in an R&D environment, and even with tons of forethought and discussion regarding what the shape of our data will be, there will always be a day--and always sooner rather than later--that we'll want to change the name of a field, change the type of a field, add a field, etc etc.
The only way I know how to both change the collections configuration in the CMS' config.yml and have already-existing, CMS-produced data reflect that change is to first edit the config.yml, then manually update the markdown/yaml data that has already been produced to match the new schema.
Describe the solution you'd like

I'm not entirely certain what a great solution looks like. One solution that I've been trying to think through is a schema and data migration tool. For example, a tool like flyway for relational databases allow you to define your schema and any modifications to it through ordered migration files. Similarly, a netlify-cms-migration tool could read in a series of migration files in order to produce a single config.yml. Along the way, it would run updates on already-existing data to ensure the data matches the new schema.
I don't believe, however, that a tool that accomplishes the above would be trivial to implement. Are there other ways that folks have accomplished this that works for them?
Describe alternatives you've considered

Continue to do everything by hand?

I haven't spoken to or heard from anyone who has gone through this kind of migration on content created by Netlify CMS. Knee jerk from 10,000 feet:

We should be able to do this from the browser using current backend API's, creating one or more commits for the migration.

Large sites (5k+ entries) will run into rate limits if they're using cloud services like GitHub.com. We could intelligently split migrations into operations that fit within rate limits, tracking the migration metadata together with the accumulated migration content on a branch in the remote.

You're right, this is not trivial. But it's also not crazy. Just takes a lot of consideration.


Make it portable

When building on 32bit, there are multiple compile time errors:
Cannot use 999... (untyped int constant) as int value in argument to random (overflows)
(int is an implementation-specific size, either 32 or 64 bits.)

Commit looks fine to me.
Thanks for the contribution!


Duplicate items returned when searching a collection / MongoDB Backend

Unfortunately we are seeing an issue where we get seemingly random duplicate entries from the /api/collections/get endpoint when sorting on a text field containing a date (2019-12-31) with the query param &sort[releaseDate]=-1
We have for example these three requests which basically do nothing else than a pagination and filtering by date:
        '/api/collections/get/Releases?token=abc123&filter[published]=true&limit=10&skip=0&populate=-1&filter[releaseDate][$lt]=2019-09-17&sort[releaseDate]=-1',
        '/api/collections/get/Releases?token=abc123&filter[published]=true&limit=10&skip=10&populate=-1&filter[releaseDate][$lt]=2019-09-17&sort[releaseDate]=-1',
        '/api/collections/get/Releases?token=abc123&filter[published]=true&limit=10&skip=20&populate=-1&filter[releaseDate][$lt]=2019-09-17&sort[releaseDate]=-1'

When fetching these three results we get 30 results total, but some are with duplicated data returned. Duplicated data is not found in mongodb directly.
Depending on the filter critera (gt/lt date) we get different results and different duplicates. Sometimes one duplicated object, sometimes two or ....
For testing I created this simple script to find duplicates:
$urls = [
        'https://localhost/api/collections/get/Releases?token=abc123&filter[published]=true&limit=10&skip=0&populate=-1&filter[releaseDate][$lt]=2019-09-17&sort[releaseDate]=-1',
        'https://localhost/api/collections/get/Releases?token= abc123&filter[published]=true&limit=10&skip=10&populate=-1&filter[releaseDate][$lt]=2019-09-17&sort[releaseDate]=-1',
        'https://localhost/api/collections/get/Releases?token= abc123&filter[published]=true&limit=10&skip=20&populate=-1&filter[releaseDate][$lt]=2019-09-17&sort[releaseDate]=-1'
];

$resultIds = [];

foreach ($urls as $url) {
        $res = json_decode(file_get_contents($url));
        foreach ($res->entries as $v) {
                if (isset($resultIds[$v->_id])) {
                        $resultIds['dupe-'.$v->_id] = true;
                } else {
                        $resultIds[$v->_id] = true;
                }
        }
}

print count($resultIds) . PHP_EOL;
print_r($resultIds);

Example output:
30
Array
(
    [5d7b877ab5cac638ad276c53] => 1
    [5d7b9ca9aac44e08ee4e26d4] => 1
    [5d7770103636622628000137] => 1
    [5d7b9eb323c80c070608d8c2] => 1
    [5d6d350e30653001f80002c2] => 1
    [5d7b87e6c4be6425fb3a67a2] => 1
    [5d6d022f306530019b0002bc] => 1
    [5d776f3b3636622591000194] => 1
    [5d6d09d630653001b700026c] => 1
    [5d6d0351306530016b00006f] => 1
    [5d6cf9443065300171000212] => 1
    [5d6cfa8c306530015a000086] => 1
    [5d76159436366273d6000110] => 1
    [5d6d08be30653001aa0000fd] => 1
    [5d725bae3636620249000357] => 1
    [5d6d0c6230653001b3000033] => 1
    [5d6d0ae630653001a3000016] => 1
    [5d6905da343532023e00024c] => 1
    [5d76179636366274f2000105] => 1
    [5d68ff5c34353202060002d8] => 1
    [dupe-5d76179636366274f2000105] => 1
    [5d6ce25930653000e3000185] => 1
    [5d6ce8f430653001300003d7] => 1
    [5d6cef62306530013c000328] => 1
    [5d6f6c9430653005b500025d] => 1
    [5d6f69e930653005aa0001bd] => 1
    [5d6ce6823065300109000018] => 1
    [5d6f63c1306530058d000344] => 1
    [5d6fcad630653006790003b5] => 1
    [5d6fd67530653006e70000ef] => 1
)

Example 2 with just a different date selected:
30
Array
(
    [5d7b877ab5cac638ad276c53] => 1
    [5d7b9eb323c80c070608d8c2] => 1
    [5d7770103636622628000137] => 1
    [5d776f3b3636622591000194] => 1
    [5d7b9ca9aac44e08ee4e26d4] => 1
    [5d6d022f306530019b0002bc] => 1
    [5d6d350e30653001f80002c2] => 1
    [5d7b87e6c4be6425fb3a67a2] => 1
    [5d6d09d630653001b700026c] => 1
    [5d6d0351306530016b00006f] => 1
    [5d6cfa8c306530015a000086] => 1
    [5d725bae3636620249000357] => 1
    [5d6cf9443065300171000212] => 1
    [5d6d0ae630653001a3000016] => 1
    [5d76159436366273d6000110] => 1
    [5d6d0c6230653001b3000033] => 1
    [dupe5d6d0351306530016b00006f] => 1
    [5d6905da343532023e00024c] => 1
    [5d76179636366274f2000105] => 1
    [5d68ff5c34353202060002d8] => 1
    [dupe5d76179636366274f2000105] => 1
    [5d6ce25930653000e3000185] => 1
    [5d6cef62306530013c000328] => 1
    [5d6ce8f430653001300003d7] => 1
    [5d6f6c9430653005b500025d] => 1
    [5d6ce6823065300109000018] => 1
    [5d6f69e930653005aa0001bd] => 1
    [5d6fcad630653006790003b5] => 1
    [5d6fd67530653006e70000ef] => 1
    [5d6f63f0306530059a0002f6] => 1
)

Is this project dead?

Hi! Sorry for the late answer. Can you confirm that you're using mongoldb and not mongolite?
There was an _id generation issue that should be fixed in the current dev version

Hi @aheinze , we are running on AWS and therefore use docdb. Currently it's docdb 3.6.0, which is essentially mongodb 3.6.
Cheers


Add profile card

Closes #115
https://user-images.githubusercontent.com/104543751/225706079-fc1d4fd8-d575-41fd-a533-ad1d577d27a6.mp4

Thanks for the contribution!


hail: convert session ID to a proper UUID column

This field isn't used, so we just wipe the existing data.

Moved generating the session_id to the database schema.


Rancher UI incomplete for Ingress Creation when using cert-manager for issuance

Rancher versions:
rancher/server or rancher/rancher: 2.0.6
This is perhaps a perception problem combined with a technical problem. When looking at the official chart library for Rancher, the cert-manager (lets encrypt) shows up.  When you look at deploy it the readme suggests that all that is needed is to simply add the kubernetes.io/tls-acme=true annotation to the ingress rule to have Lets Encrypt certificates generated automatically.
For the technical side of things the appropriate tls spec information is not added to the ingress rule.
For cert-manager to work properly, the following information has to be at minimum present on the ingress definition.  Without this being set on the ingress, cert-manager is unable to generate certificates for the ingress rule, even if the ingress rule has the appropriate annotations.
spec:
  tls:
  - hosts:
    - some-host.some-domain.com
    secretName: cert-manager-some-host

Note: this can be added by editing the YAML. However I had to figure this out after much trial and error, neither the Rancher UI nor the Chart for cert-manager seems to indicate this is necessary.
Expected Behavior
I would expect rancher either expose an option to indicate that the TLS spec information should be added based on the hostname that was configured on the ingress rule, or have rancher do it automatically.

I was struggling with this the whole day, as I saw that the Racher chart for cert-manager seems to automate all the manual steps that are explained everywhere else. This seems to be the missing part, thanks a lot!
Since I was trying to secure another chart application (Artifactory) I wanted to provide the configuration to the chart values, which worked out like that:
# Use Ingress instead of default nginx in the chart
nginx.enabled=false
ingress.enabled=true
ingress.hosts[0]=artifactory.hostname.tld
# For cert-manager
ingress.annotations.kubernetes\.io/tls-acme=true
ingress.tls[0].secretName=cert-manager-artifactory
ingress.tls[0].hosts[0]=artifactory.hostname.tld

Some more (off-topic) information:
As stated elsewhere, both the "Certificate" and the Ingress TLS configuration looks broken in Rancher UI, but it worked. Also, switching from letsencrypt "staging" to "production" did not lead to cert-manager fetching a new certificate ("the current one is still valid"). Finally, I'm not sure if the automatic fetching will work out for multiple hosts. AFAIK a TLS server usually serves only one certificate for all hosted domains, which are then selected using SNI. I'll try that next.

thanks a lot!!

added TLS spec notes to the app-readme for both latest and v0.3.2 cert-manager.


build: small adjustments

Update the builder
Use a lesser role

Signed-off-by: Vincent Demeester<EMAIL_ADDRESS>

LGTM, works like a charm!


Just updated wire now can't wire e2s anymore

Mouse clicks don't link stuff anymore, nor r unlinks

Also seem to have this issue but only in singleplayer (local server works fine); reverting to before https://github.com/wiremod/wire/commit/c45fe1367095365984c8adbb8afbaa23ad5e750e seems to fix it, maybe an issue with IsFirstTimePredicted in singleplayer?

The above update should fix it. Let me know if you still have issues @TheLight91

To be specific, the fix for this bug in particular is this part here
https://github.com/wiremod/wire/blob/master/lua/weapons/gmod_tool/stools/wire_adv.lua#L502
where I added an "is not single player" check in addition to the "is not first time predicted" check, since it seems single player doesn't need the predicted check.

I'll test it as soon as possible, now having dinner.

@Divran Seems like it's fixed in single player too now.

BTW, it seems that wire works differently from multiplayer and singleplayer in other things too. Like clutches work decently in multiplayer, while they don't always work in single player.

yeah most devs focus on multiplayer, so single player barely gets any testing. Feel free to report any bugs you find either here or on the discord https://discord.com/invite/H8UKY3Y (if you are unsure if it's a bug or not, use the discord). There are a few bugs that we probably won't fix in single player (like save games). But you can also always just host a local server instead and avoid all issues that way.

@Divran How do you host a local server though? because if it's done from Gmod itself with the options in single player, I already tried that and the issues remain, like the tickrate following fps and all weirdness of sp wire.

@Divran How do you host a local server though? because if it's done from Gmod itself with the options in single player, I already tried that and the issues remain, like the tickrate following fps and all weirdness of sp wire.

Click start game and then there is a drop-down menu in the top right corner of the screen where you can choose between single player or various player limits. Pick any option other than single player and it'll host a local server that other people will be able to join assuming you have your ports opened. Can always set a password to prevent that.

I tried that, doesn't change anything for me.

Well that's what I do every time. That's also what I did when I tested the update to the wire tool that made it break in single player, and since it worked fine during testing, I definitely couldn't have been in single player.

Well, I get the same wire clutch inconsistency that I get in sp while using the local server and the tickrate was still tied to fps.

You can try putting this in console lua_run print(game.SinglePlayer()), check if it prints true or false

I know it is multiplayer, says it in steam too, but it doesn't solve any of the problems I have with my sp wire, weird stuff.

it's possible the clutch has the same issue regardless

It does not. On an actual server it works perfectly, consinstently activates like it should. I opened an issue on it already, it's a bug.


Time series in EVA?

I would like to start a discussion regarding EVA handling timeseries and creating plots with time axes. Creating time series plots is something I started doing with JEDI outputs on our end but I would like to do it in a generic way if there is demand/need. I had some brief discussions here with @danholdaway and @asewnath (she suggested that I create an issue) and I would really appreciate EMC's input on this so I'm tagging all who might be interested: @CoryMartin-NOAA @EdwardSafford-NOAA @kevindougherty-noaa @guillaumevernieres @ADCollard.
A simple example plot is mean (obs - bkgr) over multiple time steps in observation space. IodaObsSpace class is already handling JEDI outputs (location, channel dimensions) in observation space so this would be only a matter of adding a dateTime dimension. The issue with EVA is that there are no time series handling and an improvement to EVA in this regard would benefit everyone in terms of DA monitoring. EVA currently reads data, makes necessary transforms, and makes the plots inside a certain folder, say geos_ocean for our case, at a single cycle.
I have issues in terms of cycling and file storage so I have to erase JEDI outputs frequently for high resolution simulations that spans couple of months. Hence, ideally EVA needs to handle files during the active cycle before they get erased. This may or may not be relevant for the other developers.
Below is what I'm suggesting (based on our workflow):
For Swell workflow, our run directory currently looks like this (for ocean-only DA cycling) :
├── run
│   ├── 20210601T120000Z
│   │   └── geos_ocean
│   ├── 20210601T180000Z
│   │   └── geos_ocean
│   ├── 20210602T000000Z
│   │   └── forecast
|   |   └── geos_ocean

forecast directory contains GEOS related files/outputs whereas geos_ocean has JEDI related configs/outputs. EVA runs inside geos_ocean  at each cycle and produces fabulous plots.
My suggestion is having an extra folder (call it diagnostics or holding) on the same level as time:
├── run
│   ├── diagnostics
│   ├── 20210601T120000Z
│   │   └── geos_ocean
│   ├── 20210601T180000Z
│   │   └── geos_ocean
│   ├── 20210602T000000Z
│   │   └── forecast
|   |   └── geos_ocean

So EVA would process IODA outputs and create netcdf file(s) within the diagnostics folder with time (and channels etc. if needed) dimension(s). Afterwards, it may append and update these file, or create a new one every so often, you get the idea. This would require some capabilities within EVA in addition to datasets, transforms, graphics, such as write to output (which may be a time sink unless handled in parallel). It would be great addition with the EVA interactive tool as part of DA monitoring.
I'm open to suggestions, thoughts, criticisms..

We're interested (in a parasitic sort of way) for sure, @Dooruk . We run EVA every cycle as well, but I can't say our plots are fabulous yet!

Thanks @Dooruk . I've thought about this in the past. I was thinking something like the following:

OOPS application to read in IODA diagnostics, compute statistics, and produce a much smaller IODA file with just summary information
Use EVA to concatenate the above outputs and produce time series from them

Basically, as part of a workflow, the IODA diagnostic files would go into an IODA reader, compute counts, mean O-F, std dev, whatever else is needed, and write out a file that is "cycle" dimension instead of nlocs. This can either be 1 file/cycle or appended with ncrcat or something like that. Then EVA plots variables from this file on a line plot with minimial changes needed in EVA (maybe only the reader since IODA requires "nlocs", although I guess we can still use that dimension and then have a cycle/time variable?)
I guess, what I am saying is, I always saw this more as an IODA problem, not an EVA problem, but if we want to do the preprocessing as part of EVA, I'm open to that approach, I just figured compiled code here would be faster.

I like the idea of having an oops application to perform the time series for observations. Thanks for volunteering effort on this @AndrewEichmann-NOAA and @guillaumevernieres.
To have more generic time series capability in eva I think we need to have it at a level above the read and transforms. I started working on this at one point but didn't have time to finish and then wanted to wait until after all of Akira's refactoring, which is now complete. The kind of YAML structure I had in mind was along the lines of:
timeseries:
  times: [time1, time2, ...]
  filenames: [file1, file2, ...]
  dataset_template:
      name: ...
      type: ...
      dataset_specific_things: ....

  # List here the variable you want to compute at each time and keep
  transform_and_keep:
  - transform: minmaxmean
    metrics: [mean, max]
    along_dimension: []
    variable: collection::group::variable

  # List any variables that you want to keep the entire thing each time. Otherwise everything is deleted
  # Somehow add a time dimension, though TBD exactly how.
  keep_variables: []

# More transforms if you like
transforms:

# Graphics
...

I was thinking that if you had timeseries in the yaml you wouldn't be able to put anything for dataset, it would loop over the files of the timeseries and create a dataset for each.
The behaviour would also trigger deleting everything except what is created in transform_and_keep or things you especially want to keep in keep_variables. This would avoid mounting memory use.
Let me know what you think on this approach. I can work on it while EMC work on the OOPS level approach. The advantage of the Eva way would be that it could be applied to any of the data we can read in Eva. For example accumulating all the convergence rates over many cycles or to make Hovmöller type plots.

@danholdaway thanks for chiming in. In terms of specifying times in the YAML, are you thinking this timeseries task would be executed periodically and then create/append an output file, as opposed to every cycle (what I originally had in mind)? Or the task just creates graphics and does not write any files?


Replace InsightCard by Card component

Description
Replace InsightCard component with Sparkle Card component in Analytics.tsx.

Use of the new Card component
Maintain same structure and functionality
Improve visual consistency with design system

Risk
Minimal - UI changes
Deploy Plan
Deploy front

your lint did not pass @pinotalexandre, did you maybe forget to bump the version of sparkles used?

meta: if you have screenshots to get a before/after you should add them to the description


Problem on opening the simulator

Hi, this is my first time of using your simulator, hopefully you may bear with me a little, thanks in advance.
I just follow the instructions as stated in your documentation, but I am stucked here as shown. May I know what are the possible errors that I done?

Hi, JasonKung. Did you install PGDrive via pip? If so, please install it by
git clone https://github.com/decisionforce/pgdrive.git
cd pgdrive
pip install -e .

Our pip official wheel is not the latest, so this bug happened.

Hi, JasonKung. Did you install PGDrive via pip? If so, please install it by
git clone https://github.com/decisionforce/pgdrive.git
cd pgdrive
pip install -e .

Our pip official wheel is not the latest, so this bug happened.

Hi developer lqy0057! Thanks for reaching out my problem here. The above code i had executed, but just when I execute this command, python -m pgdrive.examples.profile_pgdrive , i got the errors shown earlier. Is there other packages that I have to install as well? Thanks!

Hi developer lqy0057! Thanks for reaching out my problem here. The above code i had executed, but just when I execute this command, python -m pgdrive.examples.profile_pgdrive , i got the errors shown earlier. Is there other packages that I have to install as well? Thanks!

Hi developer lqy0057! Thanks for reaching out my problem here. The above code i had executed, but just when I execute this command, python -m pgdrive.examples.profile_pgdrive , i got the errors shown earlier. Is there other packages that I have to install as well? Thanks!

Could you please try pip uninstall pgdrive before installing the latest wheel?
By the way, seems this bug is only related to the destroy. May I ask if other functionality of PGDrive works well in your computer? Thanks!

Hi developer lqy0057! Thanks for reaching out my problem here. The above code i had executed, but just when I execute this command, python -m pgdrive.examples.profile_pgdrive , i got the errors shown earlier. Is there other packages that I have to install as well? Thanks!

Could you please try pip uninstall pgdrive before installing the latest wheel?
By the way, seems this bug is only related to the destroy. May I ask if other functionality of PGDrive works well in your computer? Thanks!

Hello developer pengzhenghao! Thanks for reaching here, what is meant by "related to the destroy"? I tried the other functions as well but still throw me the same errors.

Hello developer pengzhenghao! Thanks for reaching here, what is meant by "related to the destroy"? I tried the other functions as well but still throw me the same errors.

Update: I do notice this:
"The above script is supposed to be runnable in all places. Note that please do not run the above command in the folder that has a sub-folder called ./pgdrive."
However, I manually open the directory and found out the python files such as enjoy_expert, enjoy_manual, profile_pgdrive are all in the subfolder pgdrive. May I know what should I do for now? Thanks in advance

Update: I do notice this:
"The above script is supposed to be runnable in all places. Note that please do not run the above command in the folder that has a sub-folder called ./pgdrive."
However, I manually open the directory and found out the python files such as enjoy_expert, enjoy_manual, profile_pgdrive are all in the subfolder pgdrive. May I know what should I do for now? Thanks in advance

Hello developer pengzhenghao! Thanks for reaching here, what is meant by "related to the destroy"? I tried the other functions as well but still throw me the same errors.

Don't worry my friend. These errors were thrown when calling env.close() to terminate or destroy the simulation, so you can ignore them.  python -m pgdrive.examples.enjoy_manual and python -m pgdrive.examples.enjoy_expert  still work.
And these errors can be solved by installing pgdrive in a new conda environment and installing PGDrive-main by git clone. We will update the pip wheel soon.

Hello developer pengzhenghao! Thanks for reaching here, what is meant by "related to the destroy"? I tried the other functions as well but still throw me the same errors.

Don't worry my friend. These errors were thrown when calling env.close() to terminate or destroy the simulation, so you can ignore them.  python -m pgdrive.examples.enjoy_manual and python -m pgdrive.examples.enjoy_expert  still work.
And these errors can be solved by installing pgdrive in a new conda environment and installing PGDrive-main by git clone. We will update the pip wheel soon.

Update: I do notice this:
"The above script is supposed to be runnable in all places. Note that please do not run the above command in the folder that has a sub-folder called ./pgdrive."
However, I manually open the directory and found out the python files such as enjoy_expert, enjoy_manual, profile_pgdrive are all in the subfolder pgdrive. May I know what should I do for now? Thanks in advance

python -m means running python script as module, so you can run this command everywhere except a working directory that has a sub-folder called ./pgdrive

Update: I do notice this:
"The above script is supposed to be runnable in all places. Note that please do not run the above command in the folder that has a sub-folder called ./pgdrive."
However, I manually open the directory and found out the python files such as enjoy_expert, enjoy_manual, profile_pgdrive are all in the subfolder pgdrive. May I know what should I do for now? Thanks in advance

python -m means running python script as module, so you can run this command everywhere except a working directory that has a sub-folder called ./pgdrive

Hi lqy0057! Thanks for the detailed explanation here. I saw the files are inside this folder, by right I think I should not run from here right? As per the instructions given from you. I ran the earlier commands in the pgdrive main folder. Thanks!

Hi lqy0057! Thanks for the detailed explanation here. I saw the files are inside this folder, by right I think I should not run from here right? As per the instructions given from you. I ran the earlier commands in the pgdrive main folder. Thanks!

Hi, thanks again for trying to solve my problem here. May I know is there is any difference of using pathlib and "os.path.dirname(file)"? I am still new to Python so I wish to learn a bit more of the writing. Thank you so much!

Hi, thanks again for trying to solve my problem here. May I know is there is any difference of using pathlib and "os.path.dirname(file)"? I am still new to Python so I wish to learn a bit more of the writing. Thank you so much!

Hi, thanks again for trying to solve my problem here. May I know is there is any difference of using pathlib and "os.path.dirname(file)"? How I should replace it in the Python code? I am still new to Python so I wish to learn a bit more of the writing. Thank you so much!

Thanks for opening this issue, We find your OS is Windows, and  Win32 platform is case-insensitive, which may raise error  when loading assets of PGDrive. It can be solved by using these methods.

Hi, thanks again for trying to solve my problem here. May I know is there is any difference of using pathlib and "os.path.dirname(file)"? How I should replace it in the Python code? I am still new to Python so I wish to learn a bit more of the writing. Thank you so much!

Thanks for opening this issue, We find your OS is Windows, and  Win32 platform is case-insensitive, which may raise error  when loading assets of PGDrive. It can be solved by using these methods.

Hi @JasonKung98 We have already update PGDrive, could you please try to install the latest version via:
pip install -U pgdrive
and see if everything work well?
Thanks!

Hi @JasonKung98 We have already update PGDrive, could you please try to install the latest version via:
pip install -U pgdrive
and see if everything work well?
Thanks!

Hi! @lqy0057  and @pengzhenghao ! Thanks for spending your time again looking for any solutions for my problem. Thanks for the given suggestions as well, will try it out recently to see if it works. Please do remain this post opened until resolved, I would be glad if I may receive further assistance from you 👍

Hi! @lqy0057  and @pengzhenghao ! Thanks for spending your time again looking for any solutions for my problem. Thanks for the given suggestions as well, will try it out recently to see if it works. Please do remain this post opened until resolved, I would be glad if I may receive further assistance from you 👍

Update: Hi, after pip install -U pgdrive and follow the instructions stated :
git clone https://github.com/decisionforce/pgdrive.git
cd pgdrive
pip install -e .
python -m pgdrive.examples.profile_pgdrive
i still couldn't make it run, is it really the issue of "Use pathlib to replace all "os.path.dirname(file)" here? I am not familiar of dealing with pathlib in my code, thank you so much !

Update: Hi, after pip install -U pgdrive and follow the instructions stated :
git clone https://github.com/decisionforce/pgdrive.git
cd pgdrive
pip install -e .
python -m pgdrive.examples.profile_pgdrive
i still couldn't make it run, is it really the issue of "Use pathlib to replace all "os.path.dirname(file)" here? I am not familiar of dealing with pathlib in my code, thank you so much !

Close this issue temporarily. Feel free to reopen if necessary!


HDDS-9213. Findbugs error in TestOMRatisSnapshots.

What changes were proposed in this pull request?
I accidentally merged this findbugs error into master:
M D DLS: Dead store to numberOfSstFiles in org.apache.hadoop.ozone.om.TestOMRatisSnapshots.testSnapshotBackgroundServices() At TestOMRatisSnapshots.java:[line 1245]
What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-9213
How was this patch tested?
findbugs

Hi @GeorgeJahad , thanks for the patch.
Note when there is only one commit in the PR, Github merge will use that commit message as the merged commit's message bu default. Please do check the commit message when merging a PR next time.

Hi @GeorgeJahad , thanks for the patch.
Note when there is only one commit in the PR, Github merge will use that commit message as the merged commit's message by default. Please watch out for the commit message when merging a PR next time.

Will do.  thanks!


Add java talk and update date of d2o Sysdig talk

Urgency

[ ] Blocker
[ ] High
[x] Medium

Requirements

Test all commands and procedures.
Build content locally and test for formatting/links.
Add redirects to dcos-website/redirect-files.
Change all affected versions (e.g. 1.7, 1.8, and 1.9).
See the contribution guidelines.

retest this please


Failure to recognize too many blank lines

Check the following code:
a = 100

b = 100

Flake8 will report E303 too many blank lines (3) but ruff passes silently.
$ fades -d flake8 -x flake8 --version
6.0.0 (mccabe: 0.7.0, pycodestyle: 2.10.0, pyflakes: 3.0.1) CPython 3.10.6 on Linux
$ fades -d flake8 -x flake8 x.py
x.py:5:1: E303 too many blank lines (3)
$
$ fades -d ruff -x ruff --version
ruff 0.0.138
$ fades -d ruff -x ruff x.py
$

We don't support E303 right now, so this is expected.

Will you support it in the future? Thanks!

The README says
"""
Ruff can be used as a drop-in replacement for Flake8 when used (1) without or with a small number of plugins, (2) alongside Black, and (3) on Python 3 code.
Under those conditions, Ruff implements every rule in Flake8, with the exception of F811.
"""
Are there other missing codes in comparison to flake8? Thanks!

I might! The thing with E303 and other rules is that, IIUC, if you run Black over your code, it's effectively impossible to trigger them. Given Black's popularity, I intentionally deprioritized stylistic rules that are already fixed by Black. Eventually, I'd like to extend Ruff to do autoformatting which would effectively include automatically fixing those lint errors.

Closing in favor of #1073.


token-js: added a helper class for parsing tlv-data

resolves #5127
In this PR I have isolated parsing of TLVData into its own file. For ticket #5127, I think this is fine for now as this allows us to very quickly extract TLVData parsing into its own library if we ever need it.
The TLVData class adds two helper functions for reading TLVData.

entry(type) returns the first entry where the type matches the supplied type (preferred)
entries() returns a map of all entries in the TLVData.

Parsing still succeeds if the tlv data is not the right length. entry just returns null for a partial last entry and entries just excludes the last partial entry.
The TLVData class allows you to specify the length/span of both the type and length part of the tlv which should make parsing tlv data much easier in the future.
I added a couple simple tests for parsing and reading TLVData.
This new class is not actually being used yet anywhere in the code. I plan to create (at least) two follow up PRs that switch out the old implementation for this new one once this PR is merged:

getExtensionData in ./token/js/extension/extensionType.ts
getExtraAccountMetaAccount in ./token/js/exension/transferHook/state.ts
Anything else?

I can see that you're going for a more generalized approach here, and I'm not sure this idea I'm going to suggest will be as slick as I imagine it, but what do you think about instead using an interface and/or super class that together mock the TlvState trait? Ideally then you'd just supply the sizes and get all of the TLV stuff out of the box?
That's what a lot of these tests are doing; just creating objects that implement SplDiscriminate and can then be used as TLV entries.
In JS, I understand we would have to somehow replicate Rust's size_of or the solana_program::borsh::get_instance_packed_len functions, but that could be roped in here.

Oh, I'm just now remembering I have this sloppy code that might be helpful!
https://github.com/buffalojoec/keyring-program/blob/main/js/src/keystore.ts

In Rust, this would fail to parse, so we probably want this to happen in JS as well. We might even need to introduce some errors similar to the Rust ones.

Agreed. Let's keep it similar to the rust implementation. Also think it makes sense to keep the naming the same. i.e. TlvState instead of TLVData, get_first_bytes and get_bytes_with_repetition and maybe get_discriminators which would then replace the existing functions.

I can see that you're going for a more generalized approach here, and I'm not sure this idea I'm going to suggest will be as slick as I imagine it, but what do you think about instead using an interface and/or super class that together mock the TlvState trait? Ideally then you'd just supply the sizes and get all of the TLV stuff out of the box?

I think it would definitely make sense to add some form of spl_discriminate to the js library as well. Mainly because it makes it easier to read and verify the code. i.e. you can just match the discriminator string to the rust code instead of having the take bytes/bigint/number and turning that into raw bytes and then trying to find the matching discriminator.
I think probably the easiest (and fastest) implementation could be a single function that takes a discriminator string and turns it into bytes/bigint/number which you can then throw into the TlvState to grab the entry. Something like:
export function splDiscriminator(key: string, length = 8): Buffer {
    // TODO: make sure this also works in browser without needing to polyfill node crypto/buffer?
    const digest = createHash('sha256').update(key).digest();
    return digest.subarray(0, length);
}

Ok I think we managed to fix the CI!
Let me know when you're ready for another review

I think it would definitely make sense to add some form of spl_discriminate to the js library as well. Mainly because it makes it easier to read and verify the code. i.e. you can just match the discriminator string to the rust code instead of having the take bytes/bigint/number and turning that into raw bytes and then trying to find the matching discriminator.
I think probably the easiest (and fastest) implementation could be a single function that takes a discriminator string and turns it into bytes/bigint/number which you can then throw into the TlvState to grab the entry. Something like:
export function splDiscriminator(key: string, length = 8): Buffer {
    // TODO: make sure this also works in browser without needing to polyfill node crypto/buffer?
    const digest = createHash('sha256').update(key).digest();
    return digest.subarray(0, length);
}

Yes, I like this approach! I think that's perfect. The more I think about it, the more I think a more generalized approach as you've written makes sense, because as I mentioned above we want to actually not do what we did in Rust for Token2022 and TLV, and shared all TLV operations across this library.
If Token2022 wasn't being audited, I'd vote to do this in Rust as well using the Rust TLV lib, and modify the Rust spl-discriminator library to support whatever length discriminator you want. This may happen in the future, so what you've got for any length discriminator makes sense to me!

Can we roll a separate library for this stuff, rather than working it into Token JS?
I think after some of our discussion it makes sense to introduce new ones, and then they can be imported into the metadata library as well as token (#5228).
I think, for now, let's just keep SplDiscriminate and TLV stuff in one JS library - we'll call it @solana/spl-type-length-value, and then import it where we need it. What do you think?

Can we roll a separate library for this stuff, rather than working it into Token JS?

I think that makes sense. What location in the repository would you suggest for that?
There is the libraries folder but it currently only contains rust libraries so wouldn't necessarily say it makes sense to put it there.
I'm leaning towards either a type-length-value or js-type-length-value in the root or something along the lines of libraries-js/type-length-value. What do you think?

There is the libraries folder but it currently only contains rust libraries so wouldn't necessarily say it makes sense to put it there.

You're right but that's only because none of those libraries have any JS counterparts 😂
I'd say just stick a js folder into libraries/type-length-value. Cargo won't even look at it


Implement localization

Certain features are going to be difficult to support in languages other than English, because it is difficult to implement things robustly in some cases without checking the text content of elements.
Therefore I'm going to propose that in such cases it would use localization. E.g. with https://docs.python.org/3/library/gettext.html
However I do not want to spend a lot of time implementing many languages to start with, so I'm only going to work on converting the code to use a localization interface. I'm open to suggestions other than gettext if something else works better.
This might be over-engineering at this point too. I don't know.
Originally posted by @weskerfoot in https://github.com/weskerfoot/DeleteFB/pull/31#issuecomment-496033159

I think this is overkill and it would be better to simply try and make the tool work without assuming the language set in Facebook, and default to English for all of the tool options, etc.


SystemJS config filename is hard-coded

The SystemJS config file in my project is named systemjs.config.js, but the filename in this extension is hard-coded to systemjs.conf.js; this presents a problem.  Could it be passed in as a configuration variable?

sure, I'd make it default to systemjs.config.js but can be passed as 2nd param, will do it tomorrow.

should be fixed in https://github.com/ngstarter/systemjs-extension/commit/156e70922a7517bb1da336666422bb2ac77f2a03

that's great, thanks!  is there any reason it needs to be passed separately, rather than simply being a property on the config.systemJs object?

I think it's more declarative that way, same goes for webpack config

fair enough -- thanks again!


◀ Receive geometry as sketchup faces

Sketchup faces are tricky when we compare with other host programs. It has it's own logic. So when we receive geometries from other connectors, they might be appeared in displayValue and displayValue geometries seem as soften edges which is not pushpullable.

Walls, Floors and Ceilings received as sketchup faces with hard edges.


Document difference, if any, between visit_str and visit_string

If I'm implementing my own serde::de::Visitor for a string type, do I need to implement visit_str, visit_string, or both? The documentation should make this clear

Yeah, it should be in the docs. visit_str is a performance optimization. It enables deserializers that are reusing an internal buffer for strings like serde_json to pass a &str slice to that string to the visitor without forcing a copy. This then can be used by implementations, like integers and floats to deserialize from the &str.
So as you can see, it's not strictly necessary, but it does help to eliminate some unneeded work.

This has landed!


backout dependency updates in yarn.lock

Pull Request Test Coverage Report for Build 213673314

0 of 0   changed or added relevant lines in 0 files are covered.
5 unchanged lines in 3 files lost coverage.
Overall coverage decreased (-0.4%) to 75.366%

Files with Coverage Reduction
New Missed Lines
%

src/languageservice/parser/scalar-type.ts
1
66.67%

src/languageservice/utils/paths.ts
1
90.0%

src/languageservice/utils/json.ts
3
90.48%

Totals

Change from base Build 211280401:
-0.4%

Covered Lines:
1212

Relevant Lines:
1535

💛  - Coveralls


feat(API): Add TypeScript declaration file

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

@vvo package.json is missing the types entry:
  "types": "./lib/index.d.ts"

therefore, the Typescript definition file (d.ts) is not being recognized by TypeScript

@Borales Thanks, now merged, let me know

@vvo it works now

@vvo oh, one more thing - the typings are missing the main session methods definitions:

req.session.set(name, value)
req.session.get(name)
req.session.unset(name)
req.session.destroy()

@Borales Sorry I am not using TypeScript so if something is missing, please update it or wait for someone to update it (I have no better answer: I don't know how to fix this :D)


New extension: Hedgehog platformer

Description
A platform(er) extension akin to the built-in platformer but with independent physics made out with events that try to replicate momentum physics from Sonic The Hedgehog games in GDevelop.
How to use the extension
Give "Hedgehog platformer character" behavior to your player object and "Hedgehog platform" to your floor and obstacle objects.
Then in your player object, run an action called "Execute hedgehog movement" with the hedgehog platform object in the parameters, run in an event with no conditions.
Checklist

[X] I've followed all of the best practices.
[X] I confirm that this extension can be integrated to this GitHub repository, distributed and MIT licensed.
[X] I am aware that the extension may be updated by anyone, and do not need my explicit consent to do so.

What tier of review do you aim for your extension?
Community (Unreviewed)
Example file
HedGD.zip
Extension file
HedgehogPlatformer.json

go ahead, kill me GD bot 💀

bro is high


removing top-level reports folder, updating README files

It looks like the fix to loans_items was made in the same branch; so it got included in the PR.  Do you want to include that commit in this merge?

Yes, that would be great!
On Thu, Dec 3, 2020 at 3:02 PM Nassib Nassar<EMAIL_ADDRESS>wrote:

It looks like the fix to loans_items was made in the same branch; so it
got included in the PR. Do you want to include that commit in this merge?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/folio-org/folio-analytics/pull/213#issuecomment-738275153,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AA774ERPO5VSVGDBOCICIA3SS7VEXANCNFSM4UKUEQ5Q
.

(If it's okay. Otherwise I can revert.)


Support v1.45 (incl. 64-bit build)

Get it here: https://wikiwiki.jp/tkbsoft/domino/ベータ版
Oh, I love this software so much!
Looking for English translations to the latest 64 bit edition!

A new version, huh? It seems that it is still beta, so I'd rather wait for the stable version to release, or if there are enough interest on it.

i want it!

Also want it


Please include supported Xamarin Forms Version for your notes in the future

overriding GetIconDrawable is only available for Xamarin.Forms 3.4.0 and up.

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

ID: 0c81c589-e81e-d98c-9656-695a3520a12d
Version Independent ID: c235f6f9-47ce-15f3-b4da-cb12e219df92
Content: Xamarin.Forms Tabbed Page - Xamarin
Content Source: docs/xamarin-forms/app-fundamentals/navigation/tabbed-page.md
Product: xamarin
GitHub Login: @davidbritch
Microsoft Alias: dabritch

Hi @sam9116
Thanks for the feedback. The docs tend to reflect the latest stable release of Xamarin.Forms. Previous experience has shown that the text becomes quite unwieldy when it states what release the feature was introduced in.


run command in cron

Hi,
i use hook.php
how to run one command every hour?
for example: send message to all user hourly.

Hi! You can use that: https://github.com/php-telegram-bot/core/wiki/Running-with-cron-(scheduled-commands)

You can find the example file here:
https://github.com/php-telegram-bot/example-bot/blob/master/cron.php

thank you.


Update documentation on http://airbnb.io/projects/superset/

We should include a bullet on SQL Lab on the main page of Superset.  Suggested edit below:
https://docs.google.com/a/airbedandbreakfast.com/document/d/13w0eh3x1oPagJzsl33Je0FSB6H2ck8TmlS8n2v9Z9bs/edit?usp=sharing

https://github.com/airbnb/airbnb.github.io/pull/97


Reset Local (Force Pull) not resetting/overwriting Objects if language pack is installed recently

When I do a force pull / reset local, I am unable to reset the below objects to original, after a Language Pack was installed.
Abapgit 1.99.0

try going to settings for the repository, and check "Serialize Master Language Only"

its a workaround, but 🤷♂


[FAB-18188] Log orderer and peer cert expiration date upon startup

Type of change

Improvement (improvement to logging)

Description
FAB-17000 added a warning if expiration is within a week.
This change additionally info logs the future enrollment, tls server, and tls client
cert expiration dates upon startup, regardless of whether they will expire within a week or not.
Signed-off-by: David Enyeart<EMAIL_ADDRESS>

@yacovm Because each of the three certs have checks against them in TrackExpiration, as does certExpirationTime(). Why duplicate all those checks and add complexity to the peer and orderer mains, when it can be done together with the existing logging in the dedicated expiration tracking function where people would expect it. At the end of the day, I don't think it matters much either way, but mostly I'd prefer to keep the mains nice and clean.

@yacovm Because each of the three certs have checks against them in TrackExpiration, as does certExpirationTime(). Why duplicate all those checks and add complexity to the peer and orderer mains, when it can be done together with the existing logging in the dedicated expiration tracking function where people would expect it. At the end of the day, I don't think it matters much either way, but mostly I'd prefer to keep the mains nice and clean.

I think that if you make a single function that accepts all 3 as inputs (similar to track expiration) then it won't pollute the main, and will be much easier to understand the code.

@yacovm Because each of the three certs have checks against them in TrackExpiration, as does certExpirationTime(). Why duplicate all those checks and add complexity to the peer and orderer mains, when it can be done together with the existing logging in the dedicated expiration tracking function where people would expect it. At the end of the day, I don't think it matters much either way, but mostly I'd prefer to keep the mains nice and clean.

I think that if you make a single function that accepts all 3 as inputs (similar to track expiration) then it won't pollute the main, and will be much easier to understand the code.

@yacovm  But all three cert expiration dates are not available for logging, it depends on which are configured on the node. By the time we duplicate that logic, might as well just log it alongside the expiration Warning where I have it. I'm not seeing the complexity of keeping the expiration warning and expiration logging co-located in trackCertExpiration(), on the contrary it seems that a trackCertExpiration() function is the most straightforward place to both log the date and provide a warning if the date is coming soon.

@Mergifyio backport release-2.2

@Mergifyio backport release-2.1

@Mergifyio backport release-2.0


Add pb:latest-provider-pacts-with-tag to index.rb

In order to be able to add an option to pact-jvm-provider to obtain all the prod (or other) tagged pacts for all provider consumers.
I believe just adding it to index.rb is sufficient but I may be wrong.
@bethesque - could you please review? Thanks!

Looks right. Ta!

Released change in 1.12.0.


design spec_version updates

Since a incompatible spec version update seems to get more interest (see #2040), we should start with actually designing how spec version numbers are going to work... Who is responsible for setting the version and what tools exist to help there?
As an example, lets say that TUF spec decides that succinct delegations are an incompatible spec addition -- this is a reasonable decision as adding succinct delegations to a targets metadata makes it invalid for older clients. Let's say, this is spec version 2.0.0.
Assume python-tuf supports spec 2.0.0. Now repositories are going to have many reasonable choices. At least these exist:

start using 2.0.0 in all new metadata files (but keep old ones as is even when the are resigned). This is what happens by default with current python-tuf: this leads to bugs as soon as

succinct delegations are added to existing metadata
new metadata is added that old clients should be able to access

start using 2.0.0 in all metadata files whenever they get re-signed. Issues appear when:

any metadata that old clients should be able to access is resigned

start using 2.0.0 in all metadata that contain succinct delegations but legacy version in all others, even newly created metadata -- this allows old clients to keep accessing any metadata that doesn't contain succinct delegations

The last one is arguably most useful but also quite tricky to implement, at least in python-tuf (likely a lot easier in the repository itself): it might be possible to write methods that scans the metadata structure and decides "what is the lowest spec version that this structure supports": this method could be used by the repository when it's updating expiry,version,etc metadata content to also set spec_version at that time.

Hmm, I suppose I actually meant that 1.1.0 (instead of 2.0.0) could be a reasonable spec version number for succinct delegations. I'm assuming that means "new clients compatible with 1.1.0 will understand 1.0.x metadata, but old clients will not understand 1.1.0".

Hmm, I suppose I actually meant that 1.1.0 (instead of 2.0.0) could be a reasonable spec version number for succinct delegations. I'm assuming that means "new clients compatible with 1.1.0 will understand 1.0.x metadata, but old clients will not understand 1.1.0".

Based on some comments by Justin, I think the intention is not this, but instead the hard compatibility requirement "1.0.0 clients must be able to understand and use all 1.x.y metadata". This is also reasonable, but means there will be more major version bumps in the future.


[ts-transformers] Rewrite static styles and properties class fields as getters

Note to reviewer: I recommend looking at each commit separately, I tried to break it up for readability.
Transforms:
class MyElement extends LitElement {
  static styles = css\`p { color: red; }\`;
  static properties = {foo: {type: Number}};
}

Into:
class MyElement extends LitElement {
  static get styles() {
    return css\`p { color: red; }\`;
  }
  static get properties() {
    return {foo: {type: Number}};
  }
}

Instead of:
class MyElement extends LitElement {
}
MyElement.styles = css\`p { color: red; }\`;
MyElement.properties = {foo: {type: Number}};

This transform is useful because Lit is not compatible with standard class fields, so standard class field emit needs to be disabled (useDefineForClassFields: false). However, this means statics turn into MyClass.foo = ... assignments following the class declaration, which has poor readability compared to a getter.

All current browsers support instance and static class fields... I wonder if we should do this one by default or not.

And would a different approach be to transform decorated fields await to the static class properties block and constructor initializers? That would preserve all other fields.

Sorry can you clarify? Do you mean turn on standard class field emit, but then have a post-built-in-transform that converts instance field initializers to constructor assignments?

Lit is not compatible with standard class fields

Probably missing specific context here, but this surprised me since we’ve been using lit with JS and static and instance fields (i.e., with defineProperty semantics, not set) seemingly without problems for two years. When does it not work exactly? Is it an issue that started/starts in lit 3? (We’re still on 2.5.1, so this could be important for us when we next upgrade...)

Lit is not compatible with standard class fields

Probably missing specific context here, but this surprised me since we’ve been using lit with JS and static and instance fields (i.e., with defineProperty semantics, not set) seemingly without problems for two years. When does it not work exactly? Is it an issue that started/starts in lit 3? (We’re still on 2.5.1, so this could be important for us when we next upgrade...)

Hi @bathos. If you use standard class fields with any version of lit-element, those properties will not be reactive, meaning requestUpdate() won't be automatically called when they change.
Here's a playground example for Lit 2 (lit-element 3), and for lit-element 2.
This issue is documented here and here.
Since you say you've been using them for 2 years with no problem, I wonder if you are actually transpiling class fields to the old semantics using Babel or TypeScript?

Hi @bathos. If you use standard class fields with any version of lit-element, those properties will not be reactive, meaning requestUpdate() won't be automatically called when they change.

Also I should clarify that this is only an issue for instance fields, i.e. the reactive data properties of the element. The static fields: styles and properties can safely use standard static class fields.

The examples here are for static fields, though.
(I shouldn't have mentioned instance fields. I understand why those wouldn't work, though we do use them in source as well; decorator transforms lead to them being realized as accessors on the prototype instead, despite the syntax.)

The examples here are for static fields, though.
(I shouldn't have mentioned instance fields. I understand why those wouldn't work, though we do use them in source as well; decorator transforms lead to them being realized as accessors on the prototype instead, despite the syntax.)

Ah yeah, understood. This PR is a little bit of a roundabout:

Because standard instance fields are not supported, we are setting the useDefineForClassFields flag to false so that TypeScript doesn't emit new-semantics class fields.
However, that flag controls both instance and static fields. There is no way to ask TypeScript to emit standard static fields without also doing instance fields.
That means if you have written a static class field, TypeScript will transform it to a MyElement.styles ... assignment after the class. This doesn't look very readable (which is the main goal of this set of transforms), so we convert it to a getter instead.

I think Justin's idea is pretty good, though --instead of all this, have an after-transform that turns reactive class fields back into constructor assignments. That way we could run with useDefineForClassFields enabled, giving us standard static class fields, but with instance class fields repaired to workaround this Lit incompatibility.

I mean if you transform the decorated fields to not_fields then you can keep useDefineForClassFields as true. So for properties, in addition to adding to the static properties object, replace the field declaration with just a constructor initializer.

Oh right, we can even do this as a before-transform. I was imagining we had to do it as an after transform for some reason. Sounds good, I like this much better, I will close this PR and send another one that does this.

Oh right, we can even do this as a before-transform. I was imagining we had to do it as an after-transform for some reason. Sounds good, I like this much better, I will close this PR and send another one that does that.

Ready for review in https://github.com/lit/lit/pull/2116


Request to add Portuguese (Brazillian) target Language

Hello,
I discovered this project, I'm just testing it, and I want to ask if is possible to add pt-BR as a target language, even with just Google Translate as Translator.
Source is English, target is pt-BR, thank you very much.

Done. Though Google Translate doesn't support brazillian portuguese.