Blog recipe posts in root URL

 Issue by jansotola
Monday Feb 03, 2020 at 17:02 GMT
Originally opened as https://github.com/Wyamio/Wyam/issues/2

We're migrating our blog to WYAM.
For SEO reasons we'd like to keep our posts in root URL (not in /posts/ subfolder).
For example /my-article-1 instead of /posts/my-article-1.
I know we can use redirects (using metadata RedirectFrom:), but it is not enough for us. We need the final (redirected) URL to stay in root.
When setting BlogKeys.PostsPath to /, an error "Rooted globbing patterns are not supported" occurs.
When setting BlogKeys.PostsPath to empty string, an error "Access to the path 'c:\index.html' is denied." occurs (because WYAM is trying to overwrite index of homepage with index of archive page).
Is there any way how to do it properly?

 Comment by daveaglick
Wednesday Feb 05, 2020 at 01:56 GMT

It’s definitely possible, a couple different approaches come to mind. One way would be to override the output path at the end of the pipeline before the file gets written. Take a look at https://github.com/Wyamio/Wyam/issues/612#issuecomment-363944693 and the follow-up comments. I think that code is still valid but I’ve been so heads down in Statiq recently (the successor to Wyam) that I might be confusing parts of the two. Let me know if you run into any trouble adapting that code.
If that doesn’t work or seems to confusing/heavyweight let me know and I’ll brainstorm some alternatives. One of the things I love about how Wyam worked out is that it’s so flexible - the downside is that’s it’s not always immediately obvious the best way to customize something since there are so many possibilities :)

 Comment by jansotola
Wednesday Feb 05, 2020 at 09:17 GMT

Thanks! It has helped.
The final code is here:
Pipelines["BlogPosts"].Append(
  Meta(Keys.RelativeFilePath, (doc, ctx) =>
  {
    // just copied from the original implementation
    string fileName = doc.Bool("FrontMatterPublished")
      ? doc.FilePath(Keys.SourceFileName).ChangeExtension("html").FullPath
      : doc.FilePath(Keys.SourceFileName).ChangeExtension("html").FullPath.Substring(11);
    // put posts to the blog root (don't add any path before the filename)
    return fileName;
  }));

Now I have the following environment:

