chore: use raw nodes for leaf data

go uses raw unixfs nodes for leaf data whereas this module uses file nodes - that causes CIDs to differ between the two implementations.  I've added a rawLeafNodes option (false by default) that if set to true will cause this module to also use raw nodes for leaf data.
It also seems that setting the reduceSingleLeafToSelf option to false in order to disable that optimisation was being ignored if the optimisation was possible so I made it true by default and respected if explicitly set to false.

Requires the following to be merged:
ipfs/js-ipfs-unixfs#24
ipfs/js-ipfs-unixfs#25

@achingbrain I remember that go-ipfs used file for raw nodes when I implemented this and then things might have changed with the introduction of IPLD to IPLD raw nodes. I know that there are incoherence between regular ipfs add, ipfs files create and when using CIDv1 vs CIDv0.
Can you create a series of interop tests at http://github.com/ipfs/interop to ensure that these things are well captured?

@diasdavid
I've added a test here: https://github.com/ipfs/interop/pull/22 - of course, it won't pass for js-ipfs until the mfs functionality has been merged and released.
I found that ipfs add results in file leaf nodes but cat data.file | ipfs files write --create /somepath results in raw leaf nodes.
I asked in the go-ipfs repo about this behaviour and it seems to be because go-ipfs exclusively uses trickle-dags for mfs.

I asked in the go-ipfs repo about this behaviour and it seems to be because go-ipfs exclusively uses trickle-dags for mfs.

This is a massive loss for deduping. @achingbrain see https://github.com/ipfs/js-ipfs-unixfs-engine/issues/119 and https://github.com/ipfs/go-ipfs/issues/3576

I see what you mean, but logically if a file is split up into a bunch of chunks, each chunk is just raw data and not a file so probably shouldn't be marked as such.
That said, it's just a file because it's a named stream of bytes stored in a directory so it could all just be raw and interpreted as a file if we got to the node by following a named DAGLink.
E.g. to extend the example from the ipld spec with a type field:
{
  "files": {
    "cat.jpg": { // give links properties wrapping them in another object
      "link": {"/": "/ipfs/QmUmg7BZC1YP1ca66rRtWKxpXp77WgVHrnv263JtDuvs2k"},
      "mode": 0755,
      "owner": "jbenet",
      "type": "file" // or "symlink" or "directory", etc
    }
  }
}

🤷♂  Just thinking out loud.

ipfs/go-ipfs#3576 has been open for well over a year.  We can't really enforce interop without replicating go's behaviour, even if it's wrong.  How do you want to proceed?

@achingbrain target interop first and outline a plan for migration.

In that case we're going to have to take the hit on deduping...

ping @achingbrain what's left to do on this one - flip the rawLeafNodes option default? Code looks sensible, would be nice to have another test or two 😉

@alanshaw from what I can see the go implementation uses different importers depending on what you are doing.
ipfs add marks leaf nodes as file (which jsipfs has replicated), ipfs files add marks them as raw.
Until someone decides which is correct we should probably leave the defaults as they are.

I've added some tests and updated the readme too.  The Mac Jenkins slaves are preventing the build from passing as they are out of disk space so I'm going to merge this.


CloudFlare Dashboard SSO

What is the vendor's name?
CloudFlare
What is the vendor's pricing site?
https://cloudflare.com/pricing
What is the base pricing? Use the lowest tier that looks sane for a small business customer, not free or personal tiers.
$20 per month for the Pro Plan (per domain)
What is the minimum pricing for SSO support?
Call Me/$3500+ for the Enterprise Plan which gives SSO for the Cloudflare Dashboard as per https://blog.cloudflare.com/introducing-single-sign-on-for-the-cloudflare-dashboard/
Does this pricing info come from a quote or other non-public source?
Quote
Are there any caveats we should list in the footnotes?
n/a

Duplicate of https://github.com/robchahin/sso-wall-of-shame/issues/31

Duplicate of https://github.com/robchahin/sso-wall-of-shame/issues/31


Get Selected Rows Data on Custom Button click

Hi,
I have a custom button for example "edit" and onClick of this button how I can I get the selected row data not just keys.
Thanks
Vinoth

I was able to get the selected row data using this.refs.table.state.data. Closing the issue

Sorry for lately reply and you got it :)


[TI] Sysconfig updates for v1.18.1

PR 2 of 2 - readme and chip.syscfg changes to update from v1.16.2 to v1.18.1

@andy31415 It looks like the old sysconfig version is still being used, I updated the docker image for this in https://github.com/project-chip/connectedhomeip/pull/32741. Are there any other steps that need to be taken to ensure that the right sysconfig version is being pulled in to the CI builds?


fix typo in README.md

revalidateMode -> reValidateMode typo

🙏

Codecov Report
Base: 100.00% // Head: 100.00% // No change to project coverage :thumbsup:

Coverage data is based on head (1e78aff) compared to base (006513e).
Patch has no changes to coverable lines.

Additional details and impacted files
@@            Coverage Diff            @@
##              main       #35   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            9         9
  Lines          286       286
  Branches        77        77
=========================================
  Hits           286       286

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


createPosition from osmosis.concentratedliquidity seems to be spotty erroring out most times with invalid coins error

The following request:
{"poolId":"1264","sender":"ADDRESS","tokenMinAmount0":"308115949918710","tokenMinAmount1":"0","tokensProvided":[{"denom":"ibc/EA1D43981D5C9A1C4AAEA9C23BB1D4FA126BA9BC7020A25E0AE4AA841EA25DC5","amount":"324332578861800"},{"denom":"ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4","amount":"787389"}],"upperTick":"-79577000","lowerTick":"-79935800"}
Fails with the error:

Query failed with (6): rpc error: code = Unknown desc = Invalid coins<PHONE_NUMBER>61800ibc/EA1D43981D5C9A1C4AAEA9C23BB1D4FA126BA9BC7020A25E0AE4AA841EA25DC5,787389ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4) With gas wanted: '0' and gas used: '167024' : unknown request

It works like 1% of the times for different pools. I've tried playing around with different arguments taken straight from keplr for requests that actually work on there but simply won't with osmojs.

Change the sequence of tokens in the "tokensProvided" object


Preserve underscore in executorEnv in integration tests

This PR fixes #6236.

don't replace '_' in the environment variable part of spark.executorEnv
refactoring

Signed-off-by: Gera Shegalov<EMAIL_ADDRESS>

build


Wasm-opt integration

Profiling data suggests that it would be useful to take advantage of the performance and binary size optimizations offered by wasm-opt.
See also results in the canister profiling repo.
To do so, it is necessary to correctly preserve the ic custom sections. Furthermore, it would be best to recursively optimize embedded modules in the data sections used by Motoko actor classes.
ic-wasm is a good tool for this job since it already parses wasm modules, including the extraction of embedded actors in the data section.
TODO items left:

[x] Allow user to specify optimization level
[x] Use temp file
[x] Optimize actor classes in the data sections
[x] Handle errors nicely (check uses of unwrap)
[x] Add basic tests
[x] Test different optimization levels
[x] Add more complex test cases
[x] Test preservation of custom sections
[x] Document

Also check:

[ ] Warn of any dwarf custom sections
[ ] If possible, pass wasm module to and from wasm-opt in memory only. see here

@chenyan-dfinity thanks for all feedback!


PORT cannot be defaulted

given Procfile
test1: echo ${PORT:=3002}
test2: echo ${PORTT:=3003}

the output of foreman start is
test1.1 | 5000
test2.1 | 3003

PORT should be 3002, not 5000

PORT is defined by Foreman so the default won't catch.

It's related to https://github.com/ddollar/foreman/issues/175 and https://github.com/ddollar/foreman/issues/167.
So can't it be handled in the same way?

You can set a default port in foreman with -p but Foreman itself sets the PORT environment variable for the processes it creates (it is part of the contract) and thus the variable defaulting will always see a value being set.

What is the value in foreman specifying a PORT?  It's causing a lot of trouble.


Weight Init

https://github.com/e-lab/torch-toolbox/tree/master/Weight-init

Not sure exactly what this is about, but is it solved by nninit?

@Kaixhin yup.


Sparse tibble support

This will serve as the main hub of issues across the tidymodels ecosystem, regarding the implementation of sparse data in tibbles.
right now we are still in the exploratory phase, with work happening in https://github.com/EmilHvitfeldt/sparsevctrs to implement sparse vector classes that can be used within a tibble.
another thing we can do with this framework is allow sparse data as inputs to functions such as vfold_cv(), fit(), predict() etc etc, turning sparse data into sparse tibbles

[ ] Sparse vector classes
[ ] use sparse vector classes internally in recipes
[ ] use sparse vector to matrix conversion in appropriate places

[ ] recipes
[ ] workflows
[ ] parsnip (for xgboost)
[ ] rsample

[ ] make sure workflow/recipes interface is good to enable sparse data

possibly having sparse data by default if conversion isn't a big downside

[ ] make sure that end to end workflows uses and passes sparse data correctly
[ ] consider improved printing to allow the user to better use sparsity

a user might use 90% sparse compliant methods. letting them know what they would need to change to fully use sparsity (step_normalize() would be one example of a step that destroys sparsity)

[ ] Have vignettes in appropiate places describing what sparsity is and which steps/models benefit from them
[ ] document steps and models that work with sparsity and doesn't work with them

Steps in {recipes} according to whether they can use sparse vectors
Produce sparsity

