When checking for staleness deprecation warning is raised by checking for the presence of a stale element, the element will always be declared not present.

Meta -
Watir Version: 6.16.5
Selenium Version: 3.141.0
Browser Version: 71.0.3578.98
Browser Driver Version: 2.44.609538 (b655c5a60b0b544917107a59d4153d4bf78e1b90)
OS Version: Windows 10.0.16299 Build 16299
Expected Behavior -
I have an element on the page that becomes stale due to other elements being added and removed from the dom causing it to move itself, I expect that when i ask if it was present, It should be found without me having to manually relocate it.  (If you want an example, i'll need time to build one in fiddle or something)
Actual Behavior -
The element is stated as not found unless we recheck it.
Looking through how the deprecation is raised, i was able to figure out why this happens.
    def present?
      displayed = display_check
      if displayed.nil? && display_check
        Watir.logger.deprecate 'Checking `#present? == false` to determine a stale element',
                               '`#stale? == true`',
                               reference: 'http://watir.com/staleness-changes',
                               ids: [:stale_present]
      end
      displayed
    rescue UnknownObjectException, UnknownFrameException
      false
    end

In this block the display check in if displayed.nil? && display_check is not presisted back to displayed, so it returns the first result, even after relocating after the reset!.
Defining
    def present?
      displayed = display_check
      if displayed.nil? && (displayed = display_check)
        Watir.logger.deprecate 'Checking `#present? == false` to determine a stale element',
                               '`#stale? == true`',
                               reference: 'http://watir.com/staleness-changes',
                               ids: [:stale_present]
      end
      displayed
    rescue UnknownObjectException, UnknownFrameException
      false
    end

seems to fix it.

@jkotests In reference to your table, #stale? and #present? are returning a different value in version 6.15.1 compared to 6.14 and 6.16.5.
I am using the page-object  (2.2.5) gem, and here is how I am testing this:
Element
[1] pry(#<Object>)> poe.inspect
=> "#<PageObject::Elements::SelectList:0x0000001580e4d0 @element=#<Watir::Select: located: true; {:id=>/^ctl00_ctl00_BC_MC_MainTS_(.+)_ViewOptions$/, :tag_name=>\"select\"}>, @platform=#<PageObject::Platforms::Watir::PageObject:0x0000001580e4a8 @browser=#<Watir:
:Select: located: true; {:id=>/^ctl00_ctl00_BC_MC_MainTS_(.+)_ViewOptions$/, :tag_name=>\"select\"}>>>"

Steps
poe.option(text: 'Dependent - Standard View').select
@current_page.wait_for_postback # Partial refresh

# debugger breakpoint

poe.text

6.14
[1] pry(#<Object>)> poe.stale?
=> true
[2] pry(#<Object>)> poe.present?
2019-02-06 14:21:21 WARN Watir [DEPRECATION] ["stale_present"] Checking `#present? == false` to determine a stale element is deprecated. Use `#stale? == true` instead; see explanation for this deprecation: http://watir.com/staleness-changes.
=> nil
[3] pry(#<Object>)> poe.text
=> "Dependent - Standard View"
[4] pry(#<Object>)> poe.reset!
=> nil
[5] pry(#<Object>)> poe.present?
=> true

6.15.1
[1] pry(#<Object>)> poe.stale?
=> false
[2] pry(#<Object>)> poe.present?
=> true
[3] pry(#<Object>)> poe.text
=> "Dependent - Standard View"
[4] pry(#<Object>)> poe.reset!
=> nil
[5] pry(#<Object>)> poe.present?
=> true

6.16.5
[1] pry(#<Object>)> poe.stale?
=> true
[2] pry(#<Object>)> poe.present?
2019-02-06 15:08:29 WARN Watir [DEPRECATION] ["stale_present"] Checking `#present? == false` to determine a stale element is deprecated. Use `#stale? == true` instead; see explanation for this deprecation: http://watir.com/staleness-changes.
=> nil
[3] pry(#<Object>)> poe.text
=> "Dependent - Standard View"
[4] pry(#<Object>)> poe.reset!
=> nil
[5] pry(#<Object>)> poe.present?
=> true

Seems to me that 6.15.1 is returning the expected result.
Also, IE and Chrome driver behave differently when I run this test (with 6.16.5). Here's how IEDriver and ChromeDriver respond when poe.text is invoked after the page refresh:
IEDriver
2019-02-06 16:35:13 WARN Watir [DEPRECATION] ["stale_exists"] Checking `#exists? == false` to determine a stale element is deprecated. Use `#stale? == true` instead; see explanation for this deprecation: http://watir.com/staleness-changes.
	Invalid internal element ID requested: 3a93f208-7328-40a5-bdf6-018cc30d443f (Selenium::WebDriver::Error::NoSuchElementError)

ChromeDriver
2019-02-06 16:06:30 WARN Watir [DEPRECATION] ["stale_exists"] Checking `#exists? == false` to determine a stale element is deprecated. Use `#stale? == true` instead; see explanation for this deprecation: http://watir.com/staleness-changes.
	timed out after 30 seconds, waiting for true condition on #<Watir::Select: located: true; {:id=>/^ctl00_ctl00_BC_MC_MainTS_(.+)_ViewOptions$/, :tag_name=>"select"}> (Watir::Wait::TimeoutError)

Can you or someone else please perform a similar test on these three versions and share the results? This is really strange because 6.14 works fine, but 6.16.5 which behaves the same (#exists? and #present?) fails to retrieve the `#text.

@kapoorlakshya , the timeout you're seeing in Select#text seems to be a different issue so I split it to #853.
As I mentioned on Slack, I wasn't able to reproduce the results for 6.15.1. Given that the select is included in the partial refresh, poe.stale? should have been returning true.

@jkotests You are right! stale? should return true because the element is included in the refresh.

I now understand my confusion here. In 6.10 we have specs like:
"#visible? raises UnknownObjectException exception if the element is stale"
"#present? returns false if the element is stale"
Which isn't actually what they were testing. They were supposed to be testing how Watir was handling Selenium throwing staleness exceptions, not testing the final result after an element has gone stale.
Recall that in watir-webdriver, the default value was to not cache the element and always relocate. If Watir#always_locate = false was set, then it would never relocate. So the behavior was:
browser.refresh
expect(element.exists?).to be Watir.always_locate?

So we fixed that in Watir 6 to cache the element, and only relocate when we tried to re-use it and could not. We also decided that #exist? & #present? should do the smart thing and relocate when the cache went stale.
So, yes, I broke this behavior in 6.11. Then when releasing 6.12 I complained about how this behavior was bad instead of realizing that it was actually a bug I'd introduced in the previous version of Watir. I'm pretty sure I was reliving 2016 arguments in my head about how it should all work. Sigh
So, I get to remove the deprecations I added and straight up relocate for #exist? and #present? which is what has always made sense to do...

This should have been fixed by: https://github.com/watir/watir/commit/e036ffaa5d63e8c54c56c630ab7cba2f0bdce463


Error on loading the test suite on Windows with a subst created drive or lower-case drive letter starting path

EDIT: The bug doesn't seem to be tied to partitions after all. The device that happened to have a partition also used a lower-case drive letter as the terminal starting path.
Describe the bug
Unable to run Vitest using TypeScript partitioned drive if the drive letter is either lower-cased or created via the subst command on Windows 10. (If the tests are ts files) This issue has first appeared in v0.28.0.
Seems to be related to https://github.com/vitest-dev/vitest/issues/1296
Stack trace caused by getCurrentSuite() being undefined:
TypeError: Cannot read properties of undefined (reading 'test')
    at Object.<anonymous> (file:///E:/workspaces/vitest-on-windows-virtual-drive/node_modules/@vitest/runner/dist/index.js:176:22)
    at Module.chain2 (file:///E:/workspaces/vitest-on-windows-virtual-drive/node_modules/@vitest/runner/dist/utils.js:99:17)
    at Z:\vitest-on-windows-virtual-drive\test.spec.ts:3:1
    at VitestExecutor.directRequest (file:///Z:/vitest-on-windows-virtual-drive/node_modules/vite-node/dist/client.mjs:341:5)
    at VitestExecutor.cachedRequest (file:///Z:/vitest-on-windows-virtual-drive/node_modules/vite-node/dist/client.mjs:197:14)
    at VitestExecutor.executeId (file:///Z:/vitest-on-windows-virtual-drive/node_modules/vite-node/dist/client.mjs:173:12)
    at DebugRunner.importFile (Z:\vitest-on-windows-virtual-drive\debug-runner.ts:7:20)
    at collectTests (file:///Z:/vitest-on-windows-virtual-drive/node_modules/@vitest/runner/dist/index.js:447:7)
    at startTests (file:///Z:/vitest-on-windows-virtual-drive/node_modules/@vitest/runner/dist/index.js:765:17)
    at file:///Z:/vitest-on-windows-virtual-drive/node_modules/vitest/dist/entry.js:278:7

Notice the mix of drives E: (real HDD) and Z: (partition / subst-created).
Reproduction
On Windows 10 Pro and Enterprise version 22H2 (build: 19045.3208)
Have the repo of https://github.com/riovir/vitest-on-windows-virtual-drive cloned to

a drive created with subst Z: E:\[location_of_the_repo]
or simply when a the terminal is set to have a starting path with a lower-case drive letter

After npm ci,  npm test or npm run debug (for more context).
System Info
System:
    OS: Windows 10 10.0.19045
    CPU: (24) x64 12th Gen Intel(R) Core(TM) i9-12900KF
    Memory: 14.22 GB / 31.82 GB
  Binaries:
    Node: 20.5.0 - C:\Program Files\nodejs\node.EXE
    Yarn: 1.22.17 - ~\AppData\Roaming\npm\yarn.CMD
    npm: 9.8.0 - C:\Program Files\nodejs\npm.CMD
  Browsers:
    Edge: Spartan (44.19041.1266.0), Chromium (115.0.1901.183)
    Internet Explorer: 11.0.19041.1566

Used Package Manager
npm
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
[X] The provided reproduction is a minimal reproducible example of the bug.

In the reprod, note that, when tested on a partitioned drive, it was green on the first run. Then setting the debug.config.ts to have globals: true caused npm run debug to fail. But then after the tests started failing even with npm test which doesn't do anything with the config.

On a partitioned drive the follow stack trace is produced by the npm run debug:
TypeError: Cannot read properties of undefined (reading 'test')
    at Object.<anonymous> (file:///D:/Projects/design-system/test/vitest-on-windows-virtual-drive/node_modules/@vitest/runner/dist/index.js:176:22)
    at Module.chain2 (file:///D:/Projects/design-system/test/vitest-on-windows-virtual-drive/node_modules/@vitest/runner/dist/utils.js:99:17)
    at d:\Projects\design-system\test\vitest-on-windows-virtual-drive\test.spec.ts:3:1
    at VitestExecutor.directRequest (file:///d:/Projects/design-system/test/vitest-on-windows-virtual-drive/node_modules/vite-node/dist/client.mjs:341:5)
    at VitestExecutor.cachedRequest (file:///d:/Projects/design-system/test/vitest-on-windows-virtual-drive/node_modules/vite-node/dist/client.mjs:197:14)
    at VitestExecutor.executeId (file:///d:/Projects/design-system/test/vitest-on-windows-virtual-drive/node_modules/vite-node/dist/client.mjs:173:12)
    at DebugRunner.importFile (d:\Projects\design-system\test\vitest-on-windows-virtual-drive\debug-runner.ts:7:20)
    at collectTests (file:///d:/Projects/design-system/test/vitest-on-windows-virtual-drive/node_modules/@vitest/runner/dist/index.js:447:7)
    at startTests (file:///d:/Projects/design-system/test/vitest-on-windows-virtual-drive/node_modules/@vitest/runner/dist/index.js:765:17)
    at file:///d:/Projects/design-system/test/vitest-on-windows-virtual-drive/node_modules/vitest/dist/entry.js:278:7

Notice the drive letter casing of D: and d:

Can you add a guide how to create a petitioned drive to reproduce this?

Turns out that it wasn't the partitioning after all. The real culprit seems to be a drive letter mismatch. Either in the casing, if the terminal's starting path has it lower-cased (workaround: don't do that, make sure the path has an upper-case drive letter), or the subst command.
To be clear the real issue in my case was the lower-case drive letter. We stumbled onto the subst command merely because we tried to reproduce the issue in a simpler way, believing that it was a partition issue.

Then it's a duplicate of #3776

I am still experiencing this very issue on the latest<EMAIL_ADDRESS>(tried the latest betas as well). Any solution?

I am still experiencing this very issue on the latest<EMAIL_ADDRESS>(tried the latest betas as well). Any solution?

Please, provide a reproduction. The bug mentioned in the issue was fixed with 0.34.0.


Upload data and associated sample tasks on Kaggle

Sample datasets:

https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge
https://www.kaggle.com/kimjihoo/coronavirusdataset
https://www.kaggle.com/sudalairajkumar/covid19-in-india
https://www.kaggle.com/imdevskp/corona-virus-report

Dataset and tasks uploaded here: https://www.kaggle.com/datathon2021/covid19-india-dataset-indoml-2021
I'm marked as a collaborator to edit even after IndoML is in the past.


Picaso Paint Request

Package Requested

[x] I would like someone else to build the manifest.
[x] I would like help so I can submit the manifest.
[x] I have performed a search and couldn't find this package.
[ ] I think there is a new version available and I have provided the URL.

Manifest:
Fill out as much of the manifest metadata you can:
PackageIdentifier:   ForecasterCyber.PicasoPaint
PackageVersion:     0.5
PackageLocale:       en-US
Publisher:           Serge Brainin
PackageName:        Picaso Paint
License:             MIT
ShortDescription:    Picaso is an open source painting program that grows everyday!
Installers:
 - Architecture:     x64
   InstallerType:    exe
   InstallerUrl:     https://github.com/forecaster-cyber/Picaso_open-source/releases/download/0.5/Picaso.exe
   InstallerSha256:  # SHA256 hash calculated from installer
ManifestType: singleton
ManifestVersion: 1.0.0

If this is good enough for the manifest you can use this.

We cannot add this because it is not an installer.

https://github.com/microsoft/winget-cli/issues/182

Close with reason: Resolved by #68813;


Correctly identify context ID as always being a string, never null

Documentation added in https://github.com/cloudfoundry/docs-bosh/pull/280 incorrectly indicated that context_id could be returned as a null value. The actual implementation will always return a string, an empty one if context ID was not set. This pull request corrects that error.
[#140016781]

Hi team--I've publicised my Pivotal Github org, so hopefully this should now be good to go. Please let me know if there is anything else I need to do. Thanks! --Winna


When is the 8.2.0 version plan to release？

Expect the “statuscheck.ignored_exceptions“ feature.
Before, we modified the  mvc-annotation-commons plugin to adapt our requirement，and the pr haven't be approved.

The release process may be started at Thursday.
Please subscribe to the mailing list, where all the release information is synchronized there.


refactor: Update routes with file name for Relay

Updates our app routes files to include full file name, for the Relay compiler. (For output fragments we need unique file names.) Not having each named artistsRoutes, artworkRoutes, etc, is actually tech debt that we've been needing to fix for some time because its causing us problems differentiating between relay queries and where they're being executed. We've just never gotten around to fixing this.
Not fixing this has implications. For example, this came up a few days ago during an incident and led @iskounen on a bit of a goose chase:
https://artsy.slack.com/archives/CP9P4KR35/p1607534922411300

[RelayCache#set] Success {"queryId":"routes_ShowInfoQuery","variables":{"slug": slug}}

If we had this route file named showRoutes then there would have been no confusion here in our server logs during the incident, and things would have resolved fairly quickly.
While it would be nice for each routes file to just be named routes and update the query name to  be more specific, the thing is that relay, from a compiler level, requires that the file name be prefixed in the query; we can't update the query name without updating the filename.
Example error from ^:
ERROR:
Parse error: Error: RelayFindGraphQLTags: Operation names in graphql tags must be prefixed with the module name and end in "Mutation", "Query", or "Subscription". Got `conversationRoutes_ConversationQuery` in module `routes`. in "Apps/Conversation/routes.tsx"

Thanks for doing this


chore: Adapt workflow to common helm testing

I (argo-helm maintainer) would like to share our workflow for CI testing.
Resolves #30
Tested it on my fork repo:

@mattray would you mind doing a quick review just to make sure I didn't miss something? Otherwise I can merge in


transaction will get dropped after being submitted

We found some transactions will get dropped after being submitted. After some investigation, I think it's related to block missing and switching forks.
For example, trx 178b89082cedec6fdb067eaf886ca5b542797e7b2b611d86ee756773620537cc was dropped. The related block is 14549333. From the following log, you can find that there are two blocks with the same block num.

Another case is that one producer missed 12 blocks in one round. For example, trx f72f3a8b85c30fc5baf217a22e7b45ab3a1639a48358012dc9b23c38f804bf9e was dropped with block number 14664301. Please check the log below:

There are quite a few transactions that were dropped. Some related block number: 14549333, 14636103, 14642368, 14662929, 14664301, 14681455, ...

+1

same issue here.

+1

some producer was offline at that time, resulting in 6 sec (12 blocks) missing.

The first case, producers are all online.

it‘s weird, EOS should be designed to tolerate the forking without losing transaction.
Can we improve this ?

One more case cb57b4bfdbc73c3d501e2746756112583999b4b96c09c1d907199de02b34c519 from https://www.myeoskit.com/#/tx/pandafuncode

as far as I know, the default expire time is 30 seconds, that's should be enough to broadcast into most nodes, there is no reason for denial the transaction for 5 times (30/6 = 5) @jgiszczak

Actually many dapp set transaction expire time to 60 seconds, and transaction drop still happened.

@taokayan could you please check this issue again, especially winlin's replay. The transactions being dropped here have a default expire time, 30s.
One thing I would really want to confirm is that if a block is missing, would the related transactions being dropped? If not, then please reopen this issue.

@DebugFuture @winlin There's no guarantee that one transaction executes successfully in one node implies it will be executed successfully on the other nodes. Every transaction can be failed in either objective way(exception, assert failed...), or subjective way(cpu, net exhausted...). And it will not be broadcast if it fails subjectively. Therefore, expire time has nothing to do with whether the transaction has been broadcast, nor whether it is included in some block. Expire time simply means if any of the BPs try to execute the transaction after its expire time, it will guarantee to be failed.
To check whether transaction x is included inside the blockchain, user should:

push transaction at time t.
wait for its expire time (let say 30s)
wait for around 300 blocks to make sure one block after the expire time has already become irreversible
query the transaction again, or check all the blocks from time t to time t+30

@taokayan Thanks for your explain.
For the trx got dropped, it successfully executed in the target node as we got the response with trx id and block num. I know it doesn't mean it will go to lib 100%. But I checked a lot of logs, not only the two I posted. Almost every time a trx is dropped, there is a "switching forks" or a whole round missing.
We asked Bart Wyatt, and he says 'switching forks' won't cause a trx being dropped. So we just want to make sure if it works as expected.

thanks @taokayan , just as you say, we did need a method to get more debug info.
If you know how to let us know, and we can help

FYI, the https://kylin-push-guarantee.eoscanada.com endpoint (in beta), blocks until the transaction makes it into a block, and returns the block mum and block is in the response (along with the standard response fields)

We have another endpoint that blocks until lib barrier passes, and returns the irreversible block that included the TRX along with the response. Poke me if you'd like to try that one.

@abourget Thanks and great work!
For the first api, does it have the same result if submitting the trx first and then get the block num by get transaction?
For the second api, it's not quite user friendly for a game to wait for more than 2 minutes to get response. Currently we just keep the record, check the lib later and send a makeup trx if the previous got dropped.

answered by @jgiszczak. Please ask in eosio.stackexchange.com if you have further questions.


Generated migration script is syntactially wrong

After running dotnet ef migrations script (something) (somethingelse) the resuling code was the following
ALTER TABLE "Job" ADD "Notes" text;

ALTER TABLE "Category" ALTER COLUMN "CheckOutTex" TYPE text;
ALTER TABLE "Category" ALTER COLUMN "CheckOutTex" SET NOT NULL;
ALTER TABLE "Category" ALTER COLUMN "CheckOutTex" DROP DEFAULT
ALTER TABLE "Category" ALTER COLUMN "CheckInTex" TYPE text;
ALTER TABLE "Category" ALTER COLUMN "CheckInTex" SET NOT NULL;
ALTER TABLE "Category" ALTER COLUMN "CheckInTex" DROP DEFAULT
INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20170308120731_AddNotes', '1.1.0-rtm-22752');

Which failed when I tried to run it because of the missing semicolon after the DROP DEFAULT
I'm running version 1.1.0.

This has been fixed a while ago.


Can you add Triangle Strategy and Rune Factory 5!

Thank you!

I have added the game(s) you requested in the most recent release: https://github.com/hobby-grade/Nintendo-Switch-Discord-Status/releases/tag/<IP_ADDRESS>
Thank you for checking out the project, reach out if you have any more suggestions!


Use iron-list for chunk view

For performance reasons (and very large pull requests) iron-list should provide a performance increase in comparison with dom-repeat.

Hm, so we are now appending with Javascript as @txsmith found out this is not possible in conjunction with Sortable. Should we close this PR or leave it open? If we leave it open, we have to find a solution for Sortable.
I do think this issue is important in the long run, just not now.


Updating Slate editor to support Korean

I'm not sure if it is only for Korean, the current editor doesn't work well with Korean. Whenever typing characters, it omits some words. More details here: https://github.com/ianstormtaylor/slate/issues/1701
There are some other issues left but this particular problem has been solved in the latest version of Slate. Could you make the Slate version up to date for Netlify?

Reopening as I still have the same issue with the current editor. I'm Japanese and having problem in inputing text on both rich-text and markdown editor via Japanese IME.
The bug completely disables me to put any Japanese text.
There is a report that updating slate from 0.47.0 to 0.57.1 solved the problem to some extent.
This is what I put:

And this is what I get:

The test above is done on netlify cms v2.10.51.

Why the pulls by renovate bot is ignored? Any problem?
#4375
#4379
#4380

Hi @acomagu updating to the latest version of slate is not a simple task. See https://docs.slatejs.org/concepts/xx-migrating.
We're open to a contribution for the upgrade if anyone if up to the challenge

Could we consider moving to other editors such as Quill.js? It seems like Slate's CJK support is still far from perfect even in latest versions.

Will the efforts describe here:
https://decapcms.org/blog/2023/03/march-23-status-update
address this (and other related issues described in https://github.com/ianstormtaylor/slate/issues/2368)?

The latest Slate version should fix most problems with the editor, and probably this one too.

@aywander can you test if Korean is better supported now in Decap 3?

@BasixKOR a re you maybe willing to test if this works now?

I'm Japanese and I'm having trouble typing in Japanese. Can someone help me?


[5.3] Don't pluralize "music", "travel" and "wine"

👌

http://www.learnersdictionary.com/definition/wine
List plural form of wine as wines.


x_new is above the interpolation range

I have tried to run the examples with a different load profile. Same type and length as hourly_extraction_ground_loads variable.
The warning is :

I cannot confirm the validity of this issue. I have not been provided adequate information. I will be closing this issue for the time being.
I will be happy to address this issue if I am provided with the necessary information. The information I need is how the error message was created. Such as: the version of ghedt, the example script used and the inputs. Feel free to re-open this issue if you are able to provide the necessary information.
Please refer to the issue template I have now created for bugs, this ideal bug issue post or follow up with me at my email at<EMAIL_ADDRESS>

Sorry for the late reply. I have updated ghedt to the latest version and seem to work fine now. I just get this runtime warning: Find bi-rectangle...
Note: This routine requires a nested bisection search.
Do some initial checks before searching.
C:\Users\davide------------------------\ground_heat_exchangers.py:168: RuntimeWarning: invalid value encountered in log
g_values = g(np.log((_time * 3600.) / ts))
Size between min and max of lower bound in domain.

Issue 82 is open and will address the runtime warning. The warning has no impact on the final results.
The Python Package Index PyPi is where Python projects are published to. When you run pip install ghedt, you are accessing download links from PyPi. Yesterday I published ghedt-v0.2 to PyPi. It sounds like maybe that is what changed for you.


limiting script execution minutes for Auth0

Required items, please complete
Change(s):

See guidance below

Reason for Change(s):

See guidance below

Version Updated:

Required only for Detections/Analytic Rule templates
See guidance below

Testing Completed:

See guidance below

Checked that the validations are passing and have addressed any issues that are present:

See guidance below

Guidance <- remove section before submitting

Before submitting this PR please ensure that you have read the following sections and filled out the changes, reason for change and testing complete sections:
Thank you for your contribution to the Microsoft Sentinel Github repo.

Details of the code changes in your submitted PR.  Providing descriptions for pull requests ensures there is context to changes being made and greatly enhances the code review process.  Providing associated Issues that this resolves also easily connects the reason.

Change(s):

Updated syntax for XYZ.yaml

Reason for Change(s):

New schema used for XYZ.yaml
Resolves ISSUE #1234

Version updated:

Yes
Detections/Analytic Rule templates are required to have the version updated

The code should have been tested in a Microsoft Sentinel environment that does not have any custom parsers, functions or tables, so that you validate no incorrect syntax and execution functions properly.  If your submission requires a custom parser or function, it must be submitted with the PR.

Testing Completed:

Yes/No/Need Help

Note: If updating a detection, you must update the version field.

Before the submission has been made, please look at running the KQL and Yaml Validation Checks locally.
https://github.com/Azure/Azure-Sentinel#run-kql-validation-locally

Checked that the validations are passing and have addressed any issues that are present:

Yes/No/Need Help

Note: Let us know if you have tried fixing the validation error and need help.

References:

Guidance for Detection checks
General contribution guidance
PR validation troubleshooting

Hello @v-sabiraj, Thanks for raising this PR.

Please add respective screen shots for the testing of the code done in description for this changes

Success screenshot from customer workspace.

We are using client credential flow and can't we move to certificate base access token generation?

Created this backlog item to work on the suggested items. Can you please provide approval for now as we made these changes as part of IcM and need to make it live as soon as possible as its having breaking changes.

Please add respective screen shots for the testing of the code done in description for this changes

Added success screenshot.

We are using client credential flow and can't we move to certificate base access token generation?

Created backlog item to incorporate these changes as we need to push this PR as soon as possible to live as its having breaking changes.


The problem about assets list show

When the asset is only btc, the channel of btc is not displayed

resolved


build: bump core to 9.16.1

PR summary
Bumps the java core version to 9.16.1, plus updates a few other dependencies as well.
PR Checklist
Please make sure that your PR fulfills the following requirements:

[ ] The commit message follows the Angular Commit Message Guidelines.
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

Current vs new behavior

Does this PR introduce a breaking change?

[ ] Yes
[ ] No

Other information

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


DRAFT - Browser Extension Spec

Motivation
Bundling the web app as a browser extension allows the wallet to be more

portable - users can connect to dapps as they would with MetaMask or Keplr
front of mind - a one click icon in a browser is easier than navigating to our site
sticky - users don't frequently uninstall extensions
competitive - we can market the extension as a alternative to MetaMask
familiar - users typically think of wallets as extensions, rather than web app able to act as a wallet via WalletConnect

Browser support

Initially Chrome only. Chrome is ~70% of browser usage according to Mixpanel. Firefox is <3%.

Architecture

Load app.shapeshift.com within an iframe in a thin Chrome extension. Rationale - Chrome Web Store update review time. We typically ship 1-2 releases per day that take <10 minutes to go to production for web and mobile users. The Chrome Web Store review process says most are reviewed within 24 hours, but up to 3 days. This is not ideal for UX consistency and bug fixes.
Present as window.ethereum as per the EIP-1193 spec (as MetaMask/XDEFI do)
This should live in the web repo such that we can share the Content Security Policy with the extension

Out of scope

Injecting CosmosSDK support via window.keplr - this functionality is not popular per Mixpanel. EVM is where it's at.
UTXO support (requires spike for existing competitors, e.g. XDEFI)

Tickets

Service worker

Probably required to prevent a cold load of static assets (30mb+) from the CDN each time the extension is loaded
It would be ideal to avoid this if possible, if we can background the extension for example.

Removing the native password modal/lazy password prompting

This is necessary such that they're not prompted for their password every time they open the extension.

WalletProvider changes. We have a similar strategy for the mobile app where we only support connecting via WalletConnect and the ShapeShift wallet.

We will not support connecting to the extension as a dapp via WalletConnect initially, as

the initial V1 implementation where we are a dApp is a technical cluster fuck, and
V1 is being sunset mid 2023 by WalletConnect upstream
it adds additional scope
we want users to migrate from other wallets

We can't talk to other extensions, so MetaMask won't be able to connect to us.
TBD - KeepKey support.
We should simplify the UX to be similar to the mobile experience, and only support importing/creating a native wallet.
We should support the demo wallet for user acquisition purposes

Implement support for EIP-1193 interface (window.ethereum). This allows us to inject into dApps as MetaMask does.

UI/UX for handling

Signing requests. We could repurpose the way we handle this in WalletConnect

Wallet switch requests to unsupported networks, e.g. as of writing we currently don't support Arbitrum

Size and responsiveness

IMO MetaMask seems unnecessarily small
It would be ideal to perhaps be "mid sized", e.g.

Extension build script

This needs a good developer experience for local development + updates
yarn build:extension

Creates a .zip file to be uploaded to Chrome Web Store

We may need to submit extension updates when the Content Security Policy changes, however this is infrequent

Chrome Web Store developer account ownership

Ideally the Fox Foundation similar to the App Store and Google Play Store @willyogo

Deployment documentation

Similar to the mobile app, as this is not deployed frequently, we need thorough correct documentation to be able to ship infrequent updates when necessary as developers will not be intimately familiar.

Marketing and branding

We need a big bikeshed for clear naming and messaging, as we will be a web based dApp, wallet, mobile app, and extension (🤯). We've previously dropped the "native" word from the branding of the wallet.
Limitations

The extension supports injecting to dApps like MetaMask as EVM only, and only the set of EVM chains that ShapeShift currently supports

Ethereum
Polygon
Optimism
Binance Smart Chain
Polygon
Gnosis soon

Users can use all the regular wallet functionality within the extension itself

Future improvements

CosmosSDK support by injecting as window.keplr
Hardware wallet support (KeepKey/Ledger/Trezor/Grid)

lmeow wrong repo - reopened https://github.com/shapeshift/web/issues/4476


WIP: Tracking the NodeJS event loop

We've had a long standing issue with context propagation for NodeJS applications, where we can't really process more than one context at a time, essentially making context propagation for NodeJS broken.
This PR ads some tracking of the active async_id for the NodeJS event loop.
The idea is to make the context tracking in Beyla based on the PID:TID + additional ID, which will be 0 for languages that don't need another ID. For NodeJS we'll poke at the active Node transaction for the PID:TID and match that way.
Ideally only a probe on EmitAsyncInit is needed, but the IDs are double floats (e.g. number in Javascript). The system ABI for float arguments is register based and at present time it's not possible to read floating point registers in kprobes/uprobes. Some kernel mailing list discussion about adding support for floats here<EMAIL_ADDRESS>Since we can't read the float registers, we resort to an additional probe on AsyncReset, which allows us to save the AsyncWrap pointer and then in EmitAsyncInit we read the two values, async_id_ and trigger_async_id_.

Codecov Report
Attention: Patch coverage is 0% with 78 lines in your changes missing coverage. Please review.

Project coverage is 36.16%. Comparing base (31e98da) to head (3db3d66).

Files
Patch %
Lines

pkg/internal/ebpf/nodejs/nodejs.go
0.00%
74 Missing :warning:

pkg/internal/discover/attacher.go
0.00%
1 Missing and 1 partial :warning:

pkg/internal/discover/finder.go
0.00%
2 Missing :warning:

:exclamation:  There is a different number of reports uploaded between BASE (31e98da) and HEAD (3db3d66). Click for more details.
HEAD has 3 uploads less than BASE

Flag
BASE (31e98da)
HEAD (3db3d66)

unittests
1
0

k8s-integration-test
1
0

integration-test
1
0

Additional details and impacted files
@@             Coverage Diff             @@
##             main     #998       +/-   ##
===========================================
- Coverage   80.75%   36.16%   -44.59%
===========================================
  Files         134      134
  Lines       10733    10802       +69
===========================================
- Hits         8667     3907     -4760
- Misses       1559     6471     +4912
+ Partials      507      424       -83

Flag
Coverage Δ

integration-test
?

k8s-integration-test
?

oats-test
36.16% <0.00%> (-0.27%)
:arrow_down:

unittests
?

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Add simple MetaDrive scenario

Implements a simple MetaDrive scenario. Crashes and out of route/out of lane events are detected by MetaDrive and result in a termination of the simulation.
It is part of the work required for https://github.com/commaai/openpilot/issues/30694

I would like to add the other changes in a separate PR to keep them small

Sounds good, bounty is locked to you for a week


Latest build fails on db/log_test.cc on OS X

Assuming the patch from Issue #2 is applied, trunk fails to build because of a
type mismatch in db/log_test.cc. I've attached a trivial diff that fixes the
issue.

Original issue reported on code.google.com by<EMAIL_ADDRESS>on 23 May 2011 at 11:03
Attachments:

log_test.patch

Original comment by<EMAIL_ADDRESS>on 25 May 2011 at 8:27

Added labels: OpSys-OSX

Does this still happen with the osx stuff in r29?

Original comment by<EMAIL_ADDRESS>on 2 Jun 2011 at 12:00

This is fixed as of r30 at least. I'd close the issue but that does not seem
possible. Thanks for the awesome updates.

Original comment by<EMAIL_ADDRESS>on 2 Jun 2011 at 12:10

Original comment by<EMAIL_ADDRESS>on 2 Jun 2011 at 12:14

Changed state: Fixed


Incorrect port mapping for Tomcat server

Describe the bug
The Dockerfile and the K8s deployment yamls use incorrect port instead of using the port entered by the user for the service during the QA.
To Reproduce
Steps to reproduce the behavior:

Run move2kube transform on the enterprise-app sample.
Select the default selected port (8082) for the customers service during the QA.

? Select the port to be exposed for the service customers.childModules.customers :
ID: move2kube.services.customers.childModules.customers.port
Hints:
- Select 'Other' if you want to expose the service using a different port.

  [Use arrows to move, type to filter]
> 8082
  Other (specify custom option)

Dockerfile created by Move2Kube exposes port 8080 instead of port 8082.
FROM registry.access.redhat.com/ubi8/ubi:latest AS customers-buildstage
RUN yum install -y java-1.8.0-openjdk-devel

WORKDIR /app
# copy only the pom and download the dependencies for caching purposes
COPY pom.xml .
COPY mvnw .
COPY .mvn .mvn
RUN ./mvnw dependency:go-offline
# copy the source files to do a build
COPY . .

RUN ./mvnw clean package -Dmaven.test.skip -Dcheckstyle.skip -P dev-inmemorydb,prod-externaldb

FROM registry.access.redhat.com/ubi8/ubi-minimal:latest
WORKDIR /usr/local
RUN microdnf update && microdnf install -y java-1.8.0-openjdk-devel wget tar gzip shadow-utils && microdnf clean all

# environment variables
ENV CATALINA_PID='/usr/local/tomcat10/temp/tomcat.pid' CATALINA_HOME='/usr/local/tomcat10' CATALINA_BASE='/usr/local/tomcat10'
ENV SERVER_PORT 8082
ENV SPRING_PROFILES_ACTIVE dev-inmemorydb

# install tomcat
RUN wget https://archive.apache.org/dist/tomcat/tomcat-10/v10.0.16/bin/apache-tomcat-10.0.16.tar.gz && \
    tar -zxf apache-tomcat-10.0.16.tar.gz && \
    rm -f apache-tomcat-10.0.16.tar.gz && \
    mv apache-tomcat-10.0.16 tomcat10 && \
    rm -r "$CATALINA_BASE"/webapps/ROOT && \
    adduser -r tomcat && chown -R tomcat:tomcat tomcat10
USER tomcat:tomcat

COPY --chown=tomcat:tomcat --from=customers-buildstage /app/target/ROOT.war "$CATALINA_BASE"/webapps-javaee/
EXPOSE 8080
CMD [ "/usr/local/tomcat10/bin/catalina.sh", "run" ]

customers-service.yaml
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    move2kube.konveyor.io/service: customers
  name: customers
spec:
  internalTrafficPolicy: Cluster
  ports:
    - name: port-8080
      port: 8080
      protocol: TCP
      targetPort: 8080
  selector:
    move2kube.konveyor.io/service: customers
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}

Expected behavior
In this case, the Dockerfile and the K8s yamls should use port 8082 instead of port 8080.

Still present in v0.3.x


ng lint is linting node_modules since Beta 28.3

Please provide us with the following information:

OS?

Windows 7, 8 or 10. Linux (which distribution). Mac OSX (Yosemite? El Capitan?)
Ubuntu 16.10 x64

Versions.

Please run ng --version. If there's nothing outputted, please run in a Terminal: node --version and paste the result here:

angular-cli: 1.0.0-beta.28.3
node: 7.4.0
os: linux x64
@angular/common: 2.4.5
@angular/compiler: 2.4.5
@angular/core: 2.4.5
@angular/flex-layout: 2.0.0-beta.4
@angular/forms: 2.4.5
@angular/http: 2.4.5
@angular/material: 2.0.0-beta.1
@angular/platform-browser: 2.4.5
@angular/platform-browser-dynamic: 2.4.5
@angular/router: 3.4.5
@angular/compiler-cli: 2.4.5

Repro steps.

Was this an app that wasn't created using the CLI? What change did you do on your code? etc.

Upgraded to angular-cli beta.28.3 and running ng lint gives me a high number of lint error that can be found in ... node_modules.

I tried to repro with fresh project but couldn't
Tried to compare all related files between fresh and existing repo : Didn't notice anything that might have that kind of impact
Tried to remove my yarn.lock and reinstall with fresh deps : Didn't change

Mention any other details that might be useful.
When I upgraded from beta 26 to beta 28.3, the lint property was added into angular-cli.json :

@victornoel found something interesting in the code tho :
https://github.com/angular/angular-cli/blob/master/packages/%40angular/cli/tasks/lint.ts#L32

We get config.project and store it into program .
Then we get the files from Linter.getFileNames(program); and not from config.files.
Thus, this part of our conf is never used :

Why is it working well in a fresh project, I have no idea ...

I will take a look at this today.

@maxime1992 - I've been looking into this and have been creating many different files. Unfortunately, I haven't come across an issue. I will address the files vs project property in another PR (basically it will use project by default unless it sees files). Another PR will introduce the exclude option.
Would anyone reading this that has this issue be able to paste your tsconfig.json for me or create an example project where it has this issue?

@delasteve the only thing I can do to help is to give you my repo as I couldn't repro in a smaller project ...
git clone https://gitlab.com/victornoel/petals-cockpit.git
cd petals-cockpit/frontend
yarn
# or npm install
ng lint

If you want to take a look into the commit I made to upgrade to beta 28.3, here it is :
https://gitlab.com/victornoel/petals-cockpit/commit/e669b31da03edf0c4e3bbd4bd94de85632efb435

@maxime1992 thanks! I'll take a look at it in a bit.

same problem on beta.30

Trying to debug lint.js on angular-cli project:
In Linter.js: parsed.fileNames  contains the good files
But program.getSourceFiles() (Linter.js.getFileNames)  containers  node_modules

That 's normal : https://github.com/palantir/tslint/blob/master/src/linter.ts#L79, the getSourceFiles() method get also all referenced files.

Maybe angular-cli should have a parameter to use

Linter.GetFileNames for people who want to check all files,
program.getRootFileNames  that do not contains files from import.

@maxime1992, @sguiheux: With #4437, it will be default use the tsconfig.json file if the files property isn't set. I also included a new exclude property that will take a glob.
I checked against your repo, @maxime1992, and it excluded the node_modules folder.
The angular-cli.json generated when you ng new will be sufficient enough to always exclude node_modules, but if you chose to remove files (an optional property) and still wanted to exclude node_modules, you would need to do this:
"lint": [
  {
    "project": "src/tsconfig.json",
    "exclude": "**/node_modules/**/*"
  }
],

@delasteve Wow thanks ! :tada:
Gonna try that ASAP this week !

@delasteve, thank you for your work. I don't understand your last message though. Have you figured out why node_modules was included when linting in @maxime1992 project? The files property was set so he would not have needed the excludeoption, correct?
I'm having the same problem and I don't understand what the difference is between a newly created project and an upgraded one.

@Almar, from what I can tell, this is what is happening... (tl;dr provided at end)
node_modules was included because it included .ts files. The library should not have included the .ts files in the published npm module. It doesn't happen with a fresh project because all the dependencies are correctly published (as in they only published the transpiled output, .js and .d.ts).
The reason it was looking into the node_modules folder even with files being set was because I never had passed the files property in to the linter. I had got the list of files to Linter after passing in a Program.
What I was doing:
const program = Linter.createProgram(config.project);
const files: string[] = Linter.getFileNames(program);

This returns all the files seeing by the typescript compiler. Since, as mentioned, the .ts files were published in the library, the Program picked them up as not a library, but as source files, and, thus, TSLint would lint them.
With my changes, if files (optional, string or string[]) is passed, it will use the glob(s) to get the files. If no files are passed, it will use the tsconfig.json from the project (required, string) property. I added an exclude (optional, string or string[]) property so that you can use that to exclude the node_modules folder, among others.
You can read more about the project property here (as I tried to keep the names the same from the tslint cli): https://github.com/palantir/tslint#cli-1
tl;dr: It works how you expect it to work going forward. If you followed the BREAKING CHANGE or ng update diff, you should be good to go when the PR gets merged.

@delasteve, thank you for your comprehensive answer.

I don't get it what the workaround for beta30 is... I tried the following in my angular-cli.json and none of it works:
This is what I had after the update:
  "lint": [
    {
      "files": "src/**/*.ts",
      "project": "src/tsconfig.json",
    },

This is what I tried:
  "lint": [
    {
      "files": "src/**/*.ts",
      "project": "src/tsconfig.json",
      "exclude": "**/node_modules/**/*"
    },

and
  "lint": [
    {
      "project": "src/tsconfig.json",
      "exclude": "**/node_modules/**/*"
    },

As mentioned none of it works for me - it always includes stuff from node_modules :(

@Nasicus it's normal, you have to wait for a new release of angular-cli that contains the fixed discussed here :)
for now you can execute tslint by hand (like it was before in the package.json).

@Almar, @maxime1992, @Nasicus, @sguiheux, @victornoel: beta.31 was released last night. Please, could you update and tell me if you're still seeing any issues? Thanks!

@delasteve as soon as we can find a solution to #4584 :)

@delasteve seems to work good with the default files parameter in the angular-cli.json file :)

👍 Thanks @victornoel

@delasteve yes fixed too.  Thank you

The only working solution for me was to add files against all linting files
.angular-cli.json
"lint": [{
      "files": "src/**/*.ts",
      "project": "src/tsconfig.app.json"
    },
    {
      "files": "src/**/*.ts",
      "project": "src/tsconfig.spec.json"
    },
    {
      "files": "src/**/*.ts",
      "project": "e2e/tsconfig.e2e.json"
    }
  ]

Hi khichar-anil the above does not work if you actually import from the node_module.

Umh I might be wrong @kvanlaan but I think it's the whole point here.

@maxime1992 The point of this thread is to find a way to disable linting for node_modules. If you use "files": "src/**/*.ts" method. It appears to work at first. But if you import a module from the node_module, then the lint will lint the node_module.

@kvanlaan the solution is to use exclude like so:
  "lint": [
    {
      "project": "src/tsconfig.app.json",
      "exclude": "**/node_modules/**"
    },
    {
      "project": "src/tsconfig.spec.json",
      "exclude": "**/node_modules/**"
    },
    {
      "project": "e2e/tsconfig.e2e.json",
      "exclude": "**/node_modules/**"
    }
  ],

If you want to add multiple exclusion rules, you can do it like this:
  "lint": [
    {
      "project": "src/tsconfig.app.json",
      "exclude": [
       "**/node_modules/**/*",
        "**/app/shared/api/**/*"
      ]
    },
    {
      "project": "src/tsconfig.spec.json",
      "exclude": [
       "**/node_modules/**/*",
        "**/app/shared/api/**/*"
      ]
    },
    {
      "project": "e2e/tsconfig.e2e.json",
      "exclude": [
       "**/node_modules/**/*",
        "**/app/shared/api/**/*"
      ]
    }
  ],


Support block pointer semantics

This PR introduces a new semantics: block pointer, which makes users easier & faster to load a block from a parent tensor.
Below is a detailed API change by an example:
# Make a block pointer, which points to a block in the parent shape
# `base`: the parent tensor
# `shape`: the shape of the parent tensor
# `strides`: the strides of the parent tensor
# `offsets`: the offsets of the block in the parent tensor
# `order`: the order of the data arrangement in memory
# Below is an example loading a 2D column-major matrix
block_ptr = tl.make_block_ptr(base=ptr, shape=(M, N), strides=(stride_m, stride_n), offsets=(0, 0), block_shape=(BLOCK_M, BLOCK_N), order=(1, 0))

# Advance the offsets; note that the striding information is already saved in `block_ptr`
# `base`: the block pointer to be advanced
# `offsets`: the offsets for each dimension
block_ptr = tl.advance(base=block_ptr, offsets=(BLOCK_M, -BLOCK_N))
block_ptr = tl.advance(base=block_ptr, offsets=(-BLOCK_M, BLOCK_N))

# Load from a block pointer, the output type is the dereferenced type of `block_ptr`, e.g. ptr<tensor<32x32xf32>> -> tensor<32x32xf32>
# `ptr`: the block pointer to be loaded
# `boundary_check`: a tuple of dimensions to check the boundary
# `padding`: padding strategy for elements out of bound
val = tl.load(ptr=block_ptr, boundary_check=(0, 1), padding="zero")

# Store by a block pointer, in which the pointer and the value tensor should have the same shape
# `ptr`: the block pointer to be stored
# `boundary_check`: a tuple of dimensions to check the boundary (no-write if out of bound)
tl.store(ptr=block_ptr, value=val, boundary_check=(0, 1))

Thank you so much. Really excited about that. Will review shortly.

@LyricZhao Can you add a tutorial for the tile pointer? I think that could be helpful.

Sure! I will also update the tutorial docs (maybe tomorrow). But the code is ready and you can review now. @Jokeren @ptillet

@LyricZhao Hi, it looks like a great add to the language. I have a little question because I have probably not understood the API, why in the test here https://github.com/openai/triton/blob/820c377517bc4e0910704b61e239472eb4547fb0/python/test/unit/language/test_tile_pointer.py#L48 the 2 advance calls seem to offset together? Is it doing something else?

@LyricZhao Hi, it looks like a great add to the language. I have a little question because I have probably not understood the API, why in the test here
https://github.com/openai/triton/blob/820c377517bc4e0910704b61e239472eb4547fb0/python/test/unit/language/test_tile_pointer.py#L48
the 2 advance calls seem to offset together? Is it doing something else?

Thanks for your question. That is just a test for negative offset numbers, actually we can remove these two lines.
If you still don't understand the API: tl.advance add offsets to an existing block pointer. Here is an example using block pointers to write a matmul kernel (you can compare with current python/triton/ops/matmul.py):
@triton.jit
def _kernel(A, B, C, M, N, K,
            stride_am, stride_ak,
            stride_bk, stride_bn,
            stride_cm, stride_cn,
            dot_out_dtype: tl.constexpr,
            BLOCK_M: tl.constexpr, BLOCK_N: tl.constexpr, BLOCK_K: tl.constexpr,
            GROUP_M: tl.constexpr, SPLIT_K: tl.constexpr, EVEN_K: tl.constexpr,
            ):
    # matrix multiplication
    pid = tl.program_id(0)
    pid_z = tl.program_id(1)
    grid_m = tl.cdiv(M, BLOCK_M)
    grid_n = tl.cdiv(N, BLOCK_N)
    # re-order program ID for better L2 performance
    width = GROUP_M * grid_n
    group_id = pid // width
    group_size = min(grid_m - group_id * GROUP_M, GROUP_M)
    pid_m = group_id * GROUP_M + (pid % group_size)
    pid_n = (pid % width) // group_size
    # do matrix multiplication
    # pointers
    A = tl.make_tile_ptr(A, shape=(M, K), strides=(stride_am, stride_ak), offsets=(pid_m * BLOCK_M, pid_z * BLOCK_K),
                         tile_shape=(BLOCK_M, BLOCK_K), order=(1, 0))
    B = tl.make_tile_ptr(B, shape=(K, N), strides=(stride_bk, stride_bn), offsets=(pid_z * BLOCK_K, pid_n * BLOCK_N),
                         tile_shape=(BLOCK_K, BLOCK_N), order=(1, 0))
    acc = tl.zeros((BLOCK_M, BLOCK_N), dtype=ACC_TYPE)
    for k in range(0, tl.cdiv(K, BLOCK_K * SPLIT_K)):
        a = tl.load(A, boundary_check=(1, ), padding_option="zero")
        b = tl.load(B, boundary_check=(0, ), padding_option="zero")
        acc += tl.dot(a, b)
        A = tl.advance(A, (0, BLOCK_K * SPLIT_K))
        B = tl.advance(B, (BLOCK_K * SPLIT_K, 0))
    acc = acc.to(C.dtype.element_ty)
    # rematerialize rm and rn to save registers
    rm = pid_m * BLOCK_M + tl.arange(0, BLOCK_M)
    rn = pid_n * BLOCK_N + tl.arange(0, BLOCK_N)
    C = C + (rm[:, None] * stride_cm + rn[None, :] * stride_cn)
    mask = (rm < M)[:, None] & (rn < N)[None, :]
    # handles write-back with reduction-splitting
    if SPLIT_K == 1:
        tl.store(C, acc, mask=mask)
    else:
        tl.atomic_add(C, acc, mask=mask)

I will write a tutorial later.

Thank you, the tutorial makes lots of sense to me. The 2 lines was indeed a bit confusing, it made me wonder if it was a kind of functional API which, in some way I was not understanding, iterate / load data across K axis without for loop (because of the name of the function, no scf), and I was, why it is offsetting itself, and that's not K axis! I may have too much imagination :-)
Just to confirm, with this new API, all the striding/load mask fun is abstracted away, that's it? And in the tuto, store and atomic add has not yet benefited from it, but it will come?

@pommedeterresautee Yes, with this new API, there is more abstraction. For store, I have already implemented that in this PR. For atomic_add, that could a TODO later (not much effort). In the matmul example, there are two branches while storing, so I simply don't use the new block pointer semantics.
Thanks for your question and I will add a comment to the confusing two lines in the no_scf_matmul.

@LyricZhao Can you add a tutorial for the tile pointer? I think that could be helpful.

I'm wondering where to push the tutorial? Seems not in this repo (07-libdevice-function.py is missing).

I'm wondering where to push the tutorial? Seems not in this repo (07-libdevice-function.py is missing).

Maybe we forgot to copy it from the triton-mlir repo...


Loss of empty type constraint in generics

TypeScript Version:  3.8.0-dev.20200109

Search Terms:
generic, empty type, lost constraint
Code
var cannotBeNull: {} = null // Type Error.
// Given the above behavior of null not being considered a subtype of {}...

type MustNotBeNull<T extends {}> = T;
const foo: MustNotBeNull<null> = null; // Type Error
// ...and this above (so far consistent) behavior...

type AlsoMustNotBeNull<T> = MustNotBeNull<T> // ...then, this shouldn't be allowed, but it is!
const bar: AlsoMustNotBeNull<null> = null;

Expected behavior/Actual behavior:
As annotated in the example.`
To expand, AlsoMustNotBeNull has no explicit constraint on T, whereas MustNotBeNull has an {} constraint on its T, so the former shouldn't fit the latter.
That this alias definition is allowed suggests that the fallback constraint is also {} (which I thought wasn't the case). And even if there was such a fallback constraint of {}, I would have expected AlsoMustNotBeNull<null> not to be a valid type.
An alternative inference would be that there is a bug in type AlsoMustNotBeNull<T> = MustNotBeNull<T>, and the left hand side should really have been likewise constrained to extends {}.
Playground Link:
https://www.typescriptlang.org/play/?ts=3.8.0-dev.20200109&ssl=1&ssc=1&pln=9&pc=43#code/G4QwTgBAxiB2sHsAuAhApgOQK4BscC4IBvAXwgF4JZccIB6OiAFQE8AHNCAUTDATAB0EAFAMIAcQCWwNLAhIAFpxAAjBDIgq0CkMEn8ICAGZUaVZJrSTYAc2gJYAZ0kATNGDQuIICI6wqkdk5jYhIBcOFhQI4IAFksRyQMZHRsPAAeJgg0AA8kWRdHUIA+CmYAbmEoB0SIIwQEQnjE5NRMGnTqPFLKLpxy+kZWGJ4+MFFGcIE4L0VJItV1TgAKRwQ68HsnefzYJABKSx09finI6M4AQRw15qSU9oymHriE+7a0nEzSsSnFWQANPIFPNfAoELgXLAAORISzePAIADuniBKiwcMkmMcAEIqjU4SpwIRrrc3q1Uh0+i8+uUgA
Discussion
Just to give some context, I wanted to add a simple generic constraint that would essentially forbid "nullish" type, which led to my discovering that null cannot fit into {}.
I see that https://github.com/microsoft/TypeScript/issues/7648 has a good discussion on expressing non-nullish type as a stand alone type, but not as a type constraint. Regardless of the discussion there, however, in my understanding so far the above example is still an unexpected behavior, because the constraint that forbids null in one generic is lost when being aliased by another generic.

Well, the following things are taken to be true when evaluating type arguments and constraints:

If there's no explicit constraint, then null is OK ✔
If there is a explicit constraint, then we'd check null against it ✔
Unconstrained type parameters are assumed to be able to match {} 🤷♂

The first two are inarguable. The last one is... not that much of a stretch, and was actually correct before the introduction of strictNullChecks.
Now that that particular cat is out of the bag, I doubt it can be put back without incurring a ton of breaking changes that wouldn't really materially benefit anyone. Inconsistencies are not per se defects so I don't think there's anything actionable here.

This appears to be fixed somewhere between 4.7.4 and 4.8.4

Indeed, thanks


Attributes in rect tag is not comparing in Blazor Bunit

1.Our components are rendering in svg tag as well as inside the rect tag
2.When I run the test using Blazor Bunit , svg tag has been compared and test has been passed
3.But the attributes in rect tag is not taking for comparision.
4.Please refer the below image for code syntax, failure image and dom details
5.Inside svg tag, There is rect tag but it is not taking for comparison

Question:
Can you please tell me the solution for comparing rect tag using Blazor Bunit?

Hi @JaniceSalintha
The error message shows that MarkupMatches fails because you are comparing a svg element with a rect element, which seems completely fair.
Did you expect the svg element to contain a rect element? It seems it didn't contain any elements at all.
The "Actual HTML" section in the error message prints the entire DOM tree, so it seems there is no rect element rendered.
To debug, try inspecting cut.Markup, it has the full raw rendered markup.

Closing this as #164 superseeds it, it seems.


Pause mode enabled stops body/area signals being raised on a scene that has pause mode set as Process

Godot version:
3.2.3
OS/device including version:
Linux mint
Issue description:
I have the following global code to toggle pausing so my main game pauses but a node (a mini-game popup in a gui) runs:
func _input(event: InputEvent) -> void:
	if Input.is_action_just_pressed(INTERFACE_OPENCLOSE_ACTION):
		visible=!visible
		if visible:
			get_tree().paused=true
		else:
			get_tree().paused=false

I have set pause mode as PROCESS for this 'popup' node. When the game runs, the scene is shown, the mini-game plays ok, i.e. pause mode is being ignored for this whole scene correctly. However none of the body or area entered signals within the scene are raised and no collisions occur, they are completely ignored, but the rest of the scene runs fine.
Please see below the little character going straight through the blocks. I have enabled collision visibility to show these are being generated ok
https://user-images.githubusercontent.com/12863685/112331419-cd370580-8cb0-11eb-88bd-6159b9c208d7.mp4
Now, if I change the autoload to not pause the game, then everything works fine. So game_pause is stopping signals from being raised.
    func _input(event: InputEvent) -> void:
	if Input.is_action_just_pressed(INTERFACE_OPENCLOSE_ACTION):
		visible=!visible
		#if visible:
		#	get_tree().paused=true
		#else:
		#	get_tree().paused=false

https://user-images.githubusercontent.com/12863685/112331444-d1fbb980-8cb0-11eb-9b88-6f484cc15165.mp4
Minimal reproduction project:
See below comments

I have a simple reproducible sample project which I will upload later. The problem is as soon as
get_tree().paused=true
is called, even if it is unpaused, collision signals on area2d are not called. I have even went as far as resetting the collision layers, masks, monitoring and disabled states.

@Calinou
Find attached a simple as possible case as I could do

Run the program use the cursors and watch it either collide with the tilemap or the kinematic (kinematic to show it's not tilemap at fault)
Press the ui_accept key to pause the game and hide display, then press immediately again to unpause the game
Repeat 1 and watch it not collide with anything

collision_test.zip

It seems there's a typo in your pause/unpause script, this version works as expected:
if Input.is_action_just_pressed("ui_accept"):
	visible=!visible
	if !visible: # here, should be set to pause if visible was just set to false
		get_tree().paused=true
	else:
		get_tree().paused=false

In your current version, triggering the ui leaves the game unpaused, then hiding the ui actually pauses the game.
With this fixed, the signals work as expected.
While the game is paused, signals stop being received because the physics world is not processed.
When the game is unpaused, signals are received again.
Does that work for you?

no, the scene has pause set to Process so whether pause is on or off should not affect this scene. If pause were on then the scene would not run, but it does run, just collisions stop working.
The purpose is to pause the entire game but let this scene. I only use visible as a means of showing pause is on and off in this sample code.

Right now, in your test project, pressing the key twice doesn't revert the state to normal, it's setting pause to true, that's why the signals keep not being received.
But beside that, I understand better what you're trying to do.
By default, yes I can confirm the whole physics is paused when the tree is paused. It causes rigid bodies to stop colliding and getting forces applied, and no collision signal is sent. On the other hand, _process and _physics_process are still called on objects with pause mode set to "process", that's why you can still move the character.
You can work around that by forcing physics to still be processed while paused, using Physics2DServer.set_active(true) just after pausing the game. In this case, the physics world will be still processed while paused, which means rigid bodies will be still moving and signals will be sent on all objects. Objects with pause mode set to "stop" won't receive calls to _process or _physics_process but they will receive signals.

My test case was me trying to refactor everything :)
Yes, the purpose is this is a mini-game within a 'pip boy' that pauses the whole game but not this.
If what you say is correct, I'll try it out. Why does process and physics process get called but signals on area/kinematic stop? This doesn't quite make sense to me, but either way it would be nice if it were mentioned in the docs the limitations of the pause mode.
But thanks for your time and effort, I'll check it out.

Physics not being processed AT ALL when the game is paused is a BIG catch that absolutely needs to be called out in documentation...

The reason behind this limitation is that the physics world can only be processed or paused as a whole, which includes checking for collision and sending signals.
In Godot 4.0, the plan is to allow physics objects to be removed from the simulation or set to static when the game is paused, which will help with this limitation.
But yeah, I agree the documentation in 3.2 could be clearer on this aspect. It only mentions that physics 2D/3D will be stopped when you pause the tree, without giving details about what it means.
https://docs.godotengine.org/en/stable/classes/class_scenetree.html#class-scenetree-property-paused
And the pause modes could have more details about this too:
https://docs.godotengine.org/en/stable/classes/class_node.html#enum-node-pausemode

So if I don't any rigid bodies and I call
Physics2DServer.set_active(true)
then pause my game leaving my mini-game running, will there be any side effects on my main game?
Also, is it worth going to the documentation section and raising a 'request' for documentation update from somebody knowledgable enough to put something useful in the
https://docs.godotengine.org/en/stable/tutorials/misc/pausing_games.html
section?

So if I don't have any rigid bodies and I call Physics2DServer.set_active(true)
then pause my game leaving my mini-game running, will there be any side effects on my main game that is paused?

If your main game also uses 2D Physics, physics will keep running as a side effect. If it's a problem for you, the easiest way I can think about to work around this would be to disable physics in all your physics objects manually when you pause (probably by removing the nodes from the tree).
For the long term, the best way to handle this case would be to have a new node type to allow creating separate physics worlds, so you could use it for your minigame and if needed, pause the physics for your main game only. I'll add it to the list of useful things to add in the future, I think it would be relatively easy to do.

Also, is it worth going to the documentation section and raising a 'request' for documentation update from somebody knowledgable enough to put something useful in the
https://docs.godotengine.org/en/stable/tutorials/misc/pausing_games.html
section?

Yes, it's a good idea! You can open a ticket in https://github.com/godotengine/godot-docs/issues and link to this issue.

@pouleyKetchoupp
It works great, thanks. One thing I've just noticed and oddly I raised an issue about this ages ago but never saw the link, is when you have animated resources (e.g. animated tres for a tile) they continue to function with game_pause on. These changes you mention coming to 4, would they fix this issue to? At the minute I go through every animated tile and set it's speed to 0.

Great to hear this workaround works for you!
The pause changes for 4.0 I was referring to are specific to physics nodes, animated textures are not part of it and need a separate discussion.

@pouleyKetchoupp
I've found another issue, can you clarify to save wasting another issue, or if you think it's a bug or separate issue I can raise a ticket.
If I call:
get_tree().paused=true
get_tree().paused=false
Tooltips for all gui controls stop working.

IIRC there's an issue for tooltips not showing when paused and it's a bug @chucklepie

Tooltips not being shown while paused was already reported in https://github.com/godotengine/godot/issues/29362.


DL4J build on RHEL 7 ppc64le - missing protobuf

Hi DL4J team,
We are attempting to build DL4J (snapshot) from source on RHEL 7 ppc64le (IBM Minsky).
We were previously able to build beta2 but with the new release build we are running into this error:
[INFO] --- protoc-jar-maven-plugin:3.8.0:run (tensorflow) @ nd4j-api ---
protoc-jar: executing: [/rstudio/working/mvn/ws/protobuf-3.5.1/src/protoc, --version]
/rstudio/working/mvn/ws/protobuf-3.5.1/src/.libs/lt-protoc: error while loading shared libraries: libprotobuf.so.15: cannot open shared object file: No such file or directory
[INFO] Protoc command: /rstudio/working/mvn/ws/protobuf-3.5.1/src/protoc
[INFO] Input directories:
[INFO]     /rstudio/working/mvn/ws/dl4j_source_beta6_snapshot/deeplearning4j/nd4j/nd4j-backends/nd4j-api-parent/nd4j-api/src/main/protobuf/tf/tensorflow
[INFO]     /rstudio/working/mvn/ws/dl4j_source_beta6_snapshot/deeplearning4j/nd4j/nd4j-backends/nd4j-api-parent/nd4j-api/src/main/protobuf/onnx
[INFO] Include directories:
[INFO]     /rstudio/working/mvn/ws/dl4j_source_beta6_snapshot/deeplearning4j/nd4j/nd4j-backends/nd4j-api-parent/nd4j-api/src/main/protobuf/tf
[INFO]     /rstudio/working/mvn/ws/dl4j_source_beta6_snapshot/deeplearning4j/nd4j/nd4j-backends/nd4j-api-parent/nd4j-api/src/main/protobuf/onnx
[INFO] Output targets:
[INFO]     java: /rstudio/working/mvn/ws/dl4j_source_beta6_snapshot/deeplearning4j/nd4j/nd4j-backends/nd4j-api-parent/nd4j-api/src/main/java (add: main, clean: false, plugin: null, outputOptions: null)
[INFO]     Processing (java): allocation_description.proto
protoc-jar: executing: [/rstudio/working/mvn/ws/protobuf-3.5.1/src/protoc, -I/rstudio/working/mvn/ws/dl4j_source_beta6_snapshot/deeplearning4j/nd4j/nd4j-backends/nd4j-api-parent/nd4j-api/src/main/protobuf/tf, -I/rstudio/working/mvn/ws/dl4j_source_beta6_snapshot/deeplearning4j/nd4j/nd4j-backends/nd4j-api-parent/nd4j-api/src/main/protobuf/onnx, -I/rstudio/working/mvn/ws/dl4j_source_beta6_snapshot/deeplearning4j/nd4j/nd4j-backends/nd4j-api-parent/nd4j-api/src/main/protobuf/tf/tensorflow/core/framework, --java_out=/rstudio/working/mvn/ws/dl4j_source_beta6_snapshot/deeplearning4j/nd4j/nd4j-backends/nd4j-api-parent/nd4j-api/src/main/java, /rstudio/working/mvn/ws/dl4j_source_beta6_snapshot/deeplearning4j/nd4j/nd4j-backends/nd4j-api-parent/nd4j-api/src/main/protobuf/tf/tensorflow/core/framework/allocation_description.proto]
/rstudio/working/mvn/ws/protobuf-3.5.1/src/.libs/lt-protoc: error while loading shared libraries: libprotobuf.so.15: cannot open shared object file: No such file or directory
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] nd4j-api 1.0.0-SNAPSHOT ............................ FAILURE [ 16.929 s]

According to our RHEL admins we are not able get protobuf 15 installed on this version of RHEL (we have libprotobuf.so.8.0.0).
Would it be possible to skip the tensorflow related build operations in the build? Or is protobuf required for DL4J?

protobuf is required mainly for TensorFlow import into SameDiff (which is part of ND4J).
At present it's build right into nd4j-api, not possible to skip it and still compile.
For x86 (windows, linux, mac) it's not necessary to install protobuf manually to compile, protoc-jar-maven-plugin should handle that.
Seems like the plugin only provides x86_64 versions:
https://repo1.maven.org/maven2/com/github/os72/protoc-jar-maven-plugin/3.8.0/

Normally I'd recommend using snapshots, but I don't see PPC binaries at present - cc @sshepel - is this a known issue?
https://oss.sonatype.org/content/repositories/snapshots/org/nd4j/nd4j-native/1.0.0-SNAPSHOT/
Also - how do we solve this problem, given we released 1.0.0-beta6 with PPC support (and plan to continue PPC support in the future)?
protobuf is released with PPC support (see assets here)
https://github.com/protocolbuffers/protobuf/releases/tag/v3.8.0
and apparently the plugin will use it if available: https://github.com/os72/protoc-jar-maven-plugin

Also supports pre-installed protoc binary

@madhs53 I'd suggest downloading the 3.8.0 protobuf compiler/binary from above protocolbuffers/protobuf link and adding to the system path - see if that works

Thanks Alex.
I downloaded protoc and protobuff 3.8 and I'm getting this error on the build:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project nd4j-api: Compilation failure: Compilation failure:
[ERROR] /rstudio/working/mvn/ws/dl4j_source_beta6_snapshot/deeplearning4j/nd4j/nd4j-backends/nd4j-api-parent/nd4j-api/src/main/java/org/tensorflow/framework/NodeDef.java:[28,7] cannot find symbol
[ERROR]   symbol:   class UnusedPrivateParameter
[ERROR]   location: class org.tensorflow.framework.NodeDef

Command used (protoc path is 3.8):
mvn clean install -Dmaven.test.skip -Dlibnd4j.cuda=10.0 -DskipTests=true -DprotocCommand=/rstudio/working/protoc/bin/protoc -Djavacpp.platform=linux-ppc64le -Djavacpp.platform.compiler=/opt/rh/devtoolset-7/root/usr/bin/g++

Hm... not something I've ever seen before.
Can you post the full build log? (in a gist + link here - gist.github.com)

Gist:
Build Log
Custom environment variables:
alias gcc='/opt/rh/devtoolset-7/root/usr/bin/gcc $@'
alias cmake='/rstudio/working/cmake.3.15/cmake-3.16.3/bin/cmake'
export CC=/opt/rh/devtoolset-7/root/usr/bin/gcc
export CXX=/opt/rh/devtoolset-7/root/usr/bin/g++
export CUDACXX=/usr/local/cuda/bin/nvcc
export MAVEN_OPTS="-Xmx2048m"
PATH=/opt/rh/devtoolset-7/root/usr/bin:/rstudio/working/cmake.3.15/cmake-3.16.3/bin/:/rstudio/working/protobuf-3.8.0:$PATH
LD_LIBRARY_PATH=/rstudio/working/protobuf-3.8.0:/opt/rh/devtoolset-7/root/usr/lib64:/opt/rh/devtoolset-7/root/usr/lib:/opt/rh/devtoolset-7/root/usr/lib64/dyninst:/opt/rh/devtoolset-7/root/usr/lib/dyninst:/opt/rh/devtoolset-7/root/usr/lib64:/opt/rh/devtoolset-7/root/usr/lib
export PATH
export LD_LIBRARY_PATH

Build command:
mvn clean install -Dmaven.test.skip -Dlibnd4j.cuda=10.0 -DskipTests=true -DprotocCommand=/rstudio/working/protoc/bin/protoc -Djavacpp.platform=linux-ppc64le -Djavacpp.platform.compiler=/opt/rh/devtoolset-7/root/usr/bin/g++
RHEL 7, ppc64le, CUDA 10.

@madhs53 You're using an old version of the repository. Please do a git pull and try again.

@AlexDBlack Snapshots are going to get deployed only when the build is successful, which should happen now that the repository is up to date...

Thanks Saudet.
I've re-run the build after using git pull.
Here's the error I'm now receiving:
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /rstudio/working/mvn/ws/dl4j_source_beta6_snapshot/deeplearning4j/nd4j/nd4j-common/src/main/java/org/nd4j/util/StringUtils.java:[39,29] package com.google.common.net does not exist
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for deeplearning4j 1.0.0-SNAPSHOT:
[INFO]
[INFO] deeplearning4j ..................................... SUCCESS [  4.234 s]
[INFO] libnd4j ............................................ SUCCESS [18:40 min]
[INFO] nd4j ............................................... SUCCESS [ 13.981 s]
[INFO] nd4j-shade ......................................... SUCCESS [  0.307 s]
[INFO] jackson ............................................ SUCCESS [ 24.054 s]
[INFO] protobuf ........................................... SUCCESS [ 18.396 s]
[INFO] guava .............................................. SUCCESS [ 16.229 s]
[INFO] nd4j-common ........................................ FAILURE [  7.208 s]

That file doesn't exist: https://github.com/eclipse/deeplearning4j/tree/master/nd4j/nd4j-common/src/main/java/org/nd4j/util/StringUtils.java

Thanks saudet.
I did a fresh new clone and got passed that step.
Now I'm getting this error:
[ERROR] Failed to execute JavaCPP Builder: Cannot run program "powerpc64le-linux-gnu-g++" (in directory "/rstudio/working/mvn/ws/dl4j_source_beta6_snapshot/deeplearning4j/nd4j/nd4j-backends/nd4j-backend-impls/nd4j-native/target/classes/org/nd4j/nativeblas/linux-ppc64le"): error=2, No such file or directory
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for deeplearning4j 1.0.0-SNAPSHOT:
[INFO]
[INFO] deeplearning4j ..................................... SUCCESS [  1.542 s]
[INFO] libnd4j ............................................ SUCCESS [17:35 min]
[INFO] nd4j ............................................... SUCCESS [  4.056 s]
[INFO] nd4j-shade ......................................... SUCCESS [  0.378 s]
[INFO] jackson ............................................ SUCCESS [ 27.902 s]
[INFO] protobuf ........................................... SUCCESS [ 21.314 s]
[INFO] guava .............................................. SUCCESS [ 19.189 s]
[INFO] nd4j-common ........................................ SUCCESS [ 25.980 s]
[INFO] nd4j-backends ...................................... SUCCESS [  0.226 s]
[INFO] nd4j-api-parent .................................... SUCCESS [  0.215 s]
[INFO] nd4j-api ........................................... SUCCESS [02:32 min]
[INFO] nd4j-jdbc .......................................... SUCCESS [  0.251 s]
[INFO] nd4j-jdbc-api ...................................... SUCCESS [  4.591 s]
[INFO] nd4j-common-tests .................................. SUCCESS [  4.671 s]
[INFO] nd4j-jdbc-mysql .................................... SUCCESS [  4.135 s]
[INFO] nd4j-jdbc-hsql ..................................... SUCCESS [  4.195 s]
[INFO] nd4j-serde ......................................... SUCCESS [  0.196 s]
[INFO] nd4j-aeron ......................................... SUCCESS [  6.031 s]
[INFO] nd4j-kryo .......................................... SUCCESS [  9.846 s]
[INFO] nd4j-arrow ......................................... SUCCESS [  4.810 s]
[INFO] nd4j-native-api .................................... SUCCESS [  7.518 s]
[INFO] nd4j-tests ......................................... SUCCESS [ 12.799 s]
[INFO] nd4j-backend-impls ................................. SUCCESS [  0.478 s]
[INFO] nd4j-native ........................................ FAILURE [02:22 min]

Since we have power snapshots, I'm going to err on closing this. Power is semi support but not something the team uses a lot and doesn't have a large user base. We're happy to look at this closer if more teams express interest though.


WIP: Custom log messages

This PR is intended to implement #227 part 2. Currently, the action inside a log event is wrapped in an object.
Next steps:

[ ] provide possibility for a move/event to add custom messages
[ ] show these messages inside the UI

Checklist

[x] Use a separate branch in your local repo (not master).
[x] Test coverage is 100% (or you have a story for why it's ok).

Coverage remained the same at 100.0% when pulling 5fe400e6f1f6081ea079f41a7fd2c75ec0512b10 on Stefan-Hanke:add_log_ctx into 858975ccb7dacc34f0054136f7c3c108a4bc0e88 on google:master.


Android Example TF Detect crashes when built with files in source directory

Android TF Detect crashes when I make the apk with inception_5 and mobile_multibox files in the assets directory and removed in BUILD as per the instructions at https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android
It works when built with automatic download.
I commented out lines 66 & 67 in BUILD.
"@inception5h//:model_files",
"@mobile_multibox//:model_files",
The file size of the apk built with the files added to assets manually is 4195 bytes smaller than the apk built with automatically downloaded files.

What is the actual message for the crash? (Use adb logcat)
If you run unzip -v on the apk, do the contents look the same with either method? You probably have an extra layer of directories in there or something similar.

I tracked down the issue.  The difference between builds is the automatic download version gets https://storage.googleapis.com/download.tensorflow.org/models/mobile_multibox_v1a.zip while the instructions at https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android specify to download https://storage.googleapis.com/download.tensorflow.org/models/mobile_multibox_v1.zip . (notice the "a" in the file name).
One file contains multibox_location_priors.pb while the other has multibox_location_priors.txt.


usemin does not replace the image when the path is generated in js

I an using AngularJS to build my site. I have an array of assets/images/?.png where ? is generated via _.range as follows:
$scope.model.fad = 'assets/images/' + _.range(1, 6).map(function (e) {return e + '.png';})[_.random(4)];

It works in development environment, but fails in production environment because it tries to find the original one not the usemin generated one.
usemin does not change the <img ng-src="{{model.fad}}"> tag. So how can I fix it?

@chenweiyj the problem is that usemin has no way to know the path of a dynamic image.
One solution I've found with to this problem is to use a map in your code and use this map in your code.
If I'm correct:
$scope.model.fad = 'assets/images/' + _.range(1, 6).map(function (e) {return e + '.png';})[_.random(4)];

could be written :
var images = [
  'assets/images/1.png',
  'assets/images/2.png',
  'assets/images/3.png',
  'assets/images/4.png',
  'assets/images/5.png',
  'assets/images/6.png'
]
$scope.model.fad = images[_.random(4)];

You will need to add a regex for js type in usemin configuration to search for png.
BTW it would also be more performant as you will build the array only one time. If you call this line multiple time, in your version, you're build a new array each time.


Issue with k8s.io/docs/reference/kubectl/generated/kubectl_config/kubectl_config_use-context/

The documentation is very confusing, there is not enough examples after commands for example:
--kubeconfig string
| use a particular kubeconfig file
it doesn't give you an example of how to use it and would have been better to give an example as follows:
kubectl config use-context research --kubeconfig /user/my-new-kube-config

@princeking, this page is automatically generated, fix will be somewhere around kubernetes/kubernetes repo.

Also, I don't think this page require any update as this is just reference section, examples can be set at tasks or tutorial section.


fibonacci-yohance

The Fibonacci sequence - also often called the God's sequence or the golden ratio- gives rise to some of the most beautiful art ever. My code uses three nested for loop to make art using multiple fibonacci squares. It has lots of features that can be changed, including the angle between adjacent squares that make up each complete fibonacci square, increasing which gradually open the square up like a spiral. The distance between adjacent fibonacci squares is also customizable, meanwhile the angle between each whole fibonacci square is randomized to make the image interesting each time.
I spent considerable time making the fibonacci algorithm work. It took considerable thinking (and rubber duck debugging, pseudocode, and drawing on paper) to make it work. An obvious next step would be to try and replace the nested for loops with a recursive algorithm instead, but at this point I don't see an obvious way to make that work. I had very little javascript experience before this but the syntax was pretty straightforward as blot was very well documented, and there were lots of examples.

Thanks for the submission! I think this code may be a bit brief. I'm going to close this for now but feel free to resubmit when you are ready in the future.


New Rule: PikaBot Malicious Office Document

PikaBot changed its attack pattern from links/urls in the mail body/pdf to classic malicious office documents. This rule is quite simple, but works in our environment without any false positives.
Example string:
file://///85[.]195[.]115[.]20/share/reports_02[.]15[.]2024_2[.]js

thanks @padey, will start testing today!


HIP 86: Increase IOT Data Transfer Cost

HIP 86: Increase IOT Data Transfer Cost

Author(s): @KeithRettig
Start Date: 2023-05-28
Category: Economic
Original HIP PR: #698
Tracking Issue: #703
Voting Requirements: veIOT Holders

Summary
This HIP proposes to change the per packet cost of transferring messages on the Helium IOT Network from 1 data credit (DC) per 24-byte packet to 2 data credits (DC) per 24-byte packet to better align the price with its value to our customers.
Motivation
The primary motivation is to align the cost of packet transfer closer to the true value of packet transfer within the IOT subDAO.  While it is believed by the author that the true value of packet transfer is closer to 100 DC, it would be economically unfeasible to implement a 100-fold increase in the price in one action.
Rendered View:
https://github.com/helium/HIP/blob/main/0086-increase-iot-data-transfer-cost.md

Different ideas about this hip:
It's important to not mix the Packet cost paid to the network (1DC) and the Packet cost for a device owner. Between the two there is the cost of service. The difference goes to the service provider or to your own infrastructure you need to support and to your time.
So this  hip should not address the cost question in regard of the customer cost but in regard of the hotspot owner retribution for the service. Because 1 DC per 24B packet is related to the hotspot owner retribution and NOT to the device owner cost.
In my point of view, in term of cost modification, there is some more important point to consider, like getting Downlink billable and making Join request free to make the Join process more reliable.
The impact of this HIP concern all the already made business model having taken into consideration the 1 DC / 24B model.  The impact is the trust about the stability of price for Helium in a long term point of view, we need to be careful with this as doubling the network cost is not unsignificant.
Another if we go to double the network retribution, I propose that only the first replicate would be impacted by this and not the duplicates to make device localization more accessible.
Last point, in the HIP, once you addressed it in the direction of the network retribution, you need to identify the cost impact for the end-user and don't forget that this cost is not a single DC per byte as many application requires multi-buy. multi-buy can cost 2 to 10 DCs (or more) per packets.

This hip has been closed after concluding that regional pricing is needed before any considerations of charging more are considered.


Always having a trouble while downloading the second page

Love this little thing!
But when I downloaded pics on IG with your downloader, it always popped out MAKE SURE YOU GIVE THE CORRECT USERNAME and can't continue to work since page 1 succeeded.
I'm using Windows 10 and operating this in Command with Python 3.7, as the pic below:
https://imgur.com/a/dmBQQEa
Thanks for your great work and hopefully hear from you!

Already fixed this, please try the new commit and let me know if you have any other problem 😃


Consolidating offset read and write for store-offsets and side-inputs, maintaining backward compatbility

This consolidates the two different kinds of offsets used by stores and side-inputs into one.
The code can still read and make sense of store-offset files written in the old format.
The new format stores a map of ssp to offset, rather than a singular string.
Updated tests.
And added tests to ensure the reading of the old-format offset still works.

Addressed all comments.


[BugFix] Revert #14251 make load request back to bthread

What type of PR is this：

[x] BugFix
[ ] Feature
[ ] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Which issues of this PR fixes ：

Revert https://github.com/StarRocks/starrocks/pull/14251 load part
Problem Summary(Required) ：

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr will affect users' behaviors
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

Bugfix cherry-pick branch check:

[ ] I have checked the version labels which the pr will be auto backported to target branch

[ ] 2.5
[ ] 2.4
[ ] 2.3
[ ] 2.2

run starrocks_admit_test


increase(...) appears to treat discontinuity as 0-value (leading to larger than expected increase)

What did you do?
Attempted to use increase to see change in a value over a 24h period.
What did you expect to see?
In the data we see a large jump in increase which seems to correlate with a missed scrape for the service endpoint.
Observed data:

What did you see instead? Under which circumstances?
Large increase observed around the discontinuity.

Environment

System information:
insert output of uname -srm here

jblackburn@dlonapahls91:~$ uname -srm
Linux 3.10.0-693.2.2.el7.x86_64 x86_64

Prometheus version:

[root@a52004ff3fe8 /]# /usr/bin/prometheus --version
prometheus, version 2.1.0 (branch: HEAD, revision: 85f23d82a045d103ea7f3c89a91fba4a93e6367a)
  build user:       root@6e784304d3ff
  build date:       20180119-12:01:23
  go version:       go1.9.2

That looks like the effect of a counter going backwards. Can you share the raw data of one of those time series around that time?

Hi -
Taking one of the metrics:
Raw Data
message_count{instance=~"1.*", env="prod", service="RSF", partition="14"}

http://prometheus.dev.ahl:9090/api/v1/query_range?query=message_count{instance%3D~"1.*"%2C env%3D"prod"%2C service%3D"RSF"%2C partition%3D"14"}&start=1518020340&end=1518034740&step=57&_=1518780931424
query1data.txt
Increase
increase(message_count{instance=~"1.*", env="prod", service="RSF", partition="14"}[24h])

http://prometheus.dev.ahl:9090/api/v1/query_range?query=increase(message_count{instance%3D~"1.*"%2C env%3D"prod"%2C service%3D"RSF"%2C partition%3D"14"}[24h])&start=1518020340&end=1518034740&step=57&_=1518780931425
increasedata.txt
There's a jump between these two timesteps in increase:
[1518034077,"32034316.86392156"],
[1518034134,"482297848.49101365"]

But there is no similar jump in the data.
Even if I query the data at 1s precision, I don't see anything untoward in the data:

query1s.txt
other than a discontinuity -
[1518026146,"445224004"],
[1518026147,"445224004"],
[1518026793,"445957884"],
[1518026794,"445957884"],

There are two other things that may be interesting / relevant:

there is a counter reset ~27 hours later, which appears to be correctly handled by increase
there are other scrape gaps, which appear to be correctly handled

Screenshot attached showing both:

There's a jump between these two timesteps in increase:

Can you give me the raw data around those times?

The raw data was in the increasedata.txt
https://github.com/prometheus/prometheus/files/1731161/increasedata.txt
and at 1s resolution query1s.txt:
https://github.com/prometheus/prometheus/files/1731173/query1s.txt
Let me know if there's any other data you would like (or some other way of getting the data).

The data in query1s.txt does not cover the time period of the issue in increasedata.txt.

Ah, sorry about this - it does look like something strange has happened - the counter has briefly gone backwards by '163'...
query1s up to<PHONE_NUMBER>:
query1s-1518034134.txt
[1518034098,"450214079"],
[1518034099,"450216699"],
[1518034100,"450216536"],
...
[1518034112,"450216536"],
[1518034113,"450220374"]

increase1s up to<PHONE_NUMBER>:
increase1s-1518034134.txt
[1518034099,"32024457.718303636"],
[1518034100,"482298795.2844846"]

We're digging deeper into this - we've recently migrated from Prometheus 1.x to 2.x and it may be that there's some funny interaction between the old and the new with remote read.

So we think this is caused by a discontinuity caused by the migration from Prometheus 1.x to 2.x and remote read.
Sorry for the noise!

This is the first report of a discontinuity from such a setup. This implies that users should be careful not to have scraping working for at least a scrape interval to mitigate this.


How to Download the generated image?

There's a download button below the output.
I've tested this on desktop (chrome) and android chrome let me know if it is not visible in your device

Yeah the download button is not visible.

oh, it will come after clicking the "generate image" button above textarea. The generate button will add some extra effects and will put a background of a paper and after that you can download

So if I'm copy pasting this is happening.

Yes, currently you have to paste it as a plain text to remove the existing styles of content. I had fixed this in earlier versions but had to roll back because it removed the line breaks as well.
Ctrl + shift + V should work for now. I'll try to see if there's any way out to paste as plain text by default while keeping the line-breaks.
Also, is download button visible now?