posts source code is in input/posts/ folder as usual
posts pages are generated to output/ folder
and they are accessible on root URL (e.g. http://localhost:5080/)
index.html of archive page is generated to output/posts/ folder
and the archive page is available on posts/ URL (e.g. http://localhost:5080/posts/)

So the main problem is solved. But it would be nice to change the archive URL to archive/ while keeping the posts source still in input/posts/. I can do it by setting URL rewriting rule on my production server, but doing it directly in WYAM would be better. Can you, please, advice, where to modify the pipeline to achieve this?

 Comment by daveaglick
Saturday Feb 29, 2020 at 20:54 GMT

FYI - the original Wyam project is being moved to statiqdev to continue work there as Statiq Web (the successor to Wyam and the Wyam blog recipe). Since this issue relates specifically to Wyam, I've transfered it to a new replacement project for legacy Wyam issues.

 Comment by jansotola
Friday Apr 17, 2020 at 16:15 GMT

I've managed to do renaming of the "Archive" page web folder by rewriting BlogArchive pipeline.
It may be a dirty and brute force solution but it works:
int archiveIndex = Pipelines.IndexOf("BlogArchive");
Pipelines.Remove("BlogArchive");
Pipelines.Insert(archiveIndex, "BlogArchive",
  // most of the lines have been copied from WYAM Blog.cs
  new Wyam.Web.Pipelines.ConditionalPipeline(
    ctx => ctx.Bool(BlogKeys.GenerateArchive),
    new Wyam.Web.Pipelines.Archive(
      "BlogArchive",
      new Wyam.Web.Pipelines.ArchiveSettings
      {
        Pipelines = new string[] { "BlogPosts" },
        TemplateFile = ctx => "_Archive.cshtml",
        Layout = "/_Layout.cshtml",
        PageSize = ctx => ctx.Get(BlogKeys.ArchivePageSize, int.MaxValue),
        Title = (doc, ctx) => "Archive",
        // the only redefined line
        RelativePath = (doc, ctx) => $"{ctx.DirectoryPath(BlogKeys.PostsPath, ".").FullPath.Replace(ctx.String(BlogKeys.PostsPath), "archive")}"
      })));
qqq

 Comment by daveaglick
Thursday Apr 23, 2020 at 00:25 GMT

Great, glad you found a solution!


cannot find package "unsafe" with golang

setting
lua <<EOF
require'navigator'.setup({
debug = true
})
EOF

gh.log
[INFO  Thu Sep  2 00:22:39 2021] .../nvim/plugged/navigator.lua/lua/navigator/definition.lua:50: { {
    error = {
      code = 0,
      message = 'err: exit status 1: stderr: cannot find package "unsafe" in any of:\n\t/usr/local/Cellar/go/1.16.2/bin/src/unsafe (from $GOROOT)\n\t/Users/bigduu/Documents/git/goproject/src/unsafe (from $GOPATH)\n: packages.Load error',
      <metatable> = {
        __tostring = <function 1>
      }
    }
  } }

golang version is 1.16.2
OS : macOS 11.4

Sizeof() is an internal function and go std package does not include it's go code. I suspect it is a C function. Also checked behaviour in vs-code and default lspconfig. But show the same/similar error (depends on gopls version).

my gopls version
golang.org/x/tools/gopls v0.7.1
<EMAIL_ADDRESS>h1:Mh3Z8Xcoq3Zy7ksSlwDV/nzQSbjFf06A+L+F8YHq55U=


Help needed!

Hello! I wanted to know ur discord tag because i wannna discuss about this bot with you it would be amazing if u did!
(I am new to github lol)

@yeetyeet96 send me your discord tag i will add you.

a sad furry#2523

a sad furry#2523


Allow Twig 2

https://github.com/EdgedesignCZ/phpqa/commit/325a563681d64f8c7e1bd22932797ed952f9b8f7

Why is v1 restricted to 1.33? (composer.lock contains v1.32).
Wouldn't it be simpler to use <=2? I don't wanna "break" existing clients by locking minor version.

1.33  it's just the last minor release of branch 1. If you feel more comfortable, we can require ^1.0

Done in https://github.com/EdgedesignCZ/phpqa/pull/58.


[Bindable] on Class throws Flex error

Hi,
I created a Flex Library Project, and added some classes.
I referenced the project on the Feathers SDK project.
If I add the metatag [Bindable] to the Class or to some var, will throw this error:
1046: Type was not found or was not a compile-time constant: [flash.events]::IEventDispatcher. Unknown	Flex Problem
What can I do? should I reference some FlexSDK swc?
Kind regards

Is your library project compiled with the Feathers SDK too?

should I reference some FlexSDK swc?

No, that's not necessary.

No Josh, is compiled with AIR SDK 23.
I'm seeing this forum post: http://forum.starling-framework.org/topic/eventdispatcher-conflict
I think is the same problem 😢

AIR SDK does not support [Bindable]. You should compile your library project with the Feathers SDK if you want to add [Bindable] to anything in that project.

I'm sorry Josh, I de-referenced the library project, and copied all folder inside the feathers app, so that way is compiled with Feathers SDK.
Then throw the error Description	Resource	Path	Location	Type Class must extend the required base class starling.events.EventDispatcher.
So then I extended the Class from starling.events.EventDispatcher and I hit the wall of the RemoteObject invalid request 😭
I guess I will have to deal Bindables with RobotLegs or my own BindingUtil?

You can extend flash.events.EventDispatcher instead. The compiler suggests starling.events.EventDispatcher because that's better most of the time, but both are allowed.

By the way, if you want the code to be in a library project, create a Flex library project and tell it to use the Feathers SDK instead of the Flex SDK.

Seems like I was already building with Feathers SDK, on the properties only show AIR 23 but I remember this FB workspace was created only with this SDK.
Extending flash.events.EventDispatcher worked! I didn't know that I had to extend it explicitly (I was not used to it on Flex and I thought was by default). My intention is to use the same Flex Library for all company apps.. and there are many ^^
Anyway, thank you very much! another problem solved 😄

The reason that you need to extend flash.events.EventDispatcher explicitly is that Feathers is built on Starling, and so starling.events.EventDispatcher is preferred. Ideally, when you add [Bindable] to a class, the compiler should have automatically made the class extend starling.events.EventDispatcher, similar to how the Flex SDK automatically does it automatically with Flash's EventDispatcher, but I couldn't make that work. That's why there's the "Class must extend the required base class starling.events.EventDispatcher" compiler error.
Anyway, since Starling classes get priority, when you want to use Flash events with binding instead, you need to explicitly extend flash.events.EventDispatcher (or one of its subclasses). This isn't really documented because people should use starling.events.EventDispatcher most of the time. However, I definitely want to be sure that both types of events are always supported for binding.


Corrected description. Update virtual-network-troubleshoot-nva.md

Looks good.
#sign-off

@GitHubber17 : Thanks for your contribution! The author, @genlin, has been notified to review your proposed change.


How to store each player as Player Object in recent_activity()

If I wanted to add players as a Player object into each Activity, how would you recommend this? Does it make sense to have an overarching PlayerPool list that is compiled during the fetch_teams method? This list can subsequently be searched by playerID and return the actual Player object into this activity?
My ultimate objective is to (a) fetch all activities during the last scoring period (done).  (b) identify each of these player's points during that week (open)
Hence my idea of having the player as an Object from which I could fetch their points...

Hmm that’s a great question. That wouldn’t be a bad idea but holding all players could take up a lot of space.
So if you are looking for players that were picked up we know they belong to a team. We might be able to use the same endpoint as free_agents function but filter on owned players instead of wavier/free agents.

agreed that it would get heavy....
good idea on the free_agent approach. I can toy with it.
But for dropped players...I guess you're saying they would not belong to
a team. Does this mean we can't retrieve their week-over-week scores?
The aggregation of all this player data definitely becomes a bit
convoluted, eh?
On Wed, Oct 2, 2019 at 4:32 PM Christian Wendt<EMAIL_ADDRESS>wrote:

Hmm that’s a great question. That wouldn’t be a bad idea but holding all
players could take up a lot of space.
So if you are looking for players that were picked up we know they belong
to a team. We might be able to use the same endpoint as free_agents
function but filter on owned players instead of wavier/free agents.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/cwendt94/ff-espn-api/issues/56?email_source=notifications&email_token=AHNQUDGG7KXFUDURMARIK3DQMUANZA5CNFSM4I42C7L2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEAGCUEY#issuecomment-537668115,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AHNQUDAZOKKWY6ILY5SJSHLQMUANZANCNFSM4I42C7LQ
.

--
Ryan Sullivan
404.314.0220 (C)
<EMAIL_ADDRESS>

agreed that it would get heavy....
good idea on the free_agent approach. I can toy with it.
But for dropped players...I guess you're saying they would not belong to a team. Does this mean we can't retrieve their week-over-week scores?
The aggregation of all this player data definitely becomes a bit convoluted, eh?

That’s a good point, I didn’t even think about dropped players. It definitely adds some more complexity. I wonder if ESPN has a endpoint where you could just call for one player’s data or something like that

You could get week-by-week box_scores, which would give you points that a player earned while on a team, but it would miss points (not) accrued in free-agency.

Looks like you can use the free_agent request and slightly change the filters. The Player object that comes back shows the last 2 week's scores. It also shows total season points.  However, it's a bit strange to make out.
See below example for Christian McCaffery
params = {
            'scoringPeriodId': 5,
            'view': 'kona_player_info',

        }
filters = {"players":{"filterIds":{"value":[3117251]},"sortPercOwned":{"sortPriority":2,"sortAsc":False},"filterStatsForTopScoringPeriodIds":{"value":2,"additionalValue":["002019","102019","002018","1120195","022019"]}}}
headers = {'x-fantasy-filter': json.dumps(filters)}

r = requests.get(ENDPOINT, params=params, cookies=cookies, headers=headers)

notice the filter is 'filterIds' for the player's ID
Oh, as I'm typing this, I see 'filterStatsForTopScoringPeriods' is set to 2...wonder what happens if I up it? And the 'additional values' might be the answer to my question below..

Season Total = 115
Last week = 34.9
2 weeks ago = 30.8
...What is all that other stuff though? and the why the 2018 data?

Nice, I was thinking you could probably pass in just a player id and players specific information. For the 2018 stats ESPN likes to show the previous season stats like points and rank

Here's what I put together for fetching player_points. Can prob be cleaned up a bit, but it works. I stuck it in Player Object b/c I wasn't sure how else to utilize it inside the Player Object...
    def fetch_player_points(self, playerId: int):
        """Retrieves a player's points"""

        params = {
            'scoringPeriodId': 5,
            'view': 'kona_player_info',

        }
        filters = {"players": {
            "filterIds": {"value": [playerId]},
            "sortPercOwned": {"sortPriority": 2, "sortAsc": False},
            "filterStatsForTopScoringPeriodIds": {"value": 3,
                                                  "additionalValue": ["002019", "102019", "002018", "1120195",
                                                                      "022019"]}}}
        headers = {'x-fantasy-filter': json.dumps(filters)}
        r = requests.get(self.ENDPOINT, params=params, cookies=self.cookies, headers=headers)
        data = r.json()

        stats = data['players'][0]['player']['stats']
        player_points = {}
        for stat in stats:

            if stat['id'] == str('00') + str(self.year):
                player_points['points_season_total'] = stat['appliedTotal']
                player_points['points_season_average'] = stat['appliedAverage']
            if stat['id'] == str('00') + str(self.year-1):
                player_points['points_season_last'] = stat['appliedTotal']
            if stat['scoringPeriodId'] == self.current_week:
                player_points['points_week_current'] = stat['appliedTotal']
            if stat['scoringPeriodId'] == self.current_week - 1:
                player_points['points_week_last'] = stat['appliedTotal']

        return player_points

So back to the title of the Topic -- I wonder how we can get the Player Object into he Recent Activity?

Does that endpoint return the correct data to create a player object with it? Because if so what we could do is put this function in the League object and pass the function to the activity object to call it with the player ids to create a player

great question and idea... (I couldn't figure out how to put the function in the league and pass it across :( )
I think most of the attributes in player object should be included in this endpoint. would need to do a little more digging, but certainly seems like it.
I had it run inside the player object when the league was initializing...pretty slow, but cool to have the data.

If you look at recent_activity function and the Activity class I pass get_team_data function so I can add the Team class. I was thinking you could do the same thing with a “get_player_function” pass that in and it will create a player object off of the player id

@rysull23 Thanks for bringing this back up this year and showing your example code in #133! This is now in package version v0.8.0 🎉

Welcome. Wow. Forgot about this. Lots of detail here. Thanks for incorporating.
The other piece of this which I spent a ton of time on was figuring out how to get more stat info out of that free_agent api. it's a bit cryptic, but I came close.


Undefined method `&' for (486311991/10):Rational

Hey,
I'm using devise-two-factor in an application, which uses this.
When I try to log in, I get:
NoMethodError - undefined method `&' for (486311991/10):Rational:
  rotp (2.1.1) lib/rotp/otp.rb:62:in `int_to_bytestring'
  rotp (2.1.1) lib/rotp/otp.rb:27:in `generate_otp'
  rotp (2.1.1) lib/rotp/totp.rb:23:in `at'
  devise-two-factor (2.1.0) lib/devise_two_factor/models/two_factor_authenticatable.rb:38:in `current_otp'
  app/models/user.rb:15:in `send_two_factor_authentication_code'
  app/controllers/users/sessions_controller.rb:30:in `send_2fa_code'
  actionpack (<IP_ADDRESS>) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
  actionpack (<IP_ADDRESS>) lib/abstract_controller/base.rb:198:in `process_action'
  actionpack (<IP_ADDRESS>) lib/action_controller/metal/rendering.rb:10:in `process_action'
  actionpack (<IP_ADDRESS>) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
  activesupport (<IP_ADDRESS>) lib/active_support/callbacks.rb:117:in `call'
  activesupport (<IP_ADDRESS>) lib/active_support/callbacks.rb:555:in `block (2 levels) in compile'
  activesupport (<IP_ADDRESS>) lib/active_support/callbacks.rb:505:in `call'
  activesupport (<IP_ADDRESS>) lib/active_support/callbacks.rb:92:in `__run_callbacks__'
  activesupport (<IP_ADDRESS>) lib/active_support/callbacks.rb:778:in `_run_process_action_callbacks'
  activesupport (<IP_ADDRESS>) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (<IP_ADDRESS>) lib/abstract_controller/callbacks.rb:19:in `process_action'
  actionpack (<IP_ADDRESS>) lib/action_controller/metal/rescue.rb:29:in `process_action'
  actionpack (<IP_ADDRESS>) lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'
  activesupport (<IP_ADDRESS>) lib/active_support/notifications.rb:164:in `block in instrument'
  activesupport (<IP_ADDRESS>) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
  activesupport (<IP_ADDRESS>) lib/active_support/notifications.rb:164:in `instrument'
  actionpack (<IP_ADDRESS>) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
  actionpack (<IP_ADDRESS>) lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
  searchkick (1.2.1) lib/searchkick/logging.rb:153:in `process_action'
  activerecord (<IP_ADDRESS>) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
  actionpack (<IP_ADDRESS>) lib/abstract_controller/base.rb:137:in `process'
  actionview (<IP_ADDRESS>) lib/action_view/rendering.rb:30:in `process'
  actionpack (<IP_ADDRESS>) lib/action_controller/metal.rb:196:in `dispatch'
  actionpack (<IP_ADDRESS>) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
  actionpack (<IP_ADDRESS>) lib/action_controller/metal.rb:237:in `block in action'
  actionpack (<IP_ADDRESS>) lib/action_dispatch/routing/route_set.rb:74:in `dispatch'
  actionpack (<IP_ADDRESS>) lib/action_dispatch/routing/route_set.rb:43:in `serve'
  actionpack (<IP_ADDRESS>) lib/action_dispatch/routing/mapper.rb:49:in `serve'
  actionpack (<IP_ADDRESS>) lib/action_dispatch/journey/router.rb:43:in `block in serve'
  actionpack (<IP_ADDRESS>) lib/action_dispatch/journey/router.rb:30:in `serve'
  actionpack (<IP_ADDRESS>) lib/action_dispatch/routing/route_set.rb:815:in `call'
  warden (1.2.6) lib/warden/manager.rb:35:in `block in call'
  warden (1.2.6) lib/warden/manager.rb:34:in `call'
  rack (1.6.4) lib/rack/etag.rb:24:in `call'
  rack (1.6.4) lib/rack/conditionalget.rb:38:in `call'
  rack (1.6.4) lib/rack/head.rb:13:in `call'
  actionpack (<IP_ADDRESS>) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
  actionpack (<IP_ADDRESS>) lib/action_dispatch/middleware/flash.rb:260:in `call'
  rack (1.6.4) lib/rack/session/abstract/id.rb:225:in `context'
  rack (1.6.4) lib/rack/session/abstract/id.rb:220:in `call'
  actionpack (<IP_ADDRESS>) lib/action_dispatch/middleware/cookies.rb:560:in `call'
  activerecord (<IP_ADDRESS>) lib/active_record/query_cache.rb:36:in `call'
  activerecord (<IP_ADDRESS>) lib/active_record/connection_adapters/abstract/connection_pool.rb:653:in `call'
  activerecord (<IP_ADDRESS>) lib/active_record/migration.rb:377:in `call'
  actionpack (<IP_ADDRESS>) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
  activesupport (<IP_ADDRESS>) lib/active_support/callbacks.rb:88:in `__run_callbacks__'
  activesupport (<IP_ADDRESS>) lib/active_support/callbacks.rb:778:in `_run_call_callbacks'
  activesupport (<IP_ADDRESS>) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (<IP_ADDRESS>) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
  actionpack (<IP_ADDRESS>) lib/action_dispatch/middleware/reloader.rb:73:in `call'
  actionpack (<IP_ADDRESS>) lib/action_dispatch/middleware/remote_ip.rb:78:in `call'
  better_errors (2.1.1) lib/better_errors/middleware.rb:84:in `protected_app_call'
  better_errors (2.1.1) lib/better_errors/middleware.rb:79:in `better_errors_call'
  better_errors (2.1.1) lib/better_errors/middleware.rb:57:in `call'
  actionpack (<IP_ADDRESS>) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
  web-console (2.3.0) lib/web_console/middleware.rb:28:in `block in call'
  web-console (2.3.0) lib/web_console/middleware.rb:18:in `call'
  actionpack (<IP_ADDRESS>) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  railties (<IP_ADDRESS>) lib/rails/rack/logger.rb:38:in `call_app'
  railties (<IP_ADDRESS>) lib/rails/rack/logger.rb:20:in `block in call'
  activesupport (<IP_ADDRESS>) lib/active_support/tagged_logging.rb:68:in `block in tagged'
  activesupport (<IP_ADDRESS>) lib/active_support/tagged_logging.rb:26:in `tagged'
  activesupport (<IP_ADDRESS>) lib/active_support/tagged_logging.rb:68:in `tagged'
  railties (<IP_ADDRESS>) lib/rails/rack/logger.rb:20:in `call'
  actionpack (<IP_ADDRESS>) lib/action_dispatch/middleware/request_id.rb:21:in `call'
  rack (1.6.4) lib/rack/methodoverride.rb:22:in `call'
  rack (1.6.4) lib/rack/runtime.rb:18:in `call'
  activesupport (<IP_ADDRESS>) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
  rack (1.6.4) lib/rack/lock.rb:17:in `call'
  actionpack (<IP_ADDRESS>) lib/action_dispatch/middleware/static.rb:116:in `call'
  rack (1.6.4) lib/rack/sendfile.rb:113:in `call'
  railties (<IP_ADDRESS>) lib/rails/engine.rb:518:in `call'
  railties (<IP_ADDRESS>) lib/rails/application.rb:165:in `call'
  rack (1.6.4) lib/rack/lock.rb:17:in `call'
  rack (1.6.4) lib/rack/content_length.rb:15:in `call'
  rack (1.6.4) lib/rack/handler/webrick.rb:88:in `service'
  /Users/chris/.rbenv/versions/2.2.4/lib/ruby/2.2.0/webrick/httpserver.rb:138:in `service'
  /Users/chris/.rbenv/versions/2.2.4/lib/ruby/2.2.0/webrick/httpserver.rb:94:in `run'
  /Users/chris/.rbenv/versions/2.2.4/lib/ruby/2.2.0/webrick/server.rb:294:in `block in start_thread'

Here's a more interactive look at the behavior:

Now, I've noticed behavior like this from another gem I'm also using: gem 'ruby-units', '~> 2.0'
I'm posting here because it looks like just calling int.to_i would fix it and someone else might run into this. But also out of some curiosity: what default behavior is being messed with here?

looks like this is related to mathn, feel free to close this if its not relevant: https://github.com/olbrich/ruby-units/issues/17

got rid of ruby-units, rewrote in unitwise and the 2fa is working flawlessly. gonna close this!


Yarn workspaces<EMAIL_ADDRESS>not found

Issue
When using Lerna and Yarn workspaces, the command graph deploy fails with error:
✔ Load subgraph from subgraph.yaml
  Compile data source: Gravity => build/Gravity/Gravity.wasm
✖ Failed to compile subgraph: Failed to compile data source mapping: Import file<EMAIL_ADDRESS>not found.
Error: Failed to compile data source mapping: Import file<EMAIL_ADDRESS>not found.
    at Compiler._compileDataSourceMapping (/home/thisguy/repos/graph-cli-testing/node_modules/@graphprotocol/graph-cli/src/compiler.js:308:13)
    at /home/thisguy/repos/graph-cli-testing/node_modules/@graphprotocol/graph-cli/src/compiler.js:184:20
    at updateInDeepMap (/home/thisguy/repos/graph-cli-testing/node_modules/immutable/dist/immutable.js:1971:22)
    at updateInDeepMap (/home/thisguy/repos/graph-cli-testing/node_modules/immutable/dist/immutable.js:1980:23)
    at updateInDeepMap (/home/thisguy/repos/graph-cli-testing/node_modules/immutable/dist/immutable.js:1980:23)
    at Map.updateIn (/home/thisguy/repos/graph-cli-testing/node_modules/immutable/dist/immutable.js:1278:26)
    at /home/thisguy/repos/graph-cli-testing/node_modules/@graphprotocol/graph-cli/src/compiler.js:183:24
    at /home/thisguy/repos/graph-cli-testing/node_modules/immutable/dist/immutable.js:3016:46
    at List.__iterate (/home/thisguy/repos/graph-cli-testing/node_modules/immutable/dist/immutable.js:2206:13)
    at IndexedIterable.mappedSequence.__iterateUncached (/home/thisguy/repos/graph-cli-testing/node_modules/immutable/dist/immutable.js:3015:23)

Talking with @Jannis on Discord, he suggested the reason:

AssemblyScript compiler doesn't have built-in module resolution, so what graph-cli does is try to find a node_modules folder in the current directory or any parent directories, in order to resolve e.g. @graphprotocol/graph-ts.

Expected Behavior
Should be able to install and use graph-cli in a Yarn workspaces monorepo
Reproduce this issue
I made an example repo here: https://github.com/pi0neerpat/graph-cli-testing-example

@fubhy has added a fix in https://github.com/graphprotocol/graph-cli/pull/478
Until then, he suggested using nohoist to address the problem. You MUST set private: true in package.json for yarn to respect nohoist. Here is what mine looks like:
{
  "name": "subgraph",
  "version": "0.1.0",
  "private": true,
   ...
  "devDependencies": {
    "@graphprotocol/graph-cli": "^0.18.0",
    "@graphprotocol/graph-ts": "^0.18.0"
  },
  "workspaces": {
    "nohoist": [
      "**/@graphprotocol",
      "**/@graphprotocol/**"
    ]
  }
}

I get the same error anytime I tried to build, deploy ... and this solution did not solved it.
I checked your test-example repo and copy paste the generated directory into mine and that solved the problem.
I wonder why the folder was missing. I also checked the original example repo and it was also missing there. I am not sure how to create this generated directory on my own project.
Another issue that I also get is the node-gyp build anytime I graph init or npm install. This is the error :
`error /Users/mehradkavian/Dropbox/graphQL/sub1/node_modules/sha3: Command failed.
Exit code: 127
Command: node-gyp rebuild
Arguments:
`
I thought this missing error that I get from create or deploy(either local or hosted) might have been because of this error.
I don't know what I'm missing.


Unit tests for lattice.py

Description
Lattices are a fundamental building block of the Covalent workflow. Currently, there are several integration tests for the lattice.py module in tests/covalent_tests/workflow/lattice_test.py. The purpose of this issue is to stimulate the addition of unit tests. Considering the size of this file, we expect several contributors to help add unit tests for the untested methods/functions. Even small additions here are impactful and greatly appreciated.
Within the unit test file, we would like to have at least one test method corresponding to each source method. In cases where source code has branches or other logic, all logical conditions in the source should ideally be covered during unit test execution.
Below, we list possible parts of the lattice module (Lattice object) for you to write a test.

[ ] serialize_to_json
[ ] deserialize_from_json
[ ] set_metadata
[ ] get_metadata
[ ] build_graph
[ ] persist
[ ] __call__
[ ] lattice (wrapper function)

Acceptance Criteria

[ ] Look through the code and select a section of the lattice module that you'd like to write tests for.
[ ] On the issue, ask to be assigned to the specific method/function test that you'd like to contribute (ensure that someone else isn't working on it already).
[ ] Write the test(s) (making sure it passes).

More details on running tests and measuring code coverage
Covalent uses pytest to run unit tests.  The pre-requisite requirements can be installed with pip install -r tests/requirements.txt and then run using pytest as follows:
pytest -vv tests/covalent_tests/workflow/lattice_test.py --cov=covalent/_workflow/lattice.py

Note that pull requests will generate a code coverage report on Codecov.  This report is then posted as a comment so that coverage may be inspected line-by-line.

I would like to look into this issue / write these unit tests. Kindly assign this issue to me. @wjcunningham7

I would like to look into this issue / write these unit tests. Kindly assign this issue to me. @wjcunningham7

Hi @mpvgithub, thanks for looking into this! Let us know if you have any questions.

@wjcunningham7
I tried some test cases with the lattice wrapper function. When I came across the DepsBash test case, I pointed some basic file write bash commands to the lattice decorator
@ct.lattice(
        call_before=ct.DepsCall(call_before_lattice),
        deps_bash=DepsBash(["echo 'Hello World' >> /tmp/path.txt"]),
        call_after=ct.DepsCall(call_after_lattice),
    )

But when I tried to get the result ( read text from path.txt )
def read_file():
        with open('/tmp/path.txt','r') as f:
            return f.read()

I get this following error :- No such file or directory: /tmp/path.txt
is DepsBash expected behavior for lattice or can also be used for both lattice and electron?
Reference : https://covalent.readthedocs.io/en/stable/concepts/concepts.html?highlight=DepsBash#depsbash
CC: @scottwn


OBS and OBS6 data retrieve

Thank you for making this powerful evaluation tool! I'm working on setting up the tool on a machine at Lawrence Livermore National Lab, which we have access to CMIP, obs4mip, ana4mip data. However, it is not clear how to get OBS and OBS6 data transferred to make best use of the tool. Would you please advise if there is a way to download both data?

Dear @chengzhuzhang, thank you for your interest in the tool!
Unfortunately we are not allowed to redistribute the observational data together with the tool itself.
The standard procedure for obtaining the OBS and OBS6 data is to download the raw data from the respective sources and apply the cmorizers given in esmvaltool\cmorizers\obs\, which also contain details about the data source and the download instructions. More information is available in our user guide.
Hope this helps. Feel free to repoen this issue if you have further questions.


Support ARM cross-tenant authentication

ARM cross-tenant auth needs support from azcore and azidentity to function end to end (see ARM docs for a rundown of how this feature works). This PR is the azcore part, with new API for specifying auxiliary tenants for ARM clients and requesting access tokens from arbitrary tenants. #19529 has the azidentity part--it depends on this PR and the next MSAL release.
Usage will look like this:
// cred will request tokens from the primary tenant unless another is specified in GetToken args
cred, err := azidentity.NewClientSecretCredential("primary-tenant", "client-id", "secret", &azidentity.ClientSecretCredentialOptions{
	// cred will (attempt to) authenticate in any requested tenant; can also list specific tenants here
	AdditionallyAllowedTenants: []string{"*"},
})
client, err := armresources.NewClient("subscription", cred, &arm.ClientOptions{
	// client will add a token from each auxiliary tenant to every request's x-ms-authorization-auxiliary header
	AuxiliaryTenants: []string{"aux-tenant"},
})

It's our own invention. MSAL doesn't have a similar allow list because its multitenant API is always explicit.

Should our API be explicit too (it's what we did in track 1)? Are there any downsides/risks with using a wildcard for the additional tenants?

Should our API be explicit too (it's what we did in track 1)?

We can't (well, not without major surgery) make the tenant explicit to the developer in every token request because an application using an SDK client doesn't request tokens directly. The client does that as needed, and the developer doesn't always know which client call will trigger a token request or which tenant a request should go to.

Are there any downsides/risks with using a wildcard for the additional tenants?

Yes, there's some risk for applications that accept URIs from users (some more on this in the recent blog post). We need a wildcard escape hatch anyway because some applications can't know in advance all the tenants whose resources they will want to access.

I meant explicit in regard to only allowing a list of tenants, no wildcard (this is what we did in track 1).  Regardless, it sounds like the wildcard is needed to support some scenarios.

Retargeted this to a feature branch so we can review and merge it without interfering with other features entering main.

Is there any update on this pr? Thanks in advance!

@chlowell what's the trigger for getting this into main for a beta?

We need the azidentity part of this (#19529) to complete the end-to-end feature, but that's waiting on the next version of MSAL, which has been delayed by bugs and holidays. @MartinForReal if you need a workaround in the meantime, you can try this: https://github.com/Azure/azure-sdk-for-go/issues/19726#issuecomment-1367527596
@jhendrixMSFT are you thinking of an azcore beta?

I couldn't remember if the MSAL work was complete.  Clearly, we need that before we can release a beta of this feature.


User-agent should be set for only requests made by Toggl Button

Issue introduced by https://github.com/toggl/toggl-button/pull/488
The user agent is set for all requests made by the browser to *.toggl.com URLs when toggl button is enabled. It should rather be scoped to only requests made by the button itself somehow.

reopening for investigation, @syko reported seeing user-agent: TogglButton/1.9.0 in webapp requests

Well... Can confirm:


chawan: init at 0-unstable-2024-03-01

Description of changes
Lightweight, pretty web browser that runs in your terminal.
https://sr.ht/~bptato/chawan/
Unlike most Nim software, Chawan uses make rather than nimble, which means I can't use buildNimPackage.
A few workarounds were employed to ensure both the cha and mancha utilities work as expected. mancha uses Chawan to display system man pages and so to make this work properly I had to use a wrapper to make sure it gets the correct path to all man pages as well as the path to its own man page. cha can also display man pages given a man: URL, so I had to wrap it with the same arguments as mancha is wrapped with.
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 292494 run on x86_64-linux 1

1 package built:

chawan

cha seems fine for regular web browsing. But I tested out mancha:
$ result/bin/mancha nix
cha: Can't load man:nix (no manual entry for nix)

(and yes, /run/current-system/sw/share/man/man1/nix.1.gz exists)

darwin build is broken

darwin build is broken

I am not an expert on Darwin, but a brief search shows it is only partially POSIX-compliant. Chawan claims to require a POSIX-compliant operating system, so Darwin may not be supported.


Change integration language

Hi,
thank for integration Bieniu it works great therefore I'd like to request for an feature or information how I can change language.
I'm using Home Assistant in English language as it's easier for daily usage and forum troubleshooting. Is it possible to change Entities language names from default HA language to Polish? Would be great to change it automatically rather then translating manually.
Thanks

My problem is the opposite, I have HA in Polish, but the integration is in English... "Alder Pollen Concentration" for example.
I raise the question of how to change the language :-)
greetings

HA doesn't provide a mechanism to translate entity IDs/names. You have to change them yourself.


[SUPPORT] Bump UAA release

What
We were falling behind with our fork of UAA
How to review
Deploy from this branch in dev and make sure UAA still works
Then head over to https://github.com/alphagov/paas-uaa/pull/6 to review and merge
Following that it's a quick hop to https://github.com/alphagov/paas-uaa-release/pull/9 to update the submodule and merge that.
Finally this PR just needs tweaking with the updated boshrelease from https://concourse.build.ci.cloudpipeline.digital/teams/main/pipelines/uaa-release
Who can review
Anyone

Test failure is expected up until the final release is used

Checked this release, and UAA is still working:
Tested

Google SSO users managed correctly
Able to invite users and accept invites
Able to sign in with Google
MS SSO uplift journey works
Able to sign in with MS

Swapped version of UAA release to the release output by Concourse

Re-tested and all looking OK
✅UAA login
✅Google login
✅Microsoft login
✅Inviting users
✅Google uplift
✅Microsoft uplift
✅Deleting users
✅UAAC usage


GDScript: no parser error when invalid setter function used in property

Godot version:  3b25548e4
OS/device including version: windows10
Issue description:
the setter used in the below code is invalid and it should be a compile time error instead of rumtime.
extends Node2D

func getter():
	return _prop

func setter(): ## <-- invalid setter function
	pass

var _prop
var prop:
	get = getter,
	set = setter   ## <-- no parser error here.

func _ready():
	prop = 12  ## <-- runtime error : invalid function call expected 0 arguments
	print(prop)

Issue is still present on latest master (85186bc)
seems easy to do by mistake

This issue's example is fixed on master (b4644e2):
func getter():
	return _prop

func setter():
	pass

var _prop
var prop: # Errors: Function "setter" cannot be used as setter because of its signature.
	get = getter,
	set = setter

func _ready():
	prop = 12
	print(prop)

It seems this issue needs to be closed.

Fixed by #53103.


Routing Not Choosing Shortest Route

BkCommonLib version: BKCommonLib-1.14.4-v1.jar
TrainCarts version: TrainCarts-1.14.4-v1.jar
Spigot version: 1.14.4

Problem or bug:
The routing algorithm is choosing routes that are longer than they need to be and look odd in terms of train movement. Below is a track layout diagram.

              Platform
             +---X-----+
--- Q -----+--------Z----+--------------------- Y --

A train at the platform, position X, with destination Y, is routed initially away from Y before doing a 180 degrees turn passing by Z and onto Y. This looks odd in terms of train movement. Furthermore in my case I have a destroyer sign to the left of X for incoming trains from Q so any train traveling from X to Y gets destroyed. I can workaround this by breaking the track to the left of X forcing the routing algorithm to move to the right initially rather than left.
This world is an old 1.7 one which didn't have this issue so something has changed with the routing algorithm in the interim.
Expected behaviour:
Train moves from X to Y moving initially to the right in the diagram above and hence doesn't reverse.
Steps to reproduce:
Setup the track above and check the routing algorithm output.

Did you try /train reroute? Are you able to show a video?

Yes I tried /train reroute & I'll see what I can do about a video although it's not something I've done before.

Here's a video that demonstrates the issue.
https://youtu.be/bdrWPI-2F_w
When I set destination to 'y' the minecart moves correctly. However with destination set to 'z' it sets off in the wrong direction before doing 180 degree turn to get to 'z'.
While making the video I learnt that I can use the 4th line of the launcher sign to workaround this issue & force the direction in which the minecart starts moving. If you want to close this issue with an as designed or will not fix then that's fine. It's just surprising that with the old 1.7 code the workaround was unnecessary.

That looks like correct behaviour, and what you had on 1.7 is probably an unintended side effect. Trains always spawn with a forward orientation, and if the 4th line of the launcher sign is empty, it always launches in the direction of its forward orientation.

Ok thank you for your help.

Even though I said that, I'll keep this open to let dev take a look about this before closing.

After half a year, I can safely say that the issue you were having is indeed correct behaviour, I shall close this issue with that note.


voiceChannel.leave() causes other voiceChannels to become silent

Following situation:
The bot is playing audio in two voice channels, channel#1 and channel#2.
When the audio in channel#1 is finished, the bot closes the voiceConnection and leaves the channel. In this moment the audio in channel#2 is abruptly cut off.
However, the bot stays in channel#2 until the audio should have been finished and remains silent until it receives the end-event. It then disconnects the voiceConnection and leaves channel#2.
This happens with different mp3-files (50-100KB, 4-6 seconds). @SpaceEEC also experiences this with prism. His description:
bot left channel [...]
other guild went silent
pause -> resume -> sound back
if i skip at other guild the same happens
calling .end() or leaving voiceChannel causing my bot to "mute/pause" all other guilds voice

Code-example:
function playAudio(voiceChannel, file) {

    voiceChannel.join().then(connection => {

        connection.playFile(file).on("end", () => {
                connection.disconnect();
                voiceChannel.leave();
        });

    });
}

Additional:
I'm using 11.0 in a fresh environment with node-opus, uws and erlpack.
Might be related to #801.

this is an known edge case with the discord voice servers, and is not on our end.


Text field in form not saving before opening dialog

Describe the bug
If you type something in a text field in a form and then open a dialog without first exiting the text field, it will not apply the text of the text field to the struct in time for the dialog to get it. I noticed this while responding to #1108.
How to reproduce
Run the code below, type something in the text field, and then press the sign in button without first exiting the text field.
Example code
type user struct {
	Username string
}

func main() {
	b := core.NewBody()
	u := &user{}
	core.NewForm(b).SetStruct(u)
	bt := core.NewButton(b).SetText("Sign in")
	bt.OnClick(func(e events.Event) {
		makeHome(bt, u)
	})
	b.RunMainWindow()
}

func makeHome(ctx core.Widget, u *user) {
	home := core.NewBody().AddTitle("Hello, " + u.Username)
	core.NewText(home).SetText("Page content")
	home.RunFullDialog(ctx)
}

Relevant output
No response
Platform
macOS

The same thing is true for switching to a different page in core.Pages.

This is all working now as of #1375.


Tidy RangeSet

@wufeipeng fix an issue in #2109 in the unused getPrev function of RangeSet.  This is an alternate fix, which eliminates several unused members of RangeSet and increases test coverage of the remaining member functions.

Codecov Report

Merging #2113 into develop will increase coverage by 0.03%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##           develop    #2113      +/-   ##
===========================================
+ Coverage    68.84%   68.87%   +0.03%
===========================================
  Files          684      684
  Lines        50367    50343      -24
===========================================
+ Hits         34674    34675       +1
+ Misses       15693    15668      -25

Impacted Files
Coverage Δ

src/ripple/basics/RangeSet.h
100% <ø> (ø)
:arrow_up:

src/ripple/basics/impl/RangeSet.cpp
100% <ø> (+27.77%)
:arrow_up:

src/ripple/basics/DecayingSample.h
77.77% <0%> (-8.34%)
:arrow_down:

src/ripple/beast/asio/io_latency_probe.h
97.01% <0%> (-1.5%)
:arrow_down:

src/ripple/server/impl/BaseWSPeer.h
67.5% <0%> (-0.63%)
:arrow_down:

Continue to review full report at Codecov.

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

Sorry to do this to you @ximinez and @mellery451, but I decided to switch to boost after that last bug was uncovered.  I choose to haveRangeSet class use an interval_set internally to keep the LedgerMaster code the same.

I don't mind a bit! I'll check it out ASAP.

Squash and passed, thanks!

@bachase The new Shard code uses lebesgue_sum, so we will need that. A couple of deficiencies I found with this class- No way to clear it and no way to determine if it is empty other than comparing the first item to absent which is ugly. I highly suggest adding clear and empty functions.

Thanks for the feedback.  I'm all for changing the interface as you suggest @nbougalis and @miguelportilla rather than the incremental changes I proposed. I'll also restore lesbegue_sum.

Get out your 🍅.  RangeSet was ending up as a mostly trivial wrapper over boost::icl::interval_set, so I decided to just make it a type alias and code the non-trivial to_string and prevMissing methods as free functions.  I'll admit the boost::icl has a bit of a learning curve, so I'm open to wrapping more of the interface if that is preferable.
@miguelportilla checkout https://github.com/bachase/rippled/commits/bc_shard to see the changes I made in your shard work.

@bachase I like the simplification of an alias and some free functions. The shard changes look good. Using empty and clear vs the previous hacks are definitely an improvement. The "tidy" became an overhaul! Thanks and nice job! 👍

Rebased on 0.70.0-b6 and squashed with just the latest approach since the incremental change isn't particularly useful to see.  Note that rs.lesbegue_sum is replaced by boost::icl::length(rs)`.

Merged into 0.80.0-b1


Kudu and deploy from BitBucket failing with no output

Our deployments stopped working and the only message I get in the tail log is:
D:\Program Files (x86)\SiteExtensions\Kudu\45.40512.1539\bin\scripts\starter.cmd deploy.cmd, stackTrace:    at Kudu.Core.Infrastructure.Executable.ExecuteInternal(ITracer tracer, Func`2 onWriteOutput, Func`2 onWriteError, Encoding encoding, String arguments, Object[] args)
   at Kudu.Core.Infrastructure.Executable.ExecuteWithProgressWriter(ILogger logger, ITracer tracer, String arguments, Object[] args)
   at Kudu.Core.Deployment.Generator.ExternalCommandBuilder.RunCommand(DeploymentContext context, String command)
   at Kudu.Core.Deployment.Generator.CustomBuilder.Build(DeploymentContext context)
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
   at Kudu.Core.Deployment.DeploymentManager.<Build>d__29.MoveNext()

Does anyone have an idea about where to start debugging this? Without an error message I feel a bit lost.
NPM fails on several packages before this but did so even when it was working so those libraries doesn't matter for this.

Anything interesting under LogFiles\kudu\trace (use Kudu Console to get at them)? Look for logs with matching time.

Not really. It's a bunch of NPM failures before that.
This is the end

I'm not 100% sure what I'm looking for either.

As I said I'm pretty sure we had those NPM failures when it worked too. It would be nice to solve those I guess though.

Can you try restarting the site in the portal. Then after waiting a bit, go to the deployments tab, where presumably you'll see a failure at the top. Click it, and then click the redeploy button. Does it fail again in the same way?
Also, can you share your site name, either directly or indirectly? This will help us investigate.

Yeah, got the same error. The site is salary2.azurewebsites.net.
When looking around in kudu console I saw that the trace level is 1. I will try running the deploy with  it at 4 and see if I get more information.

Another test is to try to push the same repo to another test site. This could help isolate if it's something messed up with the salary2 site, or if it's something in the state of the repo that makes it fail on any site.

Closing as the discussion has run dry, but we can re-open if more discussion is needed.

We actually managed to finally figure it out today. It had to do with some libraries that npm couldn't fetch on Azure (but worked in local dev).
"email-templates": "^0.1.7",
"nodemailer": "^1.0",
"nodemailer-ses-transport": "^1.2.0",

One or more of those three were crashing with different npm errors. I'm unsure if it was something with azure or just bad luck that corrupted our repository. Once we removed them it worked again (even before with the exception it actually deployed the new files).

That's odd. Can you repro this consistently, e.g. by trying to install those same packages manually from Kudu console? On the surface, it doesn't make sense that it would fail to download some npm packages but not others, since (presumably), they all come down from the same npm server.

One thing that could fail would be the path length (know problem with node on windows) but the paths where at 180 chars or something like that so it shouldn't be that. I can see if I can duplicate it to a minimal repro if there is something with the environment.
We moved to sending our emails from a dedicated service (built in .net) so it's not a problem for us anymore but I'll tell you if I manage to set up a repro.

Thanks, if you can figure something out, let us know. But if it's too much hassle and no longer relevant to you, don't worry about it :)


Add command that allows loading a single plugin if plugins contradict

My use case for this is I want to write a plugin that autoappends clipboard contents to a buffer stored in memory on copy (so I can paste the entire buffer all at once without having to switch between the program I'm copying from and a scratch file such as Google Keep or Notepad).
This particular plugin should not be used in combination with other plugins. So my solution is to add a single command so I can just run whichever plugin I need at any given point :).
If this is not desirable to you, I'm open to other implementations.
I have confirmed this works as desired when testing these changes against your amazon plugin with my tw-timestamp plugin reimplementation in the plugins directory.

@cr1901
Hi! Sorry for the late response.
It looks good to me, but it needs to be rebased to run the CI workflow.
So could you please rebase this branch onto the latest main ?
Thank you for your contribution <3


[Request] Add glyphs for TeX, PKGBUILD, Arduino and OpenSCAD

I suggest the addition of glyphs for TeX, Arch Linux's PKGBUILD (with the Arch svg icon), Arduino and OpenSCAD.
The related extensions would be, respectively:

.tex .sty .cls .dtx .ins (for TeX)
PKGBUILD (for Arch Linux's PKGBUILDs)
.ino (for Arduino files)
.scad (for OpenSCAD files)

Is this about the nonicons/nerdicons plugins?

Yes, sorry I didn't mention it.
It's about the nonicons.lua plugin.

It sadly looks like the https://github.com/yamatsum/nonicons font doesn't have any of your requested icons, so we can't add them.
I suggest opening an issue on their repo.
Some of those (TeX, Archlinux for PKGBUILD) are available in the nerdicons font, so we could add those to the nerdicons plugin.

Ok, I'll open an issue on the nonicons repo and close this one.
But is it possible for nonicons.lua to use more than one font?

But is it possible for nonicons.lua to use more than one font?

It wouldn't be nonicons anymore :sweat_smile:.
I'll see if we can have "fallback" plugins for icons.
So I guess this issue could be kept open as a icons_fallback plugin request, or something like that.


section anchors

@sindresorhus

When I'm looking at a list, eg https://awesomelists.top/#repos/onurakpolat/awesome-bigdata
And I click on a heading (section), eg Data Ingestion
I want a URL with anchor data-ingestion to be in the address bar
So I can share that with a co-worker directly, eg https://awesomelists.top/#repos/onurakpolat/awesome-bigdata--data-ingestion

Notes:

Inspect of the links on top shows there is something like that in the HTML eg

Data Ingestion

Such anchors exist on github and are usable, eg https://github.com/onurakpolat/awesome-bigdata/blob/master/#data-ingestion
They almost work on https://awesomelists.top:

Go to https://awesomelists.top/#repos/onurakpolat/awesome-bigdata
Now go to https://awesomelists.top/#data-ingestion, and you end up at the right place
But of course, if you go to https://awesomelists.top/#data-ingestion directly (in new tab or new incognito window), it doesn't go to the right place

A URL with two hashes https://awesomelists.top/#repos/onurakpolat/awesome-bigdata#data-ingestion is not valid, and if I use this, your site gets confused

So I suggest using -- instead of the second #, eg: https://awesomelists.top/#repos/onurakpolat/awesome-bigdata--data-ingestion

Same as https://github.com/sindresorhus/awesome/issues/1976

// @lockys @John-Lin


the feature of having the note window detached from the Obsidian main window

May I ask if this plugin will be able to support the feature of having the note window detached from the Obsidian main window, floating independently on the computer desktop, and even supporting edge hiding? If so, that would be very convenient, as I would be able to take notes anytime without having to open the Obsidian main window.

There are several ways to do this.  First, if the hover editor is focused, you can use the keyboard commands "Move current tab to new window" or "Open current tab in new window", which will move or duplicate the hover editor in a standalone window, respectively.
Or, if you prefer to use the mouse, show the hover editor's "view header" by clicking the boxed "v" in its title bar (unless you have turned on the "show view headers by default" option in hover editor settings, in which case you won't need to).  Either way, with the view header visible, you can drag the icon that appears on the left side of the header out to your desktop and drop it there or on another app, and the hover editor will pop out to a detached window.
(Note that these actions are available for all tabs, by the way, not just hover editors.  But with regular tabs you can drag them by the tab, even if you don't have their view headers visible.)


Add randomised Quickcheck testing for StackValue instances

Added some Quickcheck randomised tests for testing StackValue instances (as mentioned in https://github.com/osa1/hslua/issues/31)

Thanks for doing this.
Could you also add some assertions for checking the stack size after push operations? We're occasionally having bugs about this. (see recent list pop method bug fixed with #30)

I rewrote the tests to test pushing and peeking at random indices, instead of fixed at 1 and 4. I also added checks for stack size.
However, that seems to have uncovered a C bug.
Now the tests fail with a malloc error when pushing bytestrings. It looks like this on my machine -
HsLua
  StackValue
    ByteString -- unicode stuff
    ByteString should survive after GC/Lua destroyed
    Push/pop StackValue lists
    String with NUL byte should be pushed/popped correctly
  Random StackValues
    can push/pop booleans
    can push/pop ints
*** Error in `/home/aj/consulting/foss/hslua/.stack-work/dist/x86_64-linux/Cabal-<IP_ADDRESS>/build/test/test': malloc(): smallbin double linked list corrupted: 0x00007f5168064290 ***
Test suite failure for package hslua-0.4.1
    test:  exited with: ExitFailure (-6)
Logs printed to console

Because it fails in C code, we don't get useful logs. However, some debugging tells me that the test fails at values like this -
Testing value ------------------------------- "\233F(\253"
Inserted at indices: [2,4,4,5,5,8,8,13,13,16,17,19,19,21]
Total StackSize: 21

I have left in the debugging statements in the code so you can simply uncomment them to check this on your machine.
Also, it seems like the test programs are also failing with logs like the following -
Linking .stack-work/dist/x86_64-linux/Cabal-<IP_ADDRESS>/build/test/test ...
hslua-0.4.1: test (suite: callbacks)
begin
callback 1
callback 2
reset callbacks
add callbacks in reverse order
callback 3
callback 2
callback 1
Failing from Lua
3
false
callback 1 return value
[string "examples/callbacks/callbacks.lua"]:18: failed
end
hslua-0.4.1: test (suite: err_prop)
Lua: 10
Haskell: 9
Lua: 8
Haskell: 7
Lua: 6
Haskell: 5
Lua: 4
Haskell: 3
Lua: 2
Haskell: 1
Lua: 0
ret: 2
errMsg: [string "examples/err_prop/err_prop.lua"]:4: [string "examples/err_prop/err_prop.lua"]:4: [string "examples/err_prop/err_prop.lua"]:4: [string "examples/err_prop/err_prop.lua"]:4: [string "examples/err_prop/err_prop.lua"]:4: [string "examples/err_prop/err_prop.lua"]:12: Failing from Lua
top: 1
Haskell: 10
Lua: 9
Haskell: 8
Lua: 7
Haskell: 6
Lua: 5
Haskell: 4
Lua: 3
Haskell: 2
Lua: 1
Haskell: 0
errMsg: [string "examples/err_prop/err_prop.lua"]:4: [string "examples/err_prop/err_prop.lua"]:4: [string "examples/err_prop/err_prop.lua"]:4: [string "examples/err_prop/err_prop.lua"]:4: [string "examples/err_prop/err_prop.lua"]:4: Failing from Haskell
hslua-0.4.1: test (suite: haskellfun)
hello world!
335.54432
Hello, World!
Error caught from Haskell land: argument 1 of Haskell function: number expected, got string

Error caught from Haskell land: argument 2 of Haskell function: number expected, got no value

I have not investigated this further, so I don't know what the problem with the test programs is.

Wow, this is messed up! I'm running some experiments to understand the issue here and I'm getting stack traces like:
λ:19> main
*** Error in `/usr/local/lib64/ghc-7.10.1/bin/ghc': free(): invalid pointer: 0x00007f718c2aa3c0 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x730bf)[0x7f71969350bf]
/lib64/libc.so.6(+0x7892e)[0x7f719693a92e]
/lib64/libc.so.6(+0x79636)[0x7f719693b636]
/usr/local/lib64/ghc-7.10.1/bin/../rts/libHSrts_thr-ghc7.10.1.so(+0x35572)[0x7f71970c9572]
/usr/local/lib64/ghc-7.10.1/bin/../rts/libHSrts_thr-ghc7.10.1.so(+0x3565c)[0x7f71970c965c]
/usr/local/lib64/ghc-7.10.1/bin/../rts/libHSrts_thr-ghc7.10.1.so(+0x3c2bd)[0x7f71970d02bd]
/usr/local/lib64/ghc-7.10.1/bin/../rts/libHSrts_thr-ghc7.10.1.so(+0x2d531)[0x7f71970c1531]
/usr/local/lib64/ghc-7.10.1/bin/../rts/libHSrts_thr-ghc7.10.1.so(+0x2e18c)[0x7f71970c218c]
/usr/local/lib64/ghc-7.10.1/bin/../rts/libHSrts_thr-ghc7.10.1.so(scheduleWaitThread+0x98)[0x7f71970c3248]
/usr/local/lib64/ghc-7.10.1/bin/../rts/libHSrts_thr-ghc7.10.1.so(hs_main+0x7b)[0x7f71970bfb1b]
/usr/local/lib64/ghc-7.10.1/bin/ghc[0x50c9fb]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x7f71968e3b05]
/usr/local/lib64/ghc-7.10.1/bin/ghc[0x41cc39]

I'm wondering if this could be related with GHC RTS. I'll be debugging this.

Using non-threaded RTS helped with debugging:
Program received signal SIGSEGV, Segmentation fault.
0x00000000006382a8 in luaS_newlstr ()
Missing separate debuginfos, use: zypper install libgcc_s1-debuginfo-4.8.3+r212056-2.2.4.x86_64 libgmp10-debuginfo-5.1.3-3.1.2.x86_64
(gdb) bt
#0  0x00000000006382a8 in luaS_newlstr ()
#1  0x000000000063db2a in lua_pushlstring ()
#2  0x0000000000410421 in cf9A_info ()
#3  0x0000000000000000 in ?? ()

Let's see what this means..

Merged, thanks! You can see the fix here: https://github.com/osa1/hslua/commit/0dbe42655b9929de03b0327d608878744b33314a

Great! Thanks!


Commit a28dbc8 seems to have broken compdef usage in custom/*.zsh

I started getting command not found: compdef after this commit. I've removed ~/.zcompdump* to no avail. I've also ran compinit. Am I missing something or is this actually a regression?

I think this is a duplicate of #4072 and #4048. Yes, it's a change: custom code now runs before the plugins and before the completion system is initialized, so compdef calls will fail.
Could you check through those other two issues, and if it looks like your issue, chime in there and close this one?

I'm sorry yes this is a dup. I guess I didn't look hard enough.


{horus_ex,module_not_found,#{module => erlang}}

What does not work?
Switching from old khepri to the latest stable one (0.7.0), we're getting this error in the release's logs:
2023-08-10T11:14:53.997963+00:00 error: Ranch listener http, connection process <0.1643.0>, stream 1 had its request process <0.1645.0> exit with reason {horus_ex,module_not_found,#{module => erlang}} and stacktrace [{horus,get_object_code_from_code_server,1,[{file,"/home/zab/dev/ics/_build/default/lib/horus/src/horus.erl"},{line,1984}]},{horus,disassemble_module1,2,[{file,"/home/zab/dev/ics/_build/default/lib/horus/src/horus.erl"},{line,1927}]},{horus,disassemble_module,2,[{file,"/home/zab/dev/ics/_build/default/lib/horus/src/horus.erl"},{line,1879}]},{horus,lookfunction,4,[{file,"/home/zab/dev/ics/_build/default/lib/horus/src/horus.erl"},{line,1778}]},{horus,pass1_process_function,4,[{file,"/home/zab/dev/ics/_build/default/lib/horus/src/horus.erl"},{line,1155}]},{maps,fold_1,4,[{file,"maps.erl"},{line,416}]},{horus,extract_module_info_functions,1,[{file,"/home/zab/dev/ics/_build/default/lib/horus/src/horus.erl"},{line,745}]},{horus,to_standalone_fun3,2,[{file,"/home/zab/dev/ics/_build/default/lib/horus/src/horus.erl"},{line,497}]}]
[...]

Expected behavior
Our service was perfectly working with old khepri.
Moreover, this error doesn't happen locally (DEV mode). It only triggers when deploying our service as a release.
How to reproduce

Erlang 26.0.2
rebar3

rebar 2.6.4 22 20210518_220133 git 2.5.1-420-g33b1898

When connecting to the release node, this error is raised IMHO:

$ /opt/ics/bin/ics remote_console
Erlang/OTP 26 [erts-14.0.2] [source] [64-bit] [smp:6:6] [ds:6:6:10] [async-threads:1] [jit:ns]
Eshell V14.0.2 (press Ctrl+G to abort, type help(). for help)

> code:get_object_code(erlang).
error

%% but this works as you can see
> erlang:module_info().
[{module,erlang},
 {exports,[{binary_to_atom,1},
           {binary_to_existing_atom,1},
           {binary_to_integer,1},
           {binary_to_integer,2},
           {check_process_code,2},
           {check_process_code,3},
           {alias,0},
           {garbage_collect,1},
           {garbage_collect,2},
           {garbage_collect_message_area,0},
           {is_alive,0},
           {list_to_integer,2},
           {process_display,2},
           {process_flag,3},
           {setnode,3},
           {suspend_process,2},
           {suspend_process,1},
           {trace_pattern,2},
           {spawn,2},
           {spawn_link,2},
           {spawn_monitor,2},
           {spawn_monitor,3},
           {spawn_opt,2},
           {spawn_opt,...},
           {...}|...]},
 {attributes,[]},
 {compile,[]},
 {md5,<<62,137,211,78,85,65,250,44,245,216,197,139,35,74,
        142,40>>}]

> User switch command (type h for help)
 --> q

No response

Hi!
Do you have a sample release you could share for me to look at?
Indeed, Khepri/Horus should not try to extract the code from the erlang module in the first place.

@dumbbell unfortunately, I've no right (I'm just a developer) to share this release (or source code). But I'm willing to execute any command/script to help you debug this issue.

@dumbbell would it be possible to exclude the erlang module to be checked from this call?
Something along these lines:
get_object_code_from_code_server(erlang) ->
%% ignore erlang module
;
get_object_code_from_code_server(Module) ->
    case code:get_object_code(Module) of
        {Module, Beam, Filename} ->
            {Module, Beam, Filename, code_server};
        error ->
            ?horus_misuse(
               module_not_found,
               #{module => Module})
    end.

We already do something like that earlier in the code path. erlang is not the only module we want to skip. See horus_utils:should_process_module/1 and horus_utils:init_list_of_modules_to_skip/0.
After you get the error, could you please tell me what the return value of the following call is?

Thank you! erlang is missing from that list, weird...
Could you please share the output of:
[begin
     _ = application:load(App),
     application:get_key(App, modules)
 end || App <- [erts, kernel, stdlib]].

Thank you! erlang is missing from that list, weird...
Could you please share the output of:
[begin
     _ = application:load(App),
     application:get_key(App, modules)
 end || App <- [erts, kernel, stdlib]].

[undefined,
 {ok,[application,application_controller,application_master,
      application_starter,auth,code,code_server,dist_util,
      erl_boot_server,erl_compile_server,erl_distribution,
      erl_erts_errors,erl_reply,erl_kernel_errors,
      erl_signal_handler,erpc,error_handler,error_logger,file,
      file_server,file_io_server,global,global_group,
      global_search,group|...]},
 {ok,[argparse,array,base64,beam_lib,binary,c,calendar,dets,
      dets_server,dets_sup,dets_utils,dets_v9,dict,digraph,
      digraph_utils,edlin,edlin_context,edlin_expand,
      edlin_type_suggestion,epp,eval_bits,erl_abstract_code,
      erl_anno,erl_bits|...]}]

So your release doesn't have the erts application. I thought it was implicit to include it in any release as it is the actual runtime. Could you please list files in your release, after redacting any private filenames?

Here is the list of our apps bundled in rebar.config
%% Release
{relx, [{release, {ics, "latest"},
         [ kernel
         , stdlib
         , sasl
         , crypto
         , asn1
         , inets
         , compiler
         , syntax_tools
         , runtime_tools
         , tools
         %% SERVICES
         , ics
         , jiffy
         , gen_smtp
         , bbmustache
         , sh
         , uuid
         , khepri
         , cowboy
        ]}

And what about the actual list of files in the release archive?

Adding erts app to the list above seems to have fixed the issue.
Now, we don't have this error anymore with horus.
$ ls -1 /opt/ics/lib/erts-14.0.2/ebin/
atomics.beam
counters.beam
erlang.beam <--------- HERE IS THE MISSING GUY
erl_init.beam
erl_prim_loader.beam
erl_tracer.beam
erts.app
erts_code_purger.beam
erts_dirty_process_signal_handler.beam
erts_internal.beam
erts_literal_area_collector.beam
init.beam
persistent_term.beam
prim_buffer.beam
prim_eval.beam
prim_file.beam
prim_inet.beam
prim_net.beam
prim_socket.beam
prim_zip.beam
socket_registry.beam
zlib.beam

@dumbbell Could it be possible to make the erts app as a khepri dependency to avoid this issue?

Can I please get the entire list of files from your release, minus what is private, before you change that list?
I need to understand what the release looked like if erts isn't explicitly listed. I don't see why it would not be always included as nothing will work without it.

Sure thing. Here is a diff before and after adding the erts app explicitly to the release.
--- /tmp/a      2023-08-10 13:07:11.624935221 +0000
+++ /tmp/b      2023-08-10 13:07:08.089055463 +0000
@@ -9,6 +9,7 @@
 cowlib-2.11.0
 crypto-5.2
+erts-14.0.2
 gen_batch_server-0.8.8
 gen_smtp-1.3.0-d

Do you include the runtime (native executable like beam and so on) in the release?

Yes we do.

Ok, thank you.
I will probably add erts as a dependency to Horus to work around this problem. But it really feels like there is a problem in the way the release is created (probably not something on your side, but rather in relx or reltool). Not including erts by default (and always) does not make much sense to me. I will try to reproduce and study that further.

Thanks a lot for your support @dumbbell
We are planning to use khepri in all our products and staying away from Mnesia

Thank you! That's awesome to know :-)

Horus 0.2.4 and the just released Khepri 0.8.0 include a fix for this problem.

@dumbbell We gonna give Khepri 0.8.0a try and report back any issue.


Feature: Add an option to disable selection checkbox feature

What feature or improvement do you think would benefit Files?
Checkbox behavior changed in #11546. This eliminates the need for a dedicated checkbox column, but some users do not need the checkbox feature itself. So there should be an option to disable selection checkbox feature.
Requirements

Add an option to disable selection checkbox feature
Checkboxes do not appear when items are hovered or selected if disabled.

Files Version
<IP_ADDRESS>
Windows Version
Windows 11 22H2
Comments
No response

The only downside to the checkbox is that it covers up the thumbnail on hover (and only in the details layout). We want to give this change some time to settle and see if users get used to it before adding a setting to turn it off.

I second OP's thoughts. I use the details layout to work with a lot of image files, and use the thumbnails to quickly navigate my folders. While checkboxes are a great feature, they can sometimes get in the way. Perhaps they could be put next to the thumbnails instead of covering them, giving us the best of both worlds? Thanks!

Either way there is a tradeoff, putting them next to the thumbnails takes up valuable horizontal space.

I agree, it's annoying that the checkbox is activated by selecting a single item. It should fire only if you hold down the shift key or select multiple items with the mouse

@hishitetsu should clicking the thumbnail still select the item?

In my opinion, if you select the thumbnail it should select the element but not the checkbox (unless you specifically activate it with the mouse). But if you select several elements, then the checkbox of these should be activated. I think it would be the most intuitive way for the user.

@hishitetsu should clicking the thumbnail still select the item?

It should. It is not intuitive that clicking on a thumbnail does not select the item.
How about not showing checkboxes when no item is selected? Because there is no difference between clicking a checkbox and clicking a thumbnail until any item is selected. Checkboxes should appear when any item is selected. This way, there will be fewer comments about wanting to disable the checkboxes.

Is it necessary to provide a third option to never show check boxes (even when multiple items are selected)?

I don't think it is necessary. I'm uncomfortable with the empty checkboxes that appear just by hovering over an item. Simply not displaying this should greatly reduce discomfort.

If checkboxes appear after an item is selected, no functionality is lost.

Looking at this from the other extreme, do we need a setting at all? Maybe we only start showing the checkbox when the user clicks a thumbnail.

I agree. It would be good to start with this.

May I open another feature request? I would prefer to keep this in case we should add an option to disable checkboxes.

Of course

hello folks,
I also believe that there should be an option to disable this function. As others have mentioned in detail view tickmark covers the thumbnail and it confuses while selecting multiple files of different formats. also in column view you don't get this tickmark when you select a file.

Yup I also think there should be an option to disable checkboxes.

Thank you for your feedback, @hishitetsu implemented a change so that the check box only shows when the mouse is on top of the thumbnail.

when to expect this new update?

We're targeting the end of April but you can already try some of the improvements in the latest preview build. https://files.community/download

adding an option to disable the checkbox feature would help. this is still there in the beta version. if I click on any file, that file thumbnail gets covered by a checkbox. Is there any option to go back to the previous version?

The next preview build will have an option to hide the checkbox even when items are selected.


RFC: Analog Control in Quil

I've included a proposal as well as a diff with updates to the language spec. Looking forward to hearing everyone's thoughts.

@stylewarning - I moved this to an rfcs/ folder and out of the spec so would like to merge now


Calling DELETE on $bulkdata-status for a running job produces strange results

Describe the bug
If there are ongoing partitions (partitions == export of a particular resources type in our impl) when the DELETE is invoked, then a subsequent call to GET /$bulkdata-status results in a 202.
Then, when these partitions finish, the call to GET /$bulkdata-status returns just the results of just these partitions (and not the ones that completed prior to the DELETE).
Environment
main
To Reproduce
Steps to reproduce the behavior:

Perform an export against resource types with a big difference in resource count
Cancel the job while the different resourceType partitions have different underlying statuses
Call the $bulkdata-status endpoint for this job (results in a 202 Accepted)
Call the $bulkdata-status endpoint for this job again

Note that the result is an export-status result that contains just the resourceType exports that were not-yet-complete.
Note also that there is no indication that this is a partial export result.
Expected behavior
Per the spec, a user should be able to invoke DELETE on this endpoint for a running job:
https://hl7.org/fhir/uv/bulkdata/export/index.html#bulk-data-delete-request
In such cases, it would be nice if we could do one of the following things:
A. cancel the job AND delete it.  if there are underlying partitions that are still running, then we'd need to find a way to purge those after they come to a stop.  i'm not sure if there is a good way to do this in liberty batch (we've yet to find it).
B. mark the job as failed somehow so that we don't emit the partial results in the bulkdata-status endpoint
Additional context
Below is a log that shows the confusing behavior:
14:23:02.378 INFO Received request: tenantId:[default] dsId:[default] user:[fhiruser] method:[POST] uri:[https://***/fhir-server/api/v4/$export] originalUri:[https://***/basic/$export]
14:23:02.727 INFO Completed request[0.349 secs]: tenantId:[default] dsId:[default] user:[fhiruser] method:[POST] uri:[https://***/fhir-server/api/v4/$export] originalUri:[https://***/basic/$export] status:[202]
14:23:03.168 INFO No SparkSession in classpath; skipping SparkParquetWriter initialization
14:23:03.211 INFO No SparkSession in classpath; skipping SparkParquetWriter initialization
14:23:03.214 INFO No SparkSession in classpath; skipping SparkParquetWriter initialization
14:23:03.328 INFO startPartUpload: Start multi-part upload for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Patient_1.ndjson to bucket - fhir-export-2fbaaea5-68b5-4775-8a40-c1eb3c4f12d5
14:23:03.415 INFO startPartUpload: Start multi-part upload for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_1.ndjson to bucket - fhir-export-2fbaaea5-68b5-4775-8a40-c1eb3c4f12d5
14:23:04.302 INFO startPartUpload: Start multi-part upload for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Condition_1.ndjson to bucket - fhir-export-2fbaaea5-68b5-4775-8a40-c1eb3c4f12d5
14:23:05.472 INFO multiPartUpload: Upload part 1 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Patient_1.ndjson
14:23:06.835 INFO multiPartUpload: Upload part 2 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Patient_1.ndjson
14:23:07.578 INFO multiPartUpload: Upload part 1 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_1.ndjson
14:23:07.594 INFO finishMultiPartUpload: Upload finished for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Patient_1.ndjson
14:23:07.595 INFO bulkexportfastjob[395] processed 32832 resources in 4.43 seconds (rate=7419.1 resources/second)
14:23:07.769 INFO multiPartUpload: Upload part 1 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Condition_1.ndjson
14:23:07.944 INFO No SparkSession in classpath; skipping SparkParquetWriter initialization
14:23:07.994 INFO startPartUpload: Start multi-part upload for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/MedicationRequest_1.ndjson to bucket - fhir-export-2fbaaea5-68b5-4775-8a40-c1eb3c4f12d5

In this point, the job partitions are in one of 3 statuses:

the Patient partition is completed
the Condition and MedicationRequest partitions are still running and almost complete
the Observation partition is running and has much work left
the ExplanationOfBenefit partition has yet to start

Now we get our DELETE request:
14:23:08.926 INFO Received request: tenantId:[default] dsId:[default] user:[fhiruser] method:[DELETE] uri:[https://***/fhir-server/api/v4/$bulkdata-status?job=LZycJOGZ0qVzCprdpGH43g] originalUri:[https://***/basic/$bulkdata-status?job=LZycJOGZ0qVzCprdpGH43g]
14:23:09.643 INFO FFDC1015I: An FFDC Incident has been created: "com.ibm.ws.jbatch.rest.internal.resources.RequestException: The specified job instance, 389, cannot be purged because it has active job executions. com.ibm.ws.jbatch.rest.internal.resources.RequestRouter 71" at ffdc_21.09.07_<IP_ADDRESS>.log
14:23:09.649 INFO Completed request[0.724 secs]: tenantId:[default] dsId:[default] user:[fhiruser] method:[DELETE] uri:[https://***/fhir-server/api/v4/$bulkdata-status?job=LZycJOGZ0qVzCprdpGH43g] originalUri:[https://***/basic/$bulkdata-status?job=LZycJOGZ0qVzCprdpGH43g] status:[202]

Note that the in-progress partitions all complete...our fast-export impl doesn't seem to check the job status when its deciding whether to read another "item" or not:
-LZycJOGZ0qVzCINFO multiPartUpload: Upload part 2 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_1.ndjson
14:23:12.470 INFO multiPartUpload: Upload part 2 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Condition_1.ndjson
14:23:12.629 INFO multiPartUpload: Upload part 1 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/MedicationRequest_1.ndjson
14:23:13.082 INFO finishMultiPartUpload: Upload finished for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_1.ndjson
14:23:13.085 INFO startPartUpload: Start multi-part upload for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_2.ndjson to bucket - fhir-export-2fbaaea5-68b5-4775-8a40-c1eb3c4f12d5
14:23:13.572 INFO multiPartUpload: Upload part 3 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Condition_1.ndjson
14:23:13.910 INFO finishMultiPartUpload: Upload finished for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Condition_1.ndjson
14:23:13.910 INFO startPartUpload: Start multi-part upload for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Condition_2.ndjson to bucket - fhir-export-2fbaaea5-68b5-4775-8a40-c1eb3c4f12d5
14:23:16.200 INFO multiPartUpload: Upload part 2 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/MedicationRequest_1.ndjson
14:23:17.227 INFO multiPartUpload: Upload part 1 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_2.ndjson
14:23:17.312 INFO finishMultiPartUpload: Upload finished for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/MedicationRequest_1.ndjson
14:23:17.313 INFO bulkexportfastjob[395] processed 161492 resources in 9.37 seconds (rate=17240.3 resources/second)
14:23:17.325 INFO multiPartUpload: Upload part 1 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Condition_2.ndjson

Interestingly, this is when we finally get the status of the completed Patient export:
14:23:17.523 INFO bulkexportfastjob[395]                          Patient      32832
14:23:17.524 INFO bulkexportfastjob[395] -------------------------------- ----------
14:23:17.526 INFO bulkexportfastjob[395]                            TOTAL      32832

14:23:19.090 INFO multiPartUpload: Upload part 2 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Condition_2.ndjson
14:23:19.600 INFO finishMultiPartUpload: Upload finished for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Condition_2.ndjson
14:23:19.600 INFO bulkexportfastjob[395] processed 322301 resources in 16.39 seconds (rate=19666.5 resources/second)
14:23:20.795 INFO multiPartUpload: Upload part 2 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_2.ndjson
14:23:21.811 INFO finishMultiPartUpload: Upload finished for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_2.ndjson
14:23:21.811 INFO startPartUpload: Start multi-part upload for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_3.ndjson to bucket - fhir-export-2fbaaea5-68b5-4775-8a40-c1eb3c4f12d5
14:23:25.110 INFO multiPartUpload: Upload part 1 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_3.ndjson
14:23:28.407 INFO multiPartUpload: Upload part 2 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_3.ndjson
14:23:29.303 INFO finishMultiPartUpload: Upload finished for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_3.ndjson
14:23:29.304 INFO startPartUpload: Start multi-part upload for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_4.ndjson to bucket - fhir-export-2fbaaea5-68b5-4775-8a40-c1eb3c4f12d5
14:23:32.469 INFO multiPartUpload: Upload part 1 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_4.ndjson
14:23:36.607 INFO multiPartUpload: Upload part 2 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_4.ndjson
14:23:37.525 INFO finishMultiPartUpload: Upload finished for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_4.ndjson
14:23:37.526 INFO startPartUpload: Start multi-part upload for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_5.ndjson to bucket - fhir-export-2fbaaea5-68b5-4775-8a40-c1eb3c4f12d5
14:23:40.718 INFO multiPartUpload: Upload part 1 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_5.ndjson
14:23:44.261 INFO multiPartUpload: Upload part 2 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_5.ndjson
14:23:45.151 INFO finishMultiPartUpload: Upload finished for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_5.ndjson
14:23:45.151 INFO startPartUpload: Start multi-part upload for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_6.ndjson to bucket - fhir-export-2fbaaea5-68b5-4775-8a40-c1eb3c4f12d5
14:23:48.618 INFO multiPartUpload: Upload part 1 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_6.ndjson
14:23:51.989 INFO multiPartUpload: Upload part 2 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_6.ndjson
14:23:53.302 INFO finishMultiPartUpload: Upload finished for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_6.ndjson
14:23:53.303 INFO startPartUpload: Start multi-part upload for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_7.ndjson to bucket - fhir-export-2fbaaea5-68b5-4775-8a40-c1eb3c4f12d5
14:23:56.205 INFO multiPartUpload: Upload part 1 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_7.ndjson
14:23:59.893 INFO multiPartUpload: Upload part 2 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_7.ndjson
14:24:02.446 INFO finishMultiPartUpload: Upload finished for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_7.ndjson
14:24:02.446 INFO startPartUpload: Start multi-part upload for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_8.ndjson to bucket - fhir-export-2fbaaea5-68b5-4775-8a40-c1eb3c4f12d5
14:24:05.547 INFO multiPartUpload: Upload part 1 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_8.ndjson
14:24:09.158 INFO multiPartUpload: Upload part 2 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_8.ndjson
14:24:09.955 INFO finishMultiPartUpload: Upload finished for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_8.ndjson
14:24:09.955 INFO startPartUpload: Start multi-part upload for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_9.ndjson to bucket - fhir-export-2fbaaea5-68b5-4775-8a40-c1eb3c4f12d5
14:24:10.516 INFO multiPartUpload: Upload part 1 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_9.ndjson
14:24:10.857 INFO finishMultiPartUpload: Upload finished for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/Observation_9.ndjson
14:24:10.857 INFO bulkexportfastjob[395] processed 1615191 resources in 67.64 seconds (rate=23878.5 resources/second)

I let it sit here for a minute to show that nothing is happening any more util we make the GET $bulkdata-status request, at which point it starts the previously unstarted ExplanationOfBenefit partition:
14:25:46.498 INFO Received request: tenantId:[default] dsId:[default] user:[fhiruser] method:[GET] uri:[https://***/fhir-server/api/v4/$bulkdata-status?job=HyUTnu8MFcZbwAU17X24RA] originalUri:[https://***/basic/$bulkdata-status?job=HyUTnu8MFcZbwAU17X24RA]
2021-09-07 14:25:46.618 wh-cmsiop-cthon-fhir-internal-b4c7d69bc-ct86s fhir-internal INFO Completed request[0.121 secs]: tenantId:[default] dsId:[default] user:[fhiruser] method:[GET] uri:[https://***/fhir-server/api/v4/$bulkdata-status?job=HyUTnu8MFcZbwAU17X24RA] originalUri:[https://***/basic/$bulkdata-HyUTnu8MFcZbwINFO Received request: tenantId:[default] dsId:[default] user:[fhiruser] method:[GET] uri:[https://***/fhir-server/api/v4/$bulkdata-status?job=LZycJOGZ0qVzCprdpGH43g] originalUri:[https://***/basic/$bulkdata-status?job=LZycJOGZ0qVzCprdpGH43g]
2021-09-07 14:25:57.704 wh-cmsiop-cthon-fhir-internal-b4c7d69bc-ct86s fhir-internal INFO Completed request[0.65 secs]: tenantId:[default] dsId:[default] user:[fhiruser] method:[GET] uri:[https://***/fhir-server/api/v4/$bulkdata-status?job=LZycJOGZ0qVzCprdpGH43g] originalUri:[https://***/basic/$bulkdata-LZycJOGZ0qVzCINFO No SparkSession in classpath; skipping SparkParquetWriter initialization
14:25:58.227 INFO No SparkSession in classpath; skipping SparkParquetWriter initialization
14:25:58.237 INFO bulkexportfastjob[396] processed 0 resources in 0.01 seconds (rate=0.0 resources/second)
14:25:58.239 INFO No SparkSession in classpath; skipping SparkParquetWriter initialization
14:25:58.243 INFO bulkexportfastjob[396] processed 0 resources in 0.02 seconds (rate=0.0 resources/second)
14:25:58.250 INFO bulkexportfastjob[396] processed 0 resources in 0.01 seconds (rate=0.0 resources/second)
14:25:59.662 INFO No SparkSession in classpath; skipping SparkParquetWriter initialization
14:25:59.709 INFO startPartUpload: Start multi-part upload for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_1.ndjson to bucket - fhir-export-2fbaaea5-68b5-4775-8a40-c1eb3c4f12d5
14:26:00.992 INFO multiPartUpload: Upload part 1 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_1.ndjson
14:26:03.028 INFO multiPartUpload: Upload part 2 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_1.ndjson
14:26:04.238 INFO multiPartUpload: Upload part 3 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_1.ndjson
14:26:05.297 INFO finishMultiPartUpload: Upload finished for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_1.ndjson
14:26:05.297 INFO startPartUpload: Start multi-part upload for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_2.ndjson to bucket - fhir-export-2fbaaea5-68b5-4775-8a40-c1eb3c4f12d5
14:26:06.530 INFO multiPartUpload: Upload part 1 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_2.ndjson
14:26:08.406 INFO multiPartUpload: Upload part 2 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_2.ndjson
14:26:09.475 INFO multiPartUpload: Upload part 3 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_2.ndjson
14:26:10.250 INFO finishMultiPartUpload: Upload finished for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_2.ndjson
14:26:10.250 INFO startPartUpload: Start multi-part upload for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_3.ndjson to bucket - fhir-export-2fbaaea5-68b5-4775-8a40-c1eb3c4f12d5
14:26:11.382 INFO multiPartUpload: Upload part 1 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_3.ndjson
14:26:13.727 INFO multiPartUpload: Upload part 2 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_3.ndjson
14:26:14.587 INFO multiPartUpload: Upload part 3 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_3.ndjson
14:26:14.997 INFO finishMultiPartUpload: Upload finished for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_3.ndjson
14:26:14.997 INFO startPartUpload: Start multi-part upload for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_4.ndjson to bucket - fhir-export-2fbaaea5-68b5-4775-8a40-c1eb3c4f12d5
14:26:16.110 INFO multiPartUpload: Upload part 1 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_4.ndjson
14:26:17.972 INFO multiPartUpload: Upload part 2 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_4.ndjson
14:26:18.848 INFO multiPartUpload: Upload part 3 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_4.ndjson
14:26:18.929 INFO finishMultiPartUpload: Upload finished for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_4.ndjson
14:26:18.929 INFO startPartUpload: Start multi-part upload for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_5.ndjson to bucket - fhir-export-2fbaaea5-68b5-4775-8a40-c1eb3c4f12d5
14:26:20.047 INFO multiPartUpload: Upload part 1 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_5.ndjson
14:26:21.945 INFO multiPartUpload: Upload part 2 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_5.ndjson
14:26:22.912 INFO multiPartUpload: Upload part 3 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_5.ndjson
14:26:22.986 INFO finishMultiPartUpload: Upload finished for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_5.ndjson
14:26:22.986 INFO startPartUpload: Start multi-part upload for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_6.ndjson to bucket - fhir-export-2fbaaea5-68b5-4775-8a40-c1eb3c4f12d5
14:26:24.090 INFO multiPartUpload: Upload part 1 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_6.ndjson
14:26:25.950 INFO multiPartUpload: Upload part 2 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_6.ndjson
14:26:27.125 INFO multiPartUpload: Upload part 3 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_6.ndjson
14:26:27.300 INFO finishMultiPartUpload: Upload finished for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_6.ndjson
14:26:27.301 INFO startPartUpload: Start multi-part upload for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_7.ndjson to bucket - fhir-export-2fbaaea5-68b5-4775-8a40-c1eb3c4f12d5
14:26:28.392 INFO multiPartUpload: Upload part 1 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_7.ndjson
14:26:30.546 INFO multiPartUpload: Upload part 2 to UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_7.ndjson
14:26:31.347 INFO finishMultiPartUpload: Upload finished for UE0OvQ2_vUJHeZ5-P3ns-9BTRgzTqoFsXYCbhNVT-DU/ExplanationOfBenefit_7.ndjson
14:26:31.347 INFO bulkexportfastjob[396] processed 233742 resources in 31.68 seconds (rate=7377.3 resources/second)
14:26:31.539 INFO bulkexportfastjob[396]                MedicationRequest     161492
14:26:31.539 INFO bulkexportfastjob[396]                      Observation    1615191
14:26:31.539 INFO bulkexportfastjob[396]                        Condition     322301
14:26:31.539 INFO bulkexportfastjob[396]             ExplanationOfBenefit     233742
14:26:31.539 INFO bulkexportfastjob[396] -------------------------------- ----------
14:26:31.539 INFO bulkexportfastjob[396]                            TOTAL    2332726

After some time, we get $bulkdata-status one more time, and we get a 200 OK with the partial export result that includes all the in-flight exports from when DELETE was invoked, but not the completed partition with the Patient export:
14:27:01.712 INFO Received request: tenantId:[default] dsId:[default] user:[fhiruser] method:[GET] uri:[https://***/fhir-server/api/v4/$bulkdata-status?job=LZycJOGZ0qVzCprdpGH43g] originalUri:[https://***/basic/$bulkdata-status?job=LZycJOGZ0qVzCprdpGH43g]
14:27:01.922 INFO Completed request[0.211 secs]: tenantId:[default] dsId:[default] user:[fhiruser] method:[GET] uri:[https://***/fhir-server/api/v4/$bulkdata-status?job=LZycJOGZ0qVzCprdpGH43g] originalUri:[https://***/basic/$bulkdata-status?job=LZycJOGZ0qVzCprdpGH43g] status:[200]

Based on the joblogs, the first execution resulted in an exit status of STOPPED:
==========================================================
Stopped invoking execution for a job
 JobInstance id = 389
 JobExecution id = 395
 Job Name = bulkexportfastjob
 Job Parameters = {fhir.datastoreid=default, import.fhir.storagetype=https, fhir.incomingUrl=https://***/basic/$export, fhir.bulkdata.outcome=default, fhir.resourcetype=Observation,Condition,Patient,MedicationRequest,ExplanationOfBenefit, fhir.bulkdata.source=default, fhir.search.fromdate=2020-11-13T00:00:00Z, cos.bucket.pathprefix=***, fhir.tenant=default, fhir.exportFormat=application/fhir+ndjson}
 Job Batch Status = STOPPED, Job Exit Status = Patient[32832]
==========================================================

There were part logs for 0, 1, 2, and 3 (but no 4).
==========================================================
Stopped invoking execution for a partition
 Partition step name = step1
 Partition number = 0
 Partition-level (internal) step execution id = 1017
 Associated Top-level StepExecution id = 1014
 Associated Top-level JobInstance id = 389
 Associated Top-level JobExecution id = 395
 Associated Top-level Job Name = bulkexportfastjob
 Partition Batch Status = STOPPED, Partition Exit Status = STOPPED
 Partition Properties = {partition.resourcetype=Observation}
==========================================================
==========================================================
Stopped invoking execution for a partition
 Partition step name = step1
 Partition number = 1
 Partition-level (internal) step execution id = 1016
 Associated Top-level StepExecution id = 1014
 Associated Top-level JobInstance id = 389
 Associated Top-level JobExecution id = 395
 Associated Top-level Job Name = bulkexportfastjob
 Partition Batch Status = STOPPED, Partition Exit Status = STOPPED
 Partition Properties = {partition.resourcetype=Condition}
==========================================================
==========================================================
Completed invoking execution for a partition
 Partition step name = step1
 Partition number = 2
 Partition-level (internal) step execution id = 1015
 Associated Top-level StepExecution id = 1014
 Associated Top-level JobInstance id = 389
 Associated Top-level JobExecution id = 395
 Associated Top-level Job Name = bulkexportfastjob
 Partition Batch Status = COMPLETED, Partition Exit Status = COMPLETED
 Partition Properties = {partition.resourcetype=Patient}
==========================================================
==========================================================
Stopped invoking execution for a partition
 Partition step name = step1
 Partition number = 3
 Partition-level (internal) step execution id = 1018
 Associated Top-level StepExecution id = 1014
 Associated Top-level JobInstance id = 389
 Associated Top-level JobExecution id = 395
 Associated Top-level Job Name = bulkexportfastjob
 Partition Batch Status = STOPPED, Partition Exit Status = STOPPED
 Partition Properties = {partition.resourcetype=MedicationRequest}
==========================================================

When I invoked GET $bulkdata-status, it initiated a new execution of the same job instance.
It created partitions for the previously STOPPED partitions, but not for partition 2.
It also created partition 4 for the ExplanationOfBenefit resource (which hadn't yet been started in the first execution).

Cases tested
A - stop non-existent job, and delete
B - Stop non-existent
C - Delete non-existent
D - start, stop, start, delete
E - start, delete
F - start fail delete
G - start fail status delete
using https://gist.github.com/prb112/bf2b369f32dada351b235c5c30e73ab8
testing one other case on bulkdata status

Everything else checks out after that one fix in https://github.com/IBM/FHIR/pull/2789/files


feat: Extended the Scan API

I have extended the scan APIs. I followed the mentioned reference implementation.
It is not tested though and it would be very kind if someone could before merging, my debug probe hasn't arrived yet.

Tested it, works!

I've backed out the BssInfo changes because they ended up conflicting with #2461 , i'm merging the rest.


2.10.0 Bug with /cp/addons/power-tools/logs

Running into a few 2.10.0 breaking changes on a few pages with PoweTools in the CP. You probably already have seen some of these.
ErrorException in PowerToolsController.php line 54: Non-static method
Rap2hpou=tre\LaravelLogViewer\LaravelLogViewer::all() should not be called statically
Attaching stack trace
log.txt
Essentially just throwing a error on logs page.

Same as this: https://github.com/aryehraber/statamic-logbook/issues/1
Fixed here: https://github.com/aryehraber/statamic-logbook/pull/2

Got it. Will wait for next release. Thanks!

@dannyuk1982 can you PR here and I’ll merge and release?


Don't format dollar plus curly brackets

Man, why do we have Restyled acting in this code base 😂. I'd ignore it TBH