step_count()
step_date()
step_dummy()
step_dummy_extract()
step_dummy_multi_choice()
step_holiday()
step_indicate_na()
step_ordinalscore() (maybe)
step_regex()
step_time() (am output, techincally sparse, but since it only has 2 levels it isn't worth it)
step_intercept()

Modify sparsity
For sure

step_sqrt() (if)
step_interact()
step_scale()
step_geodist()
step_corrr()
step_filter_missing()
step_lincomb()
step_nzv()
step_rm()
step_zv()
step_lag()
step_naomit()
step_impute_roll() (harder)
step_bin2factor()
step_num2factor() (maybe)

Might work out of the box

step_select()
step_sample()
step_shuffle()
step_slice()
step_arrange()
step_filter()
step_rename()
step_rename_at()

I think

step_classdist()
step_classdist_shrunken()
step_window()

Unaffected steps

step_BoxCox()
step_bs()
step_harmonic()
step_hyperbolic()
step_inverse()
step_invlogit()
step_log()
step_logit()
step_mutate() (because the way it works)
step_ns()
step_poly()
step_poly_berinstain()
step_relu()
step_spline_b()
step_spline_convex()
step_spline_monotone()
step_spline_natural()
step_spline_nonnegative()
step_YeoJohnson()
step_discretize()
step_cut()
step_factor2string()
step_integer()
step_novel()
step_other()
step_percentile()
step_relevel()
step_string2factor()
step_unknown()
step_unorder()
step_center()
step_normalize()
step_range()
step_classdist()
step_ica()
step_isomap()
step_kpca()
step_kpca_poly()
step_kpca_rbf()
step_mutate_at() (because the way it works)
step_nnmf()
step_nnmf_sparse()
step_pca()
step_pls()
step_ratio()
step_spatialsign()
step_profile()
step_rename()
step_rename_at()

{themis} doesn't have any methods that apply.
{embed} only has step_feature_hash(), but it is soft deprecated so I don't think it is worth it.

{textrecipes} has the following steps that produce sparsity

step_texthash()
step_tf()
step_tfidf()
step_dummy_hash()

The remaining are unaffected

closed in favor of linked issues


add support for NOTE, WARNING and IMPORTANT github markdown syntax

Render Github markdown syntax
> [!IMPORTANT]
> Render it

[!IMPORTANT]
Render it

> [!NOTE]
> Render it

[!NOTE]
Render it

> [!WARNING]
> Render it

[!WARNING]
Render it

Example
Example of how it is done currently.

cc @sandydoo maybe we just need to update the github markdown parser?

There's probably an extension for it. I'll look into it.

We can use marked-alert for the rendering and update the CSS generator to include the alert styling.

🎉 Now to figure out how to ship this...

Now upstreamed to github-markdown-css.


Installer with (more) custom options

Description of the new feature / enhancement
Being able as a user to select the path, PowerToys & other needed items for it to are installed to (where possible),
Deciding if you want a symbol of PowerToys on your desktop, etc.
Scenario when this would be used?
 are easy and I agree with that. If you also mean to select individual PowerToys; that's probably not going to happen. (But I'm not the person in charge of that)

We've always allowed you to customize path and you can do it via cmd args too.


Fix code style in gii form generator [skip ci]

currenly, gii form generator generate the following :

            <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>

    <?php ActiveForm::end(); ?>

with this change it generate the following :

            <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>

    <?php ActiveForm::end(); ?>

Ending widget call should have individual PHP tag how the guide exaplain https://github.com/yiisoft/yii2/blob/master/docs/internals/view-code-style.md.

It already have individual php tag. There is nothing about excess empty line in that code style guide.

@creocoder @samdark
mmm, it is truth but I think this better because it is clearly and gii crud generate empty line in _form.php view.


bug: Popover does not show-up - Compatibility with Tabs

Bug Report
Ionic version:
[x] @ionic/react 5.1.0
Current behavior:
I have an IonTabButton supposed to open a popover.
It works in the browser
On Android, it does not work directly after start of the app. It works only after we touched an other TabButton.
Expected behavior:
The popover should show-up
Steps to reproduce:
Copy
https://github.com/Toto5931/ionic_popover_bug
Run Ionic serve and click on the right tab button (the 3 dots). The popover opens
Build the android app. Open the app and click on the right tab button. The popover does not open. If you click on the left tab button then the right tab button it works.
Related code:
const App: React.FC = () => {
  const [showPopover, setShowPopover] = useState<{ open: boolean, event: Event | undefined }>({
    open: false,
    event: undefined,
  });

  return (
    <IonApp>
       <IonReactRouter>
        <IonTabs>

          <IonRouterOutlet>
          </IonRouterOutlet>

          <IonTabBar slot="bottom">

            <IonTabButton tab="tab1" href="/tab1">
              <IonIcon icon={mailOutline} />
            </IonTabButton>

            <IonTabButton onClick={(e) => {setShowPopover({ open: true, event: e.nativeEvent });}} >
              <IonIcon icon={ellipsisVerticalOutline} />
            </IonTabButton>

          </IonTabBar>

        </IonTabs>

        <IonPopover
          isOpen={showPopover.open}
          event={showPopover.event}
          onDidDismiss={() => setShowPopover({ open: false, event: undefined })}
        >
          Text
        </IonPopover>

      </IonReactRouter>
    </IonApp>
  );
};

Other information:
Ionic info:
Ionic:
Ionic CLI       : 6.5.0 (C:\Users\zorro\AppData\Roaming\npm\node_modules@ionic\cli)
Ionic Framework : @ionic/react 5.1.0
Capacitor:
Capacitor CLI   : 2.0.2
@capacitor/core : 2.0.2
Utility:
cordova-res : not installed
native-run  : not installed
System:
NodeJS : v12.16.1 (C:\Program Files\nodejs\node.exe)
npm    : 6.13.4
OS     : Windows 10
Thanks

I just updated the bug report with a link to a github repo
Thanks

Thanks for the issue. I am going to close this as this is not a bug in Ionic Framework. The tab button component is not really intended to be used this way, so you are going to need to prevent its regular functionality from firing. After your setShowPopover call, you should call e.preventDefault() to accomplish this. Thanks!

Thanks a lot !


Folders with spaces do not work

When creating a new solution/project, spaces anywhere in the path will result in error, as spaces are not escaped when the dotnet new etc commands are run.

When creating a new solution/project, spaces anywhere in the path will result in error, as spaces are not escaped when the dotnet new etc commands are run.

Hi @mikael-bergstrom-ntisthlm I am on it. Thanks for reporting that. I will fix as soon as I can and release it in the new incoming version with new features.

Problem solved. Now you can create solutions/projects using folders with empty space. The solution is in the version1.2.6. Thank you again for raising the issue.
Regards


Extend One Time Code Keyspace

This pull request extends the one time code key space from 8 numeric digits to a 10 alphanumeric key space with 22 characters. The format of the new code is three groups (A,B, and C) in the following format: AAABBBCCCC. Each group an either container letters or numbers, but not both. Example codes are:
296JYYQRWE
669YES8644
ZLE9859958
446657ZWKH
628977WUYZ
EXQ699AQAW
EYH299YLER
795YHFSYLH
EAS8757467
642788EJQA

This migration will conflict with #187


Add copy, roots, and leaves methods to DepGraph.

Making a copy of a DepGraph means the copy can be mutated, so we can
use it to track execution progress while actively running a graph.
As execution continues, we can remove completed nodes from the graph
and use the roots to track nodes which are ready to run.

also part of [sc-14031]


Add auto option to CLI for mine address

Fixes #31

@kevinahuber I need some help with the merge conflicts... not totally obvious looking at it


Say how much time is left in the error message

The error message currently says Error: This pull request will be delayed 48 hours until the bake time is over. However there's less than 48 hours left. It should say something like "Error: This pull request will be delayed another 12 hours (of the 48 hours required) until the bake time is over.".

Thanks for filing, happy to review a PR.


Interface not updating with only RPC connection

During setting up Insight, I noticed that you could launch the server where it connects to the RPC port only, not p2p port. The server comes up, loads the blockchain, but then does not update the front page after that. You are still able to see new blocks etc... but nothing is updated until a restart.
I'm unsure if it is intentional to allow the app to come up only connecting to the RPC port but it might should display a notification of some sort either in the console or on the front page that the connection to the P2P port is unavailable and content will not update until the connection is restored.
I'd be glad to share more info if it would be helpful.

any fix for this yet?

I also need a fix for this asap :( sitting here with a half finished explorer. Anyone here who can fix that ?
For me it tells it can't connect to socket.io data on debug window, is it that or another probmen?

lol at best i connect to the p2p for a day or two.. at worst it takes restarting over and over every 30 seconds, and sometiems takes 20-50 tries to get it to connect and stay (for a few hours/days)
i see this issue all over github..

Syncing is no longer using RPC.


Removing Donation Check

With Locast no longer requiring donations, can the account donation check be removed?

Locust just announced they've suspended operations.  Not sure removing the donation check matters much at this point.

Yeah. It might take a bit of time, since I'm out of power because of
hurricane Ida.
On Thu, Sep 2, 2021, 08:39 johnluber @.***> wrote:

Locast just announced they've suspended operations. Not sure removing the
donation check matters much at this point.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/wouterdebie/locast2tuner/issues/102#issuecomment-911694775,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AABKABSSO67YVFDQKPDWTL3T755APANCNFSM5DJBSZOA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Not that it matters for now, but "disable_donation_check = true" in the config file.


Default parser different output on different versions

SerialPort Version: 4.0.7 & 5.x

NodeJS Version: 6.11.3 LTS

Operating System and Hardware Platform: Debian ARMv7

Have you checked the right version of the api docs?: Yes, Yes

Are you having trouble installing and you checked the Installation Special Cases docs? No, No

Are you using Electron and have you checked the Electron Docs?: No, No

Summary of Problem
As i used version 4.0.7 i got the following buffer result:
<Buffer 55 00 0a 07 01 eb a5 00 00 80 08 01 81 38 3f 00 03 ff ff ff ff 47 00 8d>
Now i'm using version 5.x and now i get the following buffer result:
<Buffer b1 31 4c fc>
As you can see the length is different. And the buffer on version 4.0.7 always starts with 55 (that's what is correct)
Steps and Code to Reproduce the Issue
port = new SerialPort('/dev/ttyS3', { baudrate: 57600 });

port.on('error', function(err) {
    console.log('Error: ', err.message);
});

port.on('data', function(buf) {
    console.log(buf);
});

From your docu of version 4 i'm using the "raw parser", because i'm didn't specify any parser.
So i thought i version 5 i'm using the same parser, didn't i?

Hmmm i don't think that this is the problem.
Then my console should show something like this:
<Buffer 55 00 0a 07>
<Buffer 01 eb a5 00>
<Buffer 00 80 08 01>
<Buffer 81 38 3f 00>
<Buffer 03 ff ff ff ff>
<Buffer 47 00 8d>

But every 10 minutes i only get one package of 4 bytes.

I wrote a custom parser based on the delimiter parser which only pushes all chucks which are comming in. But the same problem. I only got one buffer of 4 bytes every ten minutes.
Any suggestions?

The problem was that "baudrate" changed to "baudRate". So you have to use camelcase not lowercase.


DocsArchive-<IP_ADDRESS>Auto archive content

Please don't merge this PR until target archive repo PR https://github.com/OPS-E2E-PPE/docs-archive-test-target/pull/383 is merged into live branch.
Auto archive content to https://github.com/OPS-E2E-PPE/docs-archive-test-target.git

Docs Build status updates of commit 514443f:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error]

Cannot sync git repo to specified commit because branch Release_Archive_master_2020-02-04-15-29-43 has been deleted or has been force pushed: fatal: couldn't find remote ref refs/heads/Release_Archive_master_2020-02-04-15-29-43

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


it doesnt work

Why i cant edit the file

/data/user/0/com.gmail.heagoo.apkeditor.pro/files/decoded/AndroidManifest.xml:40: error: No resource identifier found for attribute 'allowNativeHeapPointerTagging' in package 'android'

The reason why you can't edit it because you're retarded

.

Close this issue lol this is not related to ArcaeaModder and such

and editing your comment is useless


BUG - DashboardView events Aren't Loading on the First Load

Describe the bug

The MaintenanceEvents on the DashboardView aren't loading, when the app is first loaded. Instead it's showing the empty screen that says "Add your first maintenance event"

To Reproduce
Steps to reproduce the behavior:

Add at least one vehicle and at least one maintenance event
Make sure the first tab that is going to open is the Dashboard (it saves the last tab when the app was closed)
Run the app and wait for the app to load and show events
The events never load, and it only shows the "empty view" that says Add your first maintenance

Expected behavior

The Dashboard tab loads the data even when it's the first tab to be open, you do NOT need to tap to a different tab, and tap back to see data

Screenshots

N/A

Device Info (please complete the following information):

Device: iPhone 15 Pro Simulator
OS: iOS 17.0
App Version: v1.0 (1)

Additional Context

Add any other context about the problem here.

@mikaelacaron , can I look into this while I wait for my existing PR to be merged ?

Yes because your other PR is CI related!
If it was iOS code related, I'd prefer to have you wait until your PR is merged incase there are changes you need to make

@mikaelacaron Since anup unassigned themselves, could I take over this?

@mikaelacaron This bug seems complicated that I thought. I checked and it seems the DashboardViewModel deinit which is why events are no longer stored in memory. I tried replacing with @State events and it seems to be okay. I will need some more time to investigate if okay with you. I will close the PR for now.

More info on when the view model get deinit:

1st load or from background to foreground: .task get called then deinit get called => No events
Switch from other tabs: .task get called then deinit doesn't get called =>  Events are shown

I tried replacing with @State events and it seems to be okay

This shouldn't need to happen, because the DashboardViewModel is @Observable
But hmm yeah this seems like it might be tricky

Sorry for being unclear, I mean change events to @State within the view itself.
This is kinda tricky but I'm thinking it has something to do with scenephase, since the view model get deinit only scenephase changes

Probably not gonna be done in time for hacktoberfest but if it's okay with you, I'll keep looking into this & keep you updated.

Probably not gonna be done in time for hacktoberfest but if it's okay with you, I'll keep looking into this & keep you updated.

That's fine, I'll look back into this afterwards too before I publish it to the App Store, but I believe this was working at first, so you may be able to go back in the commits and look for a time when it was working

If you could finish it by Dec 1 that would be great! Thanks!

Thanks so much!! I'll review it soon! I love how small of a fix it was


Support for @includes annotation

Currently if I use the @includes notation, the parser says that the notation is wrong even though it shows no issues during runtime.

Hi Rene.
Thanks for catching this. I'll take a look.
/Jim.

This appears to be related to graphql/pull/152.
It looks like a potential fix is to update graphql-js in the language service to the latest version, but there's been API and spec changes since 0.5.0.
I'll let you know how it goes.
/Jim.

Fixed in #22 for release in v1.4.0


fix crash after login while trying to open profile details URL

Details
use lodashGet for null safety of this.props.personalDetails
Fixed Issues
$ https://github.com/Expensify/App/issues/11547
PROPOSAL: https://github.com/Expensify/App/issues/11547#issuecomment-1274426698
Tests

Launch the app on web browser, sign in as User A
Open User B's profile
Copy the URL from the address bar that contains User B's email, i.e. https://new.expensify.com/details?login=manager.haxhiu%40expensicorp.com
Logout
Paste the copied URL in the address bar and hit enter
Enter your email or phone number and press Continue
Enter your password and press Sign in

[x] Verify that no errors appear in the JS console

PR Review Checklist
PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] iOS / native
[x] Android / native
[x] iOS / Safari
[x] Android / Chrome
[x] MacOS / Chrome
[x] MacOS / Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product was added in all src/languages/* files
[x] I verified any copy / text that was added to the app is correct English and approved by marketing by tagging the marketing team on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

PR Reviewer Checklist
The reviewer will copy/paste it into a new comment and complete it after the author checklist is completed

[ ] I have verified the author checklist is complete (all boxes are checked off).
[ ] I verified the correct issue is linked in the ### Fixed Issues section above
[ ] I verified testing steps are clear and they cover the changes made in this PR

[ ] I verified the steps for local testing are in the Tests section
[ ] I verified the steps for Staging and/or Production testing are in the QA steps section
[ ] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[ ] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[ ] I checked that screenshots or videos are included for tests on all platforms
[ ] I included screenshots or videos for tests on all platforms
[ ] I verified tests pass on all platforms & I tested again on:

[ ] iOS / native
[ ] Android / native
[ ] iOS / Safari
[ ] Android / Chrome
[ ] MacOS / Chrome
[ ] MacOS / Desktop

[ ] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[ ] I verified proper code patterns were followed (see Reviewing the code)

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product was added in all src/languages/* files
[ ] I verified any copy / text that was added to the app is correct English and approved by marketing by tagging the marketing team on the original GH to get the correct copy.
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

[ ] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[ ] I verified that this PR follows the guidelines as stated in the Review Guidelines
[ ] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[ ] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[ ] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[ ] If a new component is created I verified that:

[ ] A similar component doesn't exist in the codebase
[ ] All props are defined accurately and each prop has a /** comment above it */
[ ] The file is named correctly
[ ] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[ ] The only data being stored in the state is data necessary for rendering and nothing else
[ ] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[ ] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[ ] All JSX used for rendering exists in the render method
[ ] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[ ] If a new CSS style is added I verified that:

[ ] A similar style doesn't already exist
[ ] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

QA Steps

Launch the app on web browser, sign in as User A
Open User B's profile
Copy the URL from the address bar that contains User B's email, i.e. https://new.expensify.com/details?login=manager.haxhiu%40expensicorp.com
Logout
Paste the copied URL in the address bar and hit enter
Enter your email or phone number and press Continue
Enter your password and press Sign in

[ ] Verify that no errors appear in the JS console

Screenshots
Web
https://user-images.githubusercontent.com/96077027/196033313-8c67360d-60a2-4a6a-ae31-9f0433fae67d.mov
Mobile Web - Chrome
https://user-images.githubusercontent.com/96077027/196033288-0e007f10-f488-40db-9bfc-0ae4a0b6553d.mp4
Mobile Web - Safari
https://user-images.githubusercontent.com/96077027/196033308-a93a71c5-65c3-46a1-b734-7f5a8f0be38e.mov
Desktop

iOS

Android

are you 🟢 with this?

Let's get confirmation from @Beamanator before making the change.

@sobitneupane - Feel free to give your opinion too on the suggested change if you want :D I think it's 👍 - I see we do that in lots of other pages & it looks fine to do here too 👍

@aimane-chnaif let's go with your suggested change. But please do make sure, there are no console errors and the result are as expected in each platform.

While testing this PR, I noticed that similar crash occurs when user open details page, participants page and settings page of a room. Do we want to fix the issue as part of this PR?
https://user-images.githubusercontent.com/25876548/196438664-aecbe218-1755-472e-a0d8-8458142bb198.mov
cc: @Beamanator

Good question @sobitneupane ! And good find - I think that issue is "different enough" that we can handle it in a separate Job, I'll make an issue for it & mention that you reported it 👍

Thanks @aimane-chnaif 👍

All tests were passing 😠

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by @Beamanator in version: 1.2.19-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by @chiragsalian in version: 1.2.19-2 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


The sample plugin doesn't tree shake this library.

If one compiles their Plugin with this Library, using the esbuild (or old rollup config) from the sample Plugin, all provided methods are included, even the ones that aren't used.
I am not sure if this is an Issue of this Library or the sample Plugin configuration, and while the Library is pretty small it's also not that big of a deal, but it might become one in the Future.

Huh, I guess I assumed that exporting each function individually would solve this.
Does it work if you import only the necessary functions import { func } from 'lib' instead of import * as ocl from 'lib'

The issue is that there's no ESM files in the distribution.  Switching the build from CommonJS to ESM should resolve it.
(Long version: dist/index.js uses everything it imports to set up an export object, so tree shaking isn't practical.  An ESM build of the module would have exports that would be understandable by rollup as being modular and tree-shakeable.)


netappfiles volume update --usage-threshold confuses GB and TB when sanitizing input

Describe the bug
The netappfiles volume update --usage-threshold parameter only accepts input from 100 to 2400. The REST API documentation shows that the input is from 100 GB to 2400 TB. The means azure CLI cannot resize a volume less than 100TB.

Please fix this because our team needs to automate volume resizing less than 100TB.
Related command
netappfiles volume update --usage-threshold
Errors
N/A
Issue script & Debug output
N/A
Expected behavior
Should resize volumes between 100GB and 2400TB.
Environment Summary
azure-cli 2.61.0
core 2.61.0
telemetry 1.1.0
Dependencies:
msal 1.28.0
azure-mgmt-resource 23.1.1
Python location '/opt/az/bin/python3'
Extensions directory '/home/hpcadmin/.azure/cliextensions'
Python (Linux) 3.11.8 (main, May 16 2024, 03:47:41) [GCC 9.4.0]
Legal docs and information: aka.ms/AzureCliLegal
Your CLI is up-to-date.
Additional context
No response

Thank you for opening this issue, we will look into it.

Tried a few newer version but tried 2.51.0 instead which is working. Parameter for subnet-id is different. It's -subnet instead of -subnet-id.... but it works. I conveyed the same to customer w/ link for download per documentation.
The linked github article is for resizing and mostly seems related to Large Volumes.  I think we need a unique bug for volume creation and regular volumes also.

This issue with --usage-threshold was fixed in https://github.com/Azure/azure-cli/pull/29389
@DogFace2234 regarding the subnet the command acceppts --subnet and --subnet-id


Should ztunnel forward tcp traffic to waypoint?

Describe the feature request
In  Ambient mode, consider this example scenario:
Both sleep and tcp-echo are deployed in  default namespace,  which is labeled ambient, and a default waypoint is deployed.

The sleep and tcp-echo pods are dispatched to different nodes.

Use this command to deploy a namespace-level waypoint in the default namespace.
istioctl x waypoint apply --service-account

If we send request to tcp-echo from a sleep pod, the request will be forwarded to the waypoint regardless of whether the request destination is the tcp-echo clusterIP, podIp, or tcp-echo serviceName.
The traffic path is as follows：
[ sleep -> ztunnel ] -> waypoint -> [ ztunnel -> tcp-echo ]
This shouldn't make much sense, since the sleep request tcp-echo is a simple tcp request, not an L7 request (http / gRPC or others L7 protocols).
I think the ztunnel (L4) should be able to recognize the protocol of the target port and decide whether to forward the request to the waypoint.
btw, we can borrow some of the service port specifications we already have in sidecar to accomplish this.
Describe alternatives you've considered
Affected product area (please put an X in all that apply)
[x] Ambient
[ ] Docs
[ ] Dual Stack
[ ] Installation
[x] Networking
[ ] Performance and Scalability
[ ] Extensions and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure
Affected features (please put an X in all that apply)
[ ] Multi Cluster
[ ] Virtual Machine
[ ] Multi Control Plane
Additional context

Waypoint is not intended to do L4 proxying now. Of you want L4 proxy, why not ztunnel-> ztunnel suite

Waypoint is not intended to do L4 proxying now. Of you want L4 proxy, why not ztunnel-> ztunnel suite

@hzxuzhonghu
Since the namespace level waypoint is configured , the existing implementations of ztunnel  will forward L4 requests （such as tcp echo ) to waypoint.
I don't think it makes sense.  This is a bug if our design shouldn't forward L4 requests to waypoint.
The question can be raised as to whether ztunnel should forward L4 requests to waypoints, assuming that the user has configured a waypoint for a specific service such as tcp-echo. This is a useless process, though.

AH i missed that. It is unexpected to redirect TCP traffic to waypoint

I'm working right now on better waypoint capture. You'll be able to have a ns-scope waypoint but annotate svc/wl to opt out of waypoint. It's not based on tcp vs http though.

I disagree that waypoints should not ever do TCP. Of course, HTTP is the primary value add and most important delta in functionality between ztunnel and waypoints. But not the only one. Waypoint can do all sorts of things like:

"Upgrade" to an L7 protocol (kafka, mysql, etc)
WASM, ext_authz, ...
Simply moving policy application from client side to producer side

There is use case they donot need such advanced feature, just pure TCP proxying, and for this, we should not redirect traffic to waypoint

There is use case they donot need such advanced feature, just pure TCP proxying, and for this, we should not redirect traffic to waypoint

That's what I meant, if the service is explicitly declared as tcp, and not some other specific protocol (http、gRPC、kafka、mysql, etc) , then ztunnel shouldn't be forwarded to waypoint.

We're working on a new waypoint capture mechanism that would let you opt out a svc or workload from waypoint explicitly even if you have a waypoint declared for the entire namespace.
https://github.com/istio/istio/issues/49436

We're working on a new waypoint capture mechanism that would let you opt out a svc or workload from waypoint explicitly even if you have a waypoint declared for the entire namespace.
#49436

@ilrudie
Suggestion: Consider having a global configuration that uses the Service port name as a basis for making decisions. Specifically, if a port is explicitly declared to use the TCP protocol, as opposed to HTTP or other well-known protocols (such as MySQL, Kafka, etc.), then the traffic should not be forwarded to the waypoint.


Expose the tuning options via expvar

Requirement - what kind of business use case are you trying to solve?
It's not possible to check what's the current value for different tuning options, such as:
--collector.num-workers
--collector.queue-size
--discovery.conn-check-timeout
--discovery.min-peers
--memory.max-traces
--processor.*.server-max-packet-size
--processor.*.server-queue-size
--processor.*.workers
--reporter.tchannel.discovery.conn-check-timeout
--reporter.tchannel.discovery.min-peers
--reporter.tchannel.report-timeout

Proposal - what do you suggest to solve the problem or improve the existing situation?
During the startup process, store values in expvar variables and make sure /debug/expvar is always mounted on the admin port (right now it is only mounted if --metrics-backend=expvar is specified).

Good idea. the only issue I foresee is that some metrics systems (in particular, Uber's M3) flush all metrics periodically, which results in the single data point in the time series db, thus if you're looking at the last hour of metrics and that point was earlier, you won't get any data.
Perhaps instead of metrics (which are meant for time series, even if gauges), these values are better exposed via expvar.

That would work too.

@Abhi-khandelwal - would you like to give this a shot?
expvar is an interface which helps to instrument and expose metrics from a golang application, you can read more about it here - https://sysdig.com/blog/golang-expvar-custom-metrics/

@annanay25, yeah sure.

I am picking it up.

@chandresh-pancholi take a look at how the components are bootstrapped, like the collector. Look for the bootstrap of the Admin HTTP server, as that's where the metrics should be (including the expvars). As @yurishkuro mentioned, you probably want to use expvars directly, but I think we might have a few places where they are then exposed via /metrics as well.
Once you know where the code should live, you probably just need to get the relevant Options objects to the place that will expose them.
Let me know if you get stuck!

@chandresh-pancholi @yurishkuro is this one "in-progress" or I could pick it up?

I don't think anyone's working on it, it's been idle since Feb

Alright, then I'll work on this

Looks like some of the options are deprecated or were removed:
--discovery.conn-check-timeout
--discovery.min-peers

became deprecated in https://github.com/jaegertracing/jaeger/pull/1092
--reporter.tchannel.discovery.conn-check-timeout
--reporter.tchannel.discovery.min-peers
--reporter.tchannel.report-timeout

removed in https://github.com/jaegertracing/jaeger/pull/2115

It is best not to rely on the exact list of parameters in this ticket, but look at the up-to-date list at https://www.jaegertracing.io/docs/1.19/cli/.
Also, it's ok not to cover every single parameter, as long as we establish a clean framework & nomenclature for adding them.


VC issued by Dutch Blockchain Coalition is not accepted by Sphereon website

get the card from : https://ssi.dutchblockchaincoalition.org/#/information/manual/request
:coche_blanche:
1
11:30
and present it to : https://ssi.sphereon.com/demo/issuer/#/credentials/verify/vp/request


refactor: deposit flow enhancement

Key changes
Use Default RPCs Map:

Implemented a default mapping for RPCs to streamline interactions

Remove RPC from External Interface:

Refactored the external interface to eliminate direct RPC dependencies, enhancing encapsulation

Refactor Deposit Machine:

Updated the deposit machine to rely on the default RPCs, improving maintainability

Clean Up Deposit Form:

Simplified the responsibilities of the deposit form

[IMPORTANT] Remove ethers:

Replaced the ethers library with Viem for better performance and compatibility

Add Estimation Services:

Introduced estimation services to provide information on transaction costs and limits

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

GitHub release
npm package (@latest dist-tag)

Your semantic-release bot :package::rocket:


Fixed #30673 -- Relaxed system check for db_table collision when database routers are installed by turning the error into a warning.

https://code.djangoproject.com/ticket/30673

buildbot

@carltongibson Thanks, agreed, lets keep the same message and we can add your suggestion as a hint, I will update this later today.


The response time of APNs become longer and longer

We use pushy(0.13.8) to call APNs. In our business scene,  we need push about ten million notifications in a period of time. The QPS reach our expectations at the beginning of these calls, but APNs's response time become longer and longer as time goes by.  To conclude, APNs response time is unstable.
It is uncertain  whether APNs limits the number of push notifications for one app.   But check the https://developer.apple.com/library/archive/technotes/tn2265/_index.html#//apple_ref/doc/uid/DTS40010376-CH1-TNTAG44 says

There are no caps or batch size limits for using APNs

So, why this happens, anyone has the same problem as I encountered ?

I think we'll need some more information to assess this problem.
Can you say more about how much the response time changes? What kinds of response times do you see at the beginning of the batch? At the end? Do you see proportional increases in CPU/memory consumption?
And if you send a second batch with the same client, does it start fast and end slow, or does it start at a slow speed?
Actually, that's another important question: how many clients are you using, and how many connections does each have?

Thanks for your reply. More information is as follows:

Machine and basic config
cpu:4core
mem:8g
connections:8
threads:4

CPU and Throughput
Throughput(k/m)    282  391 313 233 226
cpu(%)    33.5 65.1 59.1 50.1 45.5

every client has the same behavior described above

we use the Semaphore to limit the number of calls every seconds(6500 calls/s). And we log the time-consuming for each call in the operationComplete method.  we found the response time can change from 160ms to 800ms or even worse.

So to explore your situation a bit more, are you trying to send the entire batch of notifications through a single client, or are there multiple clients in play?
So if you send a big batch and, by the end, notifications are taking 800ms, what happens if you let the client "rest" for a while, then try sending notifications again? Does it pick back up at 800ms, or does it go back down to 160ms?

Only one apnsClient for app.

t1mek1ller closed this 4 hours ago

Wait—so what was up? How did you resolve this?

Sorry for not reply in time. After check the count of response for one second, we found it was stable for just one ApnsClient(one app). So I think many requests were waiting in the memory queue and hit the limit for in-flight notifications after a period of time.


Update README.md

Description
Add missing parentheses in the OkHttp description.
Motivation and Context
Improved Readme sample codes.
Types of changes

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[ ] My change requires a change to the documentation.
[x] I have updated the documentation accordingly.
[ ] I have added tests to cover my changes.

👍


'ModbusHub' object has no attribute 'async_pymodbus_call' 2023.9

Hello, just updated to 2023.09.b0 to test and got the below error. I am unable to clearly determine what the core issue is, but perhaps you can ?
Logger: homeassistant.config_entries
Source: custom_components/nilan/device.py:120
Integration: Nilan (documentation, issues)
First occurred: 10:50:22 (1 occurrences)
Last logged: 10:50:22
Error setting up entry Nilan for nilan
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 387, in async_setup
result = await component.async_setup_entry(hass, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/nilan/init.py", line 41, in async_setup_entry
await device.setup()
File "/config/custom_components/nilan/device.py", line 61, in setup
hw_type = await self.get_machine_type()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/nilan/device.py", line 120, in get_machine_type
result = await self._modbus.async_pymodbus_call(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'ModbusHub' object has no attribute 'async_pymodbus_call'

Hi,
Can't replicate this with dev0, on 2023.09 yes. I suspect this issue is already fixed on HA side.

https://github.com/home-assistant/core/issues/99784

https://github.com/home-assistant/core/pull/97780/files

I can not fix this issue fully right now. We will have to wait for an update for HA. The pymodbus wrapper in HA is broken. If this is not fixed I will have to make my own, but not looking forward to that.
Will push my progress to dev, so you can try it yourself.

@veista - thank you! 🍺

hi,
Is the problem not related to a name-change in the ha-modbus wrapper-lib?
https://github.com/home-assistant/core/commit/bbc34bae87d2c5fac4e1bb89831dd427ccc8c2c1#diff-2665704d3ee341f20f11d81ce07da5575297bf5c2dc1cb6623c92d6f62ed8e1a

hi,
Is the problem not related to a name-change in the ha-modbus wrapper-lib?
https://github.com/home-assistant/core/commit/bbc34bae87d2c5fac4e1bb89831dd427ccc8c2c1#diff-2665704d3ee341f20f11d81ce07da5575297bf5c2dc1cb6623c92d6f62ed8e1a

Concider reading the issue. Yes that is one problem. You can download the fix for that from dev. Even though I implemented that change, it does not work. I spent a couple of hours debugging and figured that the new pymodbus version is not fully compatible with the wrapper used in HA.

@veista - thank you! 🍺

Than you for your continuing support!

hi,
Is the problem not related to a name-change in the ha-modbus wrapper-lib? home-assistant/core@bbc34ba#diff-2665704d3ee341f20f11d81ce07da5575297bf5c2dc1cb6623c92d6f62ed8e1a
I've replaced it locally in device.py async_pymodbus_call -> async_pb_call and now all entities are there again and updating
No exceptions in the HA Logs either so far

Are you running with Modbus tcp or serial?

Modbus Serial
I'll monitor it for some time if it stops working and maybe add the suggested error-handling arguments
( retries: 3, retry_on_empty: true, close_comm_on_error: false )
@veista - great job btw. I love this integration 🍺

Modbus Serial
I'll monitor it for some time if it stops working and maybe add the suggested error-handling arguments ( retries: 3, retry_on_empty: true, close_comm_on_error: false )
@veista - great job btw. I love this integration 🍺

OK. Then it seems to me that only the TCP side is broken or it depends also on the bridge device.

Can you test the dev branch if it works for you?

"dev" branch did not work unfortunately
DEBUG (MainThread) [pymodbus.logging] Connecting to /dev/ttyUSB0.
DEBUG (MainThread) [pymodbus.logging] Connecting comm
DEBUG (MainThread) [pymodbus.logging] Connected to comm
DEBUG (MainThread) [pymodbus.logging] callback_connected called
DEBUG (MainThread) [pymodbus.logging] send: 0x1e 0x3 0x3 0xe8 0x0 0x1 0x6 0x15
DEBUG (MainThread) [pymodbus.logging] Adding transaction 30
DEBUG (MainThread) [pymodbus.logging] recv: 0x1e 0x3 0x2 0x0 0x23 0x6c 0x5f addr=None
DEBUG (MainThread) [pymodbus.logging] Processing: 0x1e 0x3 0x2 0x0 0x23 0x6c 0x5f
DEBUG (MainThread) [pymodbus.logging] Getting Frame - 0x3 0x2 0x0 0x23
DEBUG (MainThread) [pymodbus.logging] Factory Response[ReadHoldingRegistersResponse': 3]
DEBUG (MainThread) [pymodbus.logging] Frame advanced, resetting header!!
DEBUG (MainThread) [pymodbus.logging] Getting transaction 30
ERROR (MainThread) [custom_components.nilan.device] Could not read get_machine_type
ERROR (MainThread) [custom_components.nilan.device] Could not read get_bus_version
INFO (SyncWorker_11) [homeassistant.components.modbus.modbus] modbus Nilan communication open

master branch with replacement of method-name (async_pymodbus_call -> async_pb_call) worked though

Well that seems fairly odd since there should be no difference (I get this error too almost always, sometimes it works for a minute). From manifest.json could you change the minimum requirement for pymodbus to 2.4.1 and try again?

wasn't the issue but rather:
diff --git a/custom_components/nilan/device.py b/custom_components/nilan/device.py
index 95a28fd..c8d6946 100644
--- a/custom_components/nilan/device.py
+++ b/custom_components/nilan/device.py
@@ -38,7 +38,7 @@ class Device:
             "name": self._device_name,
             "type": self._com_type,
             "method": "rtu",
-            "delay": 1,
+            "delay": 0,
             "port": self._host_port,
             "timeout": 1,
             "close_comm_on_error": "false",

wasn't the issue but rather:
diff --git a/custom_components/nilan/device.py b/custom_components/nilan/device.py
index 95a28fd..c8d6946 100644
--- a/custom_components/nilan/device.py
+++ b/custom_components/nilan/device.py
@@ -38,7 +38,7 @@ class Device:
             "name": self._device_name,
             "type": self._com_type,
             "method": "rtu",
-            "delay": 1,
+            "delay": 0,
             "port": self._host_port,
             "timeout": 1,
             "close_comm_on_error": "false",

That is funny. On my setup I cannot even connect with delay 0 on 2023.9

HA 2023.9.1 has updated pymodbus to 3.5.1
have you tried that already?
let me know if i should help testing.

Yeah although I'm not smart enough to help fix anything I did update to 2023.9.1 last night - both this Nilan modbus integration and the one I use for my Solax inverter are still having issues. 😥

HA 2023.9.1 has updated pymodbus to 3.5.1
have you tried that already? let me know if i should help testing.

Noticed this morning that they pushed a new update. Will try today... I'm leaving on a trip again tomorrow so lets hope it works. Will anyway push a beta release so if it gets fixed on HA you can get this integration working again.

Yeah although I'm not smart enough to help fix anything I did update to 2023.9.1 last night - both this Nilan modbus integration and the one I use for my Solax inverter are still having issues. 😥

I had to also go back to 2023.8.4 since the new update broke also z-wave and other stuff... I recommend going back and skipping this months release. I suspect it will take time untill all of the problems get fixed.

Also I suspect the issue #76 already has symptoms of something not working right with modbus. Though it has nothing to do with the root cause of that.

https://github.com/home-assistant/core/issues/99784#issuecomment-1712434631

HA 2023.9.1 has updated pymodbus to 3.5.1
have you tried that already? let me know if i should help testing.

Tried the latest versions. Still the issues remain unfortunately. Released the partial fix as beta and reverted delay to 0.

Hi,
Updated to freshly released 2023.09.2, and with 1.2.5B of integration it all works perfectly now. All entities as normal.

REsolved with 2023.09.2 and 1.2.5B

Having a similar issue. Updated to 1.2.5B but still "Failed to connect" when I try to re-install the integration. To the log it gives the following error:
This error originated from a custom integration.
Logger: pymodbus.logging
Source: custom_components/nilan/config_flow.py:56
Integration: Nilan (documentation, issues)
First occurred: 10:45:08 PM (3 occurrences)
Last logged: 10:47:46 PM
Failed to connect [Errno 111] Connect call failed ('<IP_ADDRESS>', 502)

Having a similar issue. Updated to 1.2.5B but still "Failed to connect" when I try to re-install the integration. To the log it gives the following error:
This error originated from a custom integration.
Logger: pymodbus.logging Source: custom_components/nilan/config_flow.py:56 Integration: Nilan (documentation, issues) First occurred: 10:45:08 PM (3 occurrences) Last logged: 10:47:46 PM
Failed to connect [Errno 111] Connect call failed ('<IP_ADDRESS>', 502)
I restored an older full backup, and the integration works ok again on that so I assume that the bridge device is working OK. I have a RP4 and usb to rs485 adapter.

Had a similar issue on my dev environment. Could not replicate once is magically started working. Try the new release 1.2.6. If the issue remains just keep trying to install it again. The issue is somehow in the config flow, but cannot pinpoint the cause.

Bumped to 1.2.6 with a HA restart after installing the HACS module. Still unable to install the integration:
Logger: pymodbus.logging
Source: components/modbus/modbus.py:396
First occurred: 12:01:22 PM (269 occurrences)
Last logged: 12:10:07 PM
Connection to (<IP_ADDRESS>, 502) failed: [Errno 111] Connection refused

It seems to me that for some reason the usb adaptor is busy. I will try and simulate this issue in my dev environment when I have time. Have you tried to do a Full reboot of your system? Power off and power on?

Ok. So I think I misunderstood your setup. You have made your own bridge device with a RPi and an USB adaptor?
The newer pymodbus is at the moment much less forgiving than the old one, so it might be an issue in both ends. I'll read the documentation again and try to figure out if I'm missing something in the update.

Just to inform, the setup with 1.2.6 works ok now. I just restarted all, including the bridge device also. Did not need to manually touch anything, and the integration is now up and running ok. Thanks for the great piece of code 💪🏻


AArch64: Enable kernel fragment on aarch64

Hi guys @kata-containers/kernel @grahamwhaley
I've been trying to enable kernel fragments on arm64. It's quite a large patch, plz review. ;)

Hi guys
Could you plz add a WIP tag here?? I've waiting for https://github.com/kata-containers/packaging/pull/998

@Pennyzct - label added. Note that you get the same behaviour (of stopping the PR from being merged) if you add "WIP" to the title of the PR.

@jodh-intel thanks for the explanation. ;)

/test-ubuntu
because I'm curious...

@Pennyzct - np, it's documented in the table here: https://github.com/kata-containers/community/blob/master/CONTRIBUTING.md#temporarily-blocking-a-pr.

Hi guys @grahamwhaley @amshinde
I've re-based and addressed a few comments. ;)
The metrics report on boot-up time and memory footprint is here. For boot-up time, we have 3%~5% decrease after importing kernel fragments.
And for memory foortprint, we only could run a few tests, since we need a few extra configuration to run memory hotplug(need to boot from uefi). Still, we could see around 6% decrease on memory footprint with ksm and without ksm.
Still, we have a few configs left to discuss:
CONFIG_RANDOMIZE_BASE=y
CONFIG_PERF_EVENTS=y and CONFIG_CGROUP_PERF=y

Hi guys
I will let config_perf_events on arm64 for consistency.
And BTW, in @justin-he's new PR, https://github.com/kata-containers/runtime/pull/2577/commits/105673bd9d4c505f05f5d16ccec533bcf96e7b32, we will add pmu=off in qemu command line to deliberately turn off pmu, since pmu will cost significant overhead on boot time and virtualization context switch.

Hi guys
I've added a new commit to enable kvm-ptp, plz re-review. ;)
And I've done all the work here, so maybe we could remove the wip flag here.
And btw, since we have no arm jenkins job here in packaging, I raised a PR https://github.com/kata-containers/runtime/pull/2602 in runtime repo to run all tests.

Hi @justin-he
15:02:13 virtcontainers/qemu_arm64.go:28: File is not `gofmt`-ed with `-s` (gofmt)
15:02:13 var defaultGICVersion  = uint32(3)

you may want to do gofmt on virtcontainers/qemu_arm64.go. ;)

/test-ubuntu

/AzurePipelines run

obs ci is not responding. ;)
Need help trigger it~~~

/AzurePipelines run

Hi guys
CI is all happy now~~~~~~🎉🎊


LICENSE

I've used some of your code, parts of payload.s and the shell catching part of 0xdeadbeef.c. I'd appreciate if you give this project a license as I want to open source my version and give credit to you.

Here you go: 85b47efa9174a34874c65c281077057f697edf83 :-)

Hahaha had a feeling you'd choose that, thanks!

Sorry to bug you again but I have to go through my works legal to release my fork and they have no sense of humor. Could you use the BSD license or something?
I have it so that it works against any kernel (in a hackish way) and it uses proc self mem so it works with seccomp on. So Im hoping curiousity might persuade you to change it :-)

I am not a lawyer but I think the WTFPL is GPL-compatible and approved by the FSF. Anyway, commit 0fe910a1e45a21a45ab08a02920312ba983a190b updates the projet under the MIT license.

Sick! Thanks again!


Workflow r0 dl3 - stage 1

Modification of the 4 main scripts of the full workflow so that they can be run independently AND within the script that runs the full workflow (to be pulled when this stage is revised).
Documentations has been added. Typos, PEP8 cleaning and misleading variables have also been  modified.
Minor points are identified and marked as #TODO (job management, few functions not working from data_management.py). Will be solved in next iterations.
Issue #10 is solved in this PR.

(Stage 2).
Script to run the full workflow added to the PR.
Call the four previous scripts and manage the full workflow, keeping logs and passing through the different stages the jobids use as dependencies.


How is auto deploy intended to work?

Description

Hi,
first of all, thanks for this great template. It really helped me creating more complex userscripts.
I am currently in the process of getting automated deploys running and it already works to the point where a packed index.prod.user.js file gets commited to the preview-dist branch.
But how is it intended to deploy to the gh-pages branch?
Should I just create a v* branch and commit to it so the deploy workflow gets triggered or is there another intended - automated way to do so?
Thanks for your help!

preview-dist is build from master branch https://github.com/trim21/webpack-userscript-template/blob/master/.github/workflows/deploy-preview.yaml#L28C27-L28C39
gh-pages branch is build from latest tag

Makes sense.
Thanks for your quick response!


Subtitles are not fitting their usual format

Describe the bug
When I download an episode with the crunchy-cli command, the subtitles are in a weird format, not matching crunchyroll's.
To Reproduce
Steps / command to reproduce the behavior:

Download an archive
Read the file with a video player (I'm using VLC)

Expected behavior
Subtitles should look like this :

Screenshots
But instead it looks like this :

Client (please complete the following information):

OS: Mac Ventura (M1, 2020) + Windows 10
Version : v3.6.2

What was the exact command you were using?

I used this :
crunchy-cli archive -a ja-JP -s fr-FR --default-subtitle fr-FR -o "E{episode_number} - {title}.mkv" https://www.crunchyroll.com/fr/watch/GRQ49EP1Y/come-back-robin-showdown-with-cp9

Also tried with "--include-fonts" argument but it was the same result

Works like a charm now, thanks !

The fix is now also available in v3.6.3


Access a library in gitlab maven repo from a cloud function

Im trying to access a custom library deployed in gitlab maven repo in a java cloud function. I have added the location to the gitlab repo path inside the repository tag in pom.xml and the dependency is also in pom.xml. There is a settings.xml added with a token to access the gitlab repo. But still it fails to download the library.
Please confirm if this can be done and if so whether the approach I'm following is correct or not.

I don't think this question belongs in this repo. Maybe it would be more appropriate to ask here.
One thing to consider is that you can just build the jar for GCF locally and deploy it without relying on the build happening on the server.
cc/ @eamonnmcmanus

When uploading the jar file directly it gives the following error:
Build failed: function has neither pom.xml nor already-built jar file; directory has these entries: .googlebuild, BOOT-INF, META-INF, org; Error ID: 438702a3

Based on the error message, it appears that what you're uploading is not a jar file.
In any case, please try following the instructions found here.

Tried the steps given in the link above. The fat jar(has the dependencies from the private gitlab maven repo) did get created in the target/deploy folder but when the gcloud command was ran to deploy it the following error was thrown:
Function failed to load user code.

@Tritpi Would mind trying to run the sample, and then we can debug from there? Thanks!

Closing due to inactivity from OP.


Updated s3manager to actually use the custom headers, should fix aws-sdk-go#240

While UploadInput for s3manager had all the usual headers/options available, none of them were taken into account by the functions performing the actual uploads. This patch should fix that. Updated tests as well as tested it manually and it works as expected.

The goal is to use reflection to do this so we don't have the maintenance burden of copying all those attributes over. That's why we haven't tackled this one yet.

Reflection as in locally to just populate the exiting fields on the request automatically? Something like:
reflect.ValueOf(&opts).Elem().FieldByName(key).SetString(val)

(with proper error checking of course) ? Or something else, at higher level across the entire SDK maybe?

@alexaandru yes, only for these structures, not across the entire SDK. We know that the members in UploadInput match 1:1 to the UploadPartInput and PutObjectInput structures respectively, so we can set them all using member reflection rather than hardcoding each individual member.

Awesome, thank you :)

May be able to use aws/awsutil: Copy. It copies one structure fields to another's where they match by type and name.

+1
(in need for this or similar to land)

I gave the reflection a try (including the awsutil.Copy) but no luck. It just lead me from one error to another so far. I must admit I have zero experience with writing reflection based code in Go.
Any chance you could accept my patch until someone offers a reflection based alternative? At least we could start using this feature right away. Thank you.

AFAIK @jasdel had a work in progress solution that he wasn't too far away on.

That sounds great then, thank you! :)

I just pushed an update which merges @alexaandru's change with a slightly refactored awsutil.Copy to allow coping between different struct types.

@alexaandru thanks again for getting this started and submitting the PR, going to close this as the issue should now be resolved.

That is awesome news, thank you so much! :)


The program crashes when nothing abnormal happens

'The program has unexpectedly finished' with this minimal code:
int main (void) {
  struct Pos { float x, y; };
  auto registry = entt::DefaultRegistry<Pos>{};
  auto entity = registry.create<Pos>();
  return 0;
}

And no, with this addition of code to the end:
#ifndef NDEBUG
  registry.reset();
#endif

It seems to me that this confusing behavior, depending on the NDEBUG definition, looks bad, as well as this part of the code:
~SparseSet() noexcept {
  assert(empty());
}

In production environment I usually want to be sure that all the entities have been correctly deleted, thus all resources have been correctly released.
That's why there is an assert in debug mode to force a call to reset at the end of the process.
It works as expected, this is not a bug, I'm sorry.

But you do not get what you want. Look at your code:
~SparseSet() noexcept {
  assert(empty());
}
bool empty() const noexcept {
  return direct.empty();
}
std::vector<index_type> direct;

From the standart:

After executing the body of the destructor and destroying any automatic objects allocated within the body, a destructor for class X calls the destructors for X’s direct non-variant non-static data members, the destructors for X’s non-virtual direct base classes and, if X is the type of the most derived class (15.6.2), its destructor calls the destructors for X’s virtual base classes. ...

So, direct's (object of std::vector class) destructor will be guaranteed to be called. Checking direct.empty() is not needed.
Moreover, according to the standard, this check is not correct. Since the destructors of class members (direct.std::vector::~vector()) will be called after execution of ~SparseSet() body. That's why you always (without NDEBUG definition) get an abnormal program termination, even if nothing wrong has happened.

Actually no, if you call registry.reset(); (that is the recommended way) everything works just fine.
I can partially agree on the fact that components would be destroyed in any case, but I'm reworking the ECS to use raw storage (aka chars), thus it won't apply anymore.
That being said, I don't see the problem of invoking reset before to destroy the ECS yet, I'm sorry. What's the real problem you are experiencing?

Why not just add registry.reset() (maybe with #ifndef NDEBUG ... #endif) to ~SparseSet() instead of assertion?
The problem is that the program terminates incorrectly when it should.

Mainly because the reset can throw (it depends on the components' types and we have no control over them) and to check that components have been properly destroyed is easier, faster and safer. Moreover because I want to be sure I've destroyed all the components on purpose when I destroy the registry. I don't want it to hide issues around by cleaning up my data.
Again, I don't see the problem with calling reset before to discard the registry yet, if any.

Direct calling of reset is unobvious. And it breaks RAII idiom.

Actually RAII idiom is something slightly different from what you got if you find this breaks it. And unobvious is something undocumented, that isn't the case for the requirement of calling reset.
I'm sorry but you can have the cake and eat it with EnTT, at least with version 1.x (the current master). Version 2.x on which I'm working on right now won't have that assert probably, so stay tuned if you are interested.

The STL, a good example of idiomatic C++, never requires me to call smth like reset() (release? clear? free?) directly to not abort my program. Because of (thanks to Wikipedia):

.. resource deallocation is done during object destruction, by the destructor. Thus the resource is guaranteed to be held between when initialization finishes and finalization starts, and to be held only when the object is alive.

That's why I described this requirement as unobvious. I mean unexpected. I am sorry for my English. (It is far from my native language. Which is Russian.)
One more thing. As far as I understand, since C++11 no erase(), clear(), pop_back(), pop_front() function throws an exception, SparseSet<Index>::reset, SparseSet<Index, Type>::reset, etc may have noexcept specifier.
Anyway, thank you for your work. I feel the pulse of EnTT progress. Your library is very fast and it has must-have feature for me: it can sort components in memory. Good luck!

Just a question.
If I succeeded to remove the requirement of statically specifying components when users declare the registry, so that you can do this:
Registry registry;
auto entity = registry.create<Position>();
// ...

Do you think it could be a nice to have feature? I'm interested in the opinion from users.
The price to pay is a potential performance hit when you create components, that's all. Performance should be unaffected.
Moreover multicomponent views should reach the performance of single component views and still nothing to specify at compile-time time.
What about?
That's something I'm working on...

I do not see a big difference. In both cases, types of components must be known at compile time, right? But, if multicomponent views will really gain performance boost, it sounds good for my goals. Considering that I don't create dozens of objects at each loop of the program's main cycle.

If the pool (sparse array) is used only within the library, then it does not matter who manages its contents. But for the registry, which is used as a public API, following the RAII idiom (including release of components without outside help) would not be superfluous. Compare this:
auto registry = std::make_shared<Registry>(); // it works like charm

With this:
std::shared_ptr<Registry> registry (new Registry(), [](Registry* r){ r->reset(); });
// thanks to lambda I don't need to use monstrous std::bind,
// anyway code looks weird and it has two memory allocations instead of one

Following the idiom in this case not only frees users from manual memory management, but also makes registry easier to use in C++ code.
But you're right, I do not understand why that assert() is needed. What's a reason to force users clear registry explicitly? Why not use registry's destructor? I'll try to figure it out the other day.

Well, the biggest difference should be in terms of compilation time when you change the components list or a component definition. The registry is included in all the files that work with components, the single component affects only a few files. In large projects it means you have far less files to recompile.
Other differences exist but have not that impact indeed.

I prefer to avoid OOP in my code.  }

// ED.hpp: // rendering system
#include "E.hpp"
#include "D.hpp"
void draw (E const& es, int s) {
  set_draw_state(s);
  for (auto& i: es.view<B>()) { draw(e.vertices); }
}

// P.hpp: // external printing library
void print (char[256]) { ... }
void print_colored (char[256]) { ... }

// EP.hpp: // printing system
#include "E.hpp"
#include "P.hpp"
void print (E const& es) {
  for (auto& e: es.view<B>()) { print(e.string); }
}
void print_colored (E const& es) {
  for (auto& e: es.view<B>()) { print_colored(e.string); }
}

As you can see, there is no difference for me.

Good. So, as long as performance aren't affected, you have no preferences. Thank you.
See #13 for more details on upcoming changes if you want to discuss them or give your own suggestions.


RichTextLabel: Add count and scroll functions for wrapped lines and paragraphs.

Adds separate get_total_x_count, get_visible_x_count and scroll_to_x functions for wrapped lines and paragraphs (newlines).
Old behavior: get_line_count and scroll_to_line functions were counting newlines/paragraphs, get_visible_line_count was counting lines before #40217, and paragraphs after.
New behavior: x_paragraph_x functions count paragraphs (newlines or [p] tags), and x_line_x functions count wrapped lines.
Fixes: #40982

CC @KoBeWi @theoway

CC @KoBeWi @theoway

I can't check if it fixes my issue, because percent_visible doesn't seem to work.

I can't check if it fixes my issue, because percent_visible doesn't seem to work.

Can this port to 3.x ?

seconding this, this is still a huge issue in 3.x


Updated README.sp to 1.21

Some anchors still require to be updated to match with the translated titles, I will change them later.
Btw, I thought Github had an option to mark a pull request as a draft, but I couldn't find it. It would have been useful here :(

Gracias :+1:
Merged:<PHONE_NUMBER>1d450a449a2e7bb20b0fcef1b62e80


Why env.reset() in cmd='step'?

Dear Author:
Why reset the environment on line 151?
https://github.com/wuxiyang1996/iPLAN/blob/7e4b79a6083fa7800dbfb3e05bdbff981f40bed2/envs/env_wrappers.py#L139-L151
I look forward to hearing from you.

This means that all threads that run a separate env are terminated, in which case the parallel envs will restart.
I was assuming that you are expecting to keep the terminated envs run until time runs out, right?

I think that's partly true, when the for loop finishes executing,
https://github.com/wuxiyang1996/iPLAN/blob/7e4b79a6083fa7800dbfb3e05bdbff981f40bed2/runners/ippo_parallel_runner.py#L166
the statement is executed.
**That's what I asked in problem four (4#issue) 16 initial states but only 8 outputs. **
But why initialize the environment here? I thought it might be a test after training, but I didn't see any test code, and I didn't see any output.
After that, I tried to replace ob = env.reset() with pass.
https://github.com/wuxiyang1996/iPLAN/blob/7e4b79a6083fa7800dbfb3e05bdbff981f40bed2/envs/env_wrappers.py#L151
I found that the program still worked, but a funny thing happened: the same data got different results before and after replacement. I was very confused.

you may schedule a virtual meeting some time with me, my personal information could be found from my profile:
https://wuxiyang1996.github.io/
For others who encounter this issue later:
I will release the summary of this meeting later.

I have sent an email to you, please check it.


Async Actions documentation issue

Do you want to request a feature or report a bug?
Issue with the Async Actions documentation
What is the current behavior?
Apologies if I have misunderstood the documentation, but I see a problem with the use of fetchPostsIfNeeded here:
store
  .dispatch(fetchPostsIfNeeded('reactjs'))
  .then(() => console.log(store.getState()))

fetchPostsIfNeeded resolves straight away if posts.isFetching, so the state will be logged to the console before it has the posts.
What is the expected behavior?
I would expect the posts to always be populated in the state after this resolves.
So in this scenario, where a second fetchPostsIfNeeded is dispatched while the first is still fetching,
shouldn't it wait on the fetchPosts promise from the original dispatch so both resolve when the posts have been fetched?

Hmm.  I think I see what you're getting at, but with a thunk written that way, the second call to fetchPostsIfNeeded() doesn't have any access to the promise from the first call.
De-duping multiple requests becomes a complex problem, and it's one that thunks aren't really suited for.  Given that this is intended to still be a relatively simple tutorial page, I don't think it's worth worrying about here.

Fair enough, but isn't this example already de-duping the requests by tracking isFetching?
It was actually the comment in the code directly above (that talks about using getState() to check if there is a cached value), which made me think of this problem. If a second request is made while the cache value is being updated using an asynchronous network request, it will get the old value, instead of waiting for the new one.
Instead of storing a boolean like isFetching, what about using the promise? requestPosts() could temporarily store a reference to the unresolved promise (perhaps called pendingPosts rather than isFetching), and receivePosts() could set pendingPosts back to undefined/false, so the promise result isn't kept in the store.

Promises aren't supposed to be put into the store, because they're not serializable.
I agree that the code atm is a bit flawed, but I'm not sure it's worth making it "perfect" atm.  But, if you've got some other ideas for fixing it, feel free to suggest them or file a PR.

The best idea I can come up with without using the promise, is to use setTimeout() inside the thunk to poll the value of isFetching, but this is not very good!
I feel like I'm missing something because anyone who has read this tutorial, and then used a similar pattern to check if a backend network request is currently in progress, could potentially encounter this problem. It would only happen when the thunk was dispatched multiple times without completing first. But all those subsequent requests will continue to use the cached value in the store without waiting for it to be updated from the backend. And these are the worst kind of defects, because they happen rarely/intermittantly, they can be hard to debug. In this case could lead to some random error because an out-of-date value has been returned by an action somewhere.
So I guess it's just a very unlikely scenario, but I'm suprised there isn't already a clean way to deal with it. Like some optional semaphore built into dispatch() which can stop the same thunk executing in parallel (and make it wait instead).


Metrics from some (not all) queries are missing

Hi
I use sql_exporter with Postgresql (tried last release and trunk version).
I use a collector for three queries (queries run 20-60 seconds each).
I see strange behavior - in some cases (always on the first request) the service does not return part of the rows of the sql query
Example below (the last two requests contain all the rows - see the size)
Tell me how it can be fixed?
Thank you!
root@han:~/run# wget   http://localhost:9400/metrics
--2018-04-24 16:40:06--  http://localhost:9400/metrics
Resolving localhost (localhost)... ::1, <IP_ADDRESS>
Connecting to localhost (localhost)|::1|:9400... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2541 (2.5K) [text/plain]
Saving to: ‘metrics.5’

metrics.5                    100%[===========================================>]   2.48K  --.-KB/s    in 0s

2018-04-24 16:40:19 (233 MB/s) - ‘metrics.5’ saved [2541/2541]

root@han:~/run# wget   http://localhost:9400/metrics
--2018-04-24 16:40:23--  http://localhost:9400/metrics
Resolving localhost (localhost)... ::1, <IP_ADDRESS>
Connecting to localhost (localhost)|::1|:9400... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4929 (4.8K) [text/plain]
Saving to: ‘metrics.6’

metrics.6                    100%[===========================================>]   4.81K  --.-KB/s    in 0s

2018-04-24 16:40:34 (308 MB/s) - ‘metrics.6’ saved [4929/4929]

root@han:~/run# wget   http://localhost:9400/metrics
--2018-04-24 16:40:36--  http://localhost:9400/metrics
Resolving localhost (localhost)... ::1, <IP_ADDRESS>
Connecting to localhost (localhost)|::1|:9400... connected.
HTTP request sent, awaiting response... 200 OK
Length: 6738 (6.6K) [text/plain]
Saving to: ‘metrics.7’

metrics.7                    100%[===========================================>]   6.58K  --.-KB/s    in 0s

2018-04-24 16:40:47 (51.0 MB/s) - ‘metrics.7’ saved [6738/6738]

root@han:~/run# wget   http://localhost:9400/metrics
--2018-04-24 16:40:53--  http://localhost:9400/metrics
Resolving localhost (localhost)... ::1, <IP_ADDRESS>
Connecting to localhost (localhost)|::1|:9400... connected.
HTTP request sent, awaiting response... 200 OK
Length: 6738 (6.6K) [text/plain]
Saving to: ‘metrics.8’

metrics.8                    100%[===========================================>]   6.58K  --.-KB/s    in 0s

2018-04-24 16:41:04 (362 MB/s) - ‘metrics.8’ saved [6738/6738]

What is the console output of your sql_exporter process?
I don't think some of the rows could go missing. It is more likely that one or more of your 3 queries are timing out so you're only getting the results from some of the queries, but not others. Then, on subsequent queries you get the output of all queries, either because the DB cache is warmed up and your queries run faster; or because you set a min_interval greater than zero in your config and you're getting cached responses.
The logging output and your config file should clarify which one it is. Or whether I'm totally missing the mark.

Thanks for the answer
My current config
global:
  scrape_timeout_offset: 500ms
  min_interval: 0s
  max_connections: 1
  max_idle_connections: 1

Requests are performed correctly in about 60% of cases. In this case, the log is clean.
If the response is of a smaller size - the following error in the log
I0424 19:03:28.165545   32239 main.go:52] Starting SQL exporter (version=0.4, branch=master, revision=6dfbe982f1e42340e2a87e0d30599383c02f0bed) (go=go1.9.1, user=alin@wheat, date=20171128-15:26:05)
I0424 19:03:28.167952   32239 config.go:18] Loading configuration from /root/run/sql_exporter/day_exporter.yml
I0424 19:03:28.169399   32239 config.go:131] Loaded collector "c_day_av_prod" from /root/run/sql_exporter/av_prod.day.yml
I0424 19:03:28.170030   32239 config.go:131] Loaded collector "c_day_entries" from /root/run/sql_exporter/entries.day.yml
I0424 19:03:28.170408   32239 config.go:131] Loaded collector "c_day_prod" from /root/run/sql_exporter/prod.day.yml
I0424 19:03:28.170617   32239 main.go:67] Listening on :9400
I0424 19:04:17.048166   32239 promhttp.go:38] Error gathering metrics: 2 error(s) occurred:
* [from Gatherer #1] [, collector="c_day_prod", query="q_day_prod"] prepare query failed: context deadline exceeded
* [from Gatherer #1] [, collector="c_day_av_prod", query="q_day_av_prod"] context deadline exceeded
I0424 19:04:49.286839   32239 promhttp.go:38] Error gathering metrics: [from Gatherer #1] [, collector="c_day_prod", query="q_day_prod"] context deadline exceeded
I0424 19:05:15.140775   32239 promhttp.go:38] Error gathering metrics: [from Gatherer #1] [, collector="c_day_prod", query="q_day_prod"] context deadline exceeded

[Apologies, was busy at work, then went on vacation and completely lost track of this email thread.]
Yup, as you can see from the logs the problem is that one of your queries (q_day_prod) is relatively consistently timing out. One thing you can do, looking at your config, is to increase the number of connections (and idle connections too, probably) to 3 (as it seems at least 2 of your queries are timing out sometimes). The idea behind it is that SQL Exporter is able to parallelize things down to the query level (i.e. it can run both collectors and queries belonging to the same collector in parallel as long as there are available connections). That may help, if each one of your queries is consistently able to finish by itself within whatever Prometheus' scrape timeout is AND your Postgres instance is actually able to run all 3 queries in parallel without significant slowdowns.
If all else fails, you might have to increase Prometheus' scrape timeout -- https://prometheus.io/docs/prometheus/latest/configuration/configuration/#<scrape_config> -- to a value that will allow your queries to complete reliably.

Have you had a chance to try out the configuration change(s)? If so, are you seeing an improvement?

Closing, as this has to do with the database not being able to respond to all queries within Prometheus' configured scrape timeout.
Workarounds exist and have been described -- increasing the connection pool size, increasing the scrape timeout -- but this is not something that can be improved by any sort of code changes to SQL Exporter.

How to insert new custom metric and query in colllector.yaml?


FR: multiple artifacts, one bundle

See https://github.com/sigstore/cosign/issues/2557 and https://github.com/sigstore/rekor/issues/845

My 0.02c: we should reserve the "bundle" language for "materials sufficient to perform one verification on one artifact," and work on a separate wrapping format to handle each of the suggested use cases (N:1 sig:artifact, N:N sig:artifact, M:N sig:artifact).
The distinction between the "bundle" format and its wrapping formats would then be opaque to consuming users, but saves us from having the bundle itself approach RFC 5652 levels of complexity 🙂

Would a wrapping format contain multiple bundles, one per file?

That's what I was thinking, yeah -- the wrapping format would contain one bundle for each file, with each bundle carrying its own verification materials.
That accomplishes the "N:N sig:artifact" use case, although it's not as ergonomic for the N:1 or M:N use cases (there would probably be a lot of duplication for those).

That scales pretty poorly in file size (>4KiB/file) & number of API calls to rekor, fulcio, etc.
That's part of the motivation, as it takes quite a while to negotiate a dozen or two dozen files to sign, in addition to creating a good number of intermediate artifacts in the form of those bundles and the compounding file size.
Wrapping together bundles naively also seems like it would explode verification time, making it a linear search, effectively?

I don't think a wrapping format has to imply linear behavior: clients could choose to interpret it naively (and run into the scaling issues you mentioned), or choose to batch requests to the various Sigstore services.
The main advantage to having it being a wrapper, rather than embedded in the bundle format, is minimizing format agility: it should be impossible (or as hard as possible) to misuse a cryptographic container format (like a Sigstore bundle). Limiting the number of possible interpretations of a bundle helps with that, since a user is precluded from asking questions like "should a threshold apply here?" or "how many files should I be verifying?"
I agree 100% about the compounding file size, though -- if the goal is to support dozens or even hundreds of verifications in a single file, we might want to look into support for detaching the input digest and other fixed inputs that only end up being duplicated across each verification.

One way to look at this is to think about how you want the verifier to handle multiple artifacts in one bundle. Does the verifier fail if any artifact fails to be verifiable? Does the client return a list of verified artifacts and unverifiable artifacts? This gets more complex if you also start including multiple signatures for an artifact.

I don't think a wrapping format has to imply linear behavior: clients could choose to interpret it naively (and run into the scaling issues you mentioned), or choose to batch requests to the various Sigstore services.

That sounds like another feature request, yeah?

I think discussion here should probably revolve around the use cases. The title of the PR is "multiple artifacts, one bundle", but there are a couple concrete use cases in https://github.com/sigstore/cosign/issues/2557:

Signing individual files produced by one CI step and verifying them on downloading in another, e.g.: when using GitHub Actions @actions/download-artifact and @actions/upload-artifact. Adding a step to tar/untar defeats the optimizations done to enable fast file transfers without intermediate copies on disk.

Signing multiple blobs within an OCI Artifact Manifest. This is useful in scenarios where the artifact manifest or even the OCI registry may be controlled by one party but one or more blob(s) are authored by another. Consider the scenario of a package manager: 1..N blobs may be produced by a package author, producing 1..N signatures, which are then uploaded via an API to the package manager, which distributes those back by inserting them into an OCI Registry.

Echoing @AaronFriel here: by avoiding heterogenous signatures we save ourselves a lot of design complexity. Let's move that discussion to https://github.com/sigstore/protobuf-specs/issues/53

My 0.02c: we should reserve the "bundle" language for "materials sufficient to perform one verification on one artifact,"

Hm...I'm looking at this from the opposite perspective, where we define a bundle as "materials sufficient to perform one verification on one statement."
Then, a statement could be any of:

an attestation
a single artifact
multiple artifacts

We wouldn't have N signatures on N artifacts, we'd have 1 signature on N artifacts.

One way to look at this is to think about how you want the verifier to handle multiple artifacts in one bundle. Does the verifier fail if any artifact fails to be verifiable? Does the client return a list of verified artifacts and unverifiable artifacts?

I think it's pretty foolproof to fail if any artifact fails to verify, with the caveat that users may only want to provide a subset of the artifacts. Think sigstore verify --bundle multibundle.sigstore blob1 blob2 blob4 (note missing blob3).
I agree that it should be hard to misuse a container format, and in principle this does add complexity making that more likely. But in practice what's being proposed here is basically just signing a checksums.txt file instead of signing artifacts directly. (Maybe there's some risk I'm not seeing).

This gets more complex if you also start including multiple signatures for an artifact.

Agreed, let's avoid that for now.