Allow inclusion in static builds

I'm trying to build a static version ffmpeg including rav1e, but it seems like one can't compile a static library that includes lgcc_s, because there's only a shard version of it.
gcc-10 -L<prefix>/lib -I<prefix>/lib -L/usr/lib/gcc/x86_64-linux-gnu/10 -static -Wl,--as-needed -Wl,-z,noexecstack -I<prefix>/include/rav1e -L<prefix>/lib -o /tmp/ffconf.EpJq5glV/test /tmp/ffconf.EpJq5glV/test.o -lrav1e -lgcc_s -lutil -lrt -lpthread -lm -ldl -lc -lgcc_s -lutil -lrt -lpthread -lm -ldl -lc -lm -lpthread
/usr/bin/ld: cannot find -lgcc_s
collect2: error: ld returned 1 exit status
ERROR: rav1e >= 0.1.0 not found using pkg-config

I'm not a lot into C so I'm not sure if that is something that even can be changed at all or if there's something I couldn't find that's allows this (although I searched quite thorough and all of the "solutions" simply didn't work or aren't applicable).

It seems a local problem. You seem to be missing a base library.

Yeah I do have libgcc_s.so, but that's not going to work for a static (libgcc_s.a) build and that's doesn't seem to be available  as static library (for technical reasons I guess)

Ref: https://packages.ubuntu.com/search?searchon=contents&keywords=libgcc_s.a&mode=filename&suite=focal&arch=amd64 (the few results are only mingw, which probably isn't really helpful in this instance)

If you look it up, you see a lot of people suggesting liking it dynamically, which isn't quite possible here, because it's defined via pkgconfig: https://stackoverflow.com/a/18803598/8220327

For reference the generated .pc file looks like this:
prefix=/path/to/the/prefix
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: rav1e
Description: The fastest and safest AV1 encoder
Version: 0.4.0
Libs: -L${libdir} -lrav1e  -lgcc_s -lutil -lrt -lpthread -lm -ldl -lc
Cflags: -I${includedir}/rav1e
Libs.private:  -lgcc_s -lutil -lrt -lpthread -lm -ldl -lc

I see in https://askubuntu.com/a/1190778 that someone recommends removing the rav1e shared library to build ffmpeg. We should look into why this workaround is necessary for some configurations.

I'm actually building without shared libraries:
RUSTFLAGS="-C target-cpu=native" cargo cinstall --release --locked --prefix "${prefix}" --library-type staticlib

To be clear: If I'm not linking it statically it's working just fine, it's only having problems while linking statically

FWIW I double checked and on Fedora Linux and my .pc also has -lgcc_s.
I did notice there is a -static-libgcc option to gcc, however I've not tested it. (I'm also not sure why rav1e depends on libgcc_s...)
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: rav1e
Description: The fastest and safest AV1 encoder
Version: 0.5.0-alpha
Libs: -L${libdir} -lrav1e
Cflags: -I${includedir}/rav1e
Libs.private:  -lutil -ldl -lutil -lgcc_s -lutil -lrt -lpthread -lm -ldl -lc

I tested -static-libgcc and it didn't work, I tried to remove the -lgcc_s and it did actually compile, I'll check late if that still works during runtime

I note that media-autobuild_suite is also using this workaround for static builds:
https://github.com/m-ab-s/media-autobuild_suite/blob/962658b9/build/media-suite_compile.sh#L1077-L1088

It seems to be target at Windows though so there might be a difference there (likely using mingw, which seems to bring a static version of libgcc_s)

Apparently Rust's own unwinder normally depends on libgcc_s. I'm not sure if we can disable the unwinder (or would even want to - it probably requires abort on panic), though I did find this option for using libunwind instead, which might be easier to statically link. Maybe we should do this by default. https://github.com/rust-lang/rust/pull/59089

Even if not by default (one probably should benchmark it and look at the consequences for compilation und usage), it might make sense to add ist as an option if that's possible

You should open the issue on the rust side, we receive the link line directly from the compiler.

But is it the compiler though or the cargo-cinstall thingy?

So I tested and this works as a workaround (I haven't tested a panic though):
mv "${prefix}/lib/pkgconfig/rav1e.pc" "${prefix}/lib/pkgconfig/rav1e.pc.orig"
sed 's/ -lgcc_s/ /g' "${prefix}/lib/pkgconfig/rav1e.pc.orig" > "${prefix}/lib/pkgconfig/rav1e.pc"
rm "${prefix}/lib/pkgconfig/rav1e.pc.orig"

It is the compiler --print native-static-libs producing that link line.

Okay do you want to report it or should I? Because I don't really have experience and probably can't really provide Infos to them

Just so I can mess around with this a bit, are you statically linking libc as well? If so, which libc and/or target triple are you using?

I'm not entirely sure, I think it ist, but I can provide you with a little shell script that should be able to reproduce it

If so, which libc and/or target triple are you using

libc is probably gcc default, so glibc6 and target triple is omitted, so it should be x86_64-unknown-linux-gnu

You can download this, put it into an empty dir and execute it and it'll download ffmpeg and rav1e (into the folder of the script) and compile both locally with the prefix set to <folder of script>/prefix:

repro.sh
#!/bin/bash

set -e
cd "$(dirname "${0}")"

prefix="$(pwd)/prefix"

mkdir -p "${prefix}"

export CFLAGS="$CFLAGS -O3" CXXFLAGS="$CFLAGS"
export LDFLAGS="$LDFLAGS -L${prefix}/lib"
export LD_LIBRARY_PATH="${prefix}/lib"
export PKG_CONFIG_PATH="${prefix}/lib/pkgconfig"

ffmpeg_version="4.3.2"
rav1e_version="0.4.0"

echo "Fetching repositories..."
if [[ -d rav1e ]]; then
    pushd rav1e
    git fetch
else
    git clone https://github.com/xiph/rav1e.git rav1e
    pushd rav1e
fi
git checkout "v${rav1e_version}"
popd

if [[ -d ffmpeg ]]; then
    pushd ffmpeg
    git fetch
else
    git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
    pushd ffmpeg
fi
git checkout "n${ffmpeg_version}"
popd

echo "Building rav1e..."
pushd "rav1e"
echo " - Building..."
RUSTFLAGS="-C target-cpu=native" cargo cinstall --release --locked --prefix "${prefix}" --library-type staticlib
# tmp fix, because static build fails
#echo " - Fixing static build..."
#mv "${prefix}/lib/pkgconfig/rav1e.pc" "${prefix}/lib/pkgconfig/rav1e.pc.orig"
#sed 's/ -lgcc_s/ /g' "${prefix}/lib/pkgconfig/rav1e.pc.orig" >"${prefix}/lib/pkgconfig/rav1e.pc"
#rm "${prefix}/lib/pkgconfig/rav1e.pc.orig"
popd

echo "Building ffmpeg..."
pushd ffmpeg
echo " - Configuring..."

make clean
make -j "$(nproc)"
popd

The configuration log of ffmpeg (with that error) can be found at <folder of script>/ffmpeg/ffbuild/config.log. The workaround is also included, but commented out.

With the workaround I get:
~$ ldd ffmpeg/ffmpeg
        not a dynamic executable

So I guess libc is statically linked.

Okay do you want to report it or should I? Because I don't really have experience and probably can't really provide Infos to them

Please do and also open an issue on cargo-c. I can probably add a workaround on the cargo-c side.

Can you give me more info on where the compiler generates the list of libraries, so I can report something substantial to them?
Also what issue exactly do you want to raise me at cargo-c?

If you run on a crate with staticlib the following:
cargo rustc --lib -- --print native-static-libs

You'd get:
note: Link against the following native artifacts when linking against this static library. The order and any duplication can be significant on some platforms.

note: native-static-libs: -lutil -lutil -lgcc_s -lutil -lrt -lpthread -lm -ldl -lc

For rav1e you'd have to add the crate types to Cargo.toml like this:
diff --git a/Cargo.toml b/Cargo.toml
index 65b87ef4..fc1bfa52 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -138,6 +138,7 @@ required-features = ["binaries", "channel-api", "unstable"]
 bench = false

 [lib]
+crate-type = ["staticlib", "rlib", "cdylib"]
 bench = false

 [[bench]]

cargo-c automates this (and lots more), but the link line is produced by rustc and it is not correct for your use-case. We could discuss upstream if isn't better to use libgcc_eh.a and libgcc.a instead.
I confirm that panic=abort  does not omit -lgcc_s from the link line so potentially it uses something more than the unwinder.

Filed a report for the compiler, I'll see what's the result of that and then I think be can look into whether there's something to be done on the cargo-c part of it.

Can we consider the problem now solved?


Prisma Client: @map on the query level

Problem
Hey! Would love it if the query builder API introduces a way to @map on the query level. Per example change an id field on the response object to be databaseId but only on a single query. It's possible via a raw query using as but it would be nicer to do so on the query level. I think this would hugely increase performance on some cases when you have to loop on a findMany response to change the name of certain fields.
Suggested solution
Take a select query:
const users = prisma.user.findMany({ take: 10 })

which is the equivalent to
SELECT `main`.`User`.`id`, `main`.`User`.`createdAt`, `main`.`User`.`updatedAt`,
`main`.`User`.`email`, `main`.`User`.`name` FROM `main`.`User` LIMIT 10

To map only for this specific query you'd have to
const newUsers = users.map(x => ({...x, databaseId: x.id, id: undefined }))

which can be done with sql via the as operator like so (which is much much faster and scales very well):
SELECT `main`.`User`.`id` as databaseId, `main`.`User`.`createdAt`, `main`.`User`.`updatedAt`,
`main`.`User`.`email`, `main`.`User`.`name` FROM `main`.`User` LIMIT 10

Suggested API:
const users = prisma.user.findMany({ take: 10, map: { id: "databaseId" } })

Alternatives
Maybe not the keyword map but something else to not confuse people?
Also with the suggested API I didn't really give it much thought on how would it be properly typed but I am pretty sure it's possible, either way that would be I guess one of the challenges.
Additional context

wow this would be so useful, thanks alaa for this great feature request.

Did I understand correctly that you want to have id in the database and the Prisma schema data model, but the returned Javascript object should contain the data as databaseId?
Can you give insight why using @map on the schema level (to make it databaseId there and the Client results, but id in the database) is not an option?

@map will make all the queries return databaseId instead of id, and will also change the property name for other methods (input and output), on the other hand, what I am proposing works basically for a specific single query and only for the returned data (not the input data).
Motivation would be to give people more control on the shape of the returned data, in my case I want this so I can make the id a databaseId on certain parts of my app

Thanks, understood and a valid request to be able to do that on a query level. Our biggest problem would probably be our type system here, as that of course uses the id from the schema to type these objects. But that is of course secondary to your request 👍

Yes, as I mentioned in the initial issue, programmatically typing the result object depending on the user's input will be one of the challenges, I am thinking some sort of utility function like with Select but yeah I will explore on that if I came up with anything I will make sure to share it here, either way, I didn't delve too much into the prisma query constructor code but I think it would be slightly easier on that part. Thank you!

Okay so here is what I was able to come up with (with a help from a friend of mine and a kind stranger in typescript's discord)
// This is a wrapper around the methods that will be using map,
// required to be able to read the args (and the value of `map`) in the form of `as const`
declare function find<A>(x: Narrow<A>): A;

type Cast<A, B> = A extends B ? A : B;

type Narrowable =
    | string
    | number
    | bigint
    | boolean;

type Narrow<A> = Cast<A,
    | []
    | (A extends Narrowable ? A : never)
    | ({ [K in keyof A]: Narrow<A[K]> })
>;

// Our prisma model - works with complex types say per example posts etc
type User = {
    id: string;
    name: string;
    isVerified: boolean;
}

const args = find({ map: { id: "databaseId" } });

type y = typeof args["map"];

type Mapping<T> = { [K in keyof T]?: string };

type Replace<T, U extends Mapping<T>> = {
  [K in keyof T as K extends keyof U ? string & U[K] : K]: T[K]
};

type ControlledUserOutput = Replace<User, y>

const dbOutput: ControlledUserOutput = {
    databaseId: "something",
    name: "primsic",
    isVerified: true,
}

So, currently, when fetching related data (e.g., card with box details), the data is nested, requiring additional mapping to flatten the structure:
async getCardsWithBoxIndexAndTitle(userId: User['id']) {
  const cards = await this.prisma.card.findMany({
    where: { userId },
    include: {
      box: {
        select: {
          index: true,
          title: true,
        }
      }
    }
  })

  // Further mapping to flatten the structure
  const cardsWithBoxIndexAndId = cards.map((card) => ({
    ...card,
    boxIndex: card.box.index,
    boxTitle: card.box.title,
  }))

  return cardsWithBoxIndexAndId;
}

Suggested Feature:

Mapping (map option): This would allow direct renaming and restructuring of fields from related entities in the query itself. For instance, map: { index: 'boxIndex', title: 'boxTitle' } would map box's index and title directly to boxIndex and boxTitle in the card entity.

Node Collapsing (removeNode option): This feature would enable the removal of the intermediate node (like box) and integrate its fields directly into the parent entity. This way, we could access card.boxIndex directly instead of card.box.boxIndex.

async getCardsWithBoxIndexAndId(userId: User['id']) {
  const cardsWithBoxIndexAndId = await this.prisma.card.findMany({
    where: { userId },
    include: {
      box: {
        select: {
          index: true,
          title: true,
        },
        map: {
          index: boxIndex,
          title: boxTitle,
        },
        removeNode: true // or collapseNode something like that
      }
    },
  });

  return cardsWithBoxIndexAndId;
}

These features would allow for more streamlined and efficient data handling, especially in cases where a flattened data structure is preferable.
@janpio, I've also shared my thoughts in the thread Change response field names. I believe a separate discussion may not be necessary for this suggestion, but it's important for the Prisma team to consider the idea of streamlining the structure of database query responses.
Prisma ❤


Change JSON-RPC error code response for onchain revert

Problem
Some systems like ERC-4337 (Account Abstraction) use eth_call to extract onchain data by forcing a revert. (example). These revert bytes are then parsed using libraries like viem.
Currently viem can't properly parse Hedera's RPC response as the error code for an onchain revert isn't what the library expected.
For context, here is a sample reverting eth_call response that viem can parse (it parses into the viem type ContractFunctionRevertError):
{
  "jsonrpc": "2.0",
  "id": 4337,
  "error": {
    "code": 3,
    "message": "execution reverted",
    "data": "0x6ca7b8060000000000000000000000007152e0855bab82b8e10b8692e584ad034bd22912"
  }
}

This is what Hedera's reverting message looks like and it is being parsed into a CallExecutionError viem type
{
  "error": {
    "code": -32008,
    "message": "[Request ID: bf1be79b-7d2f-42ee-bc82-da42c9ce5e8f] execution reverted: CONTRACT_REVERT_EXECUTED",
    "data": "0x6ca7b8060000000000000000000000007152e0855bab82b8e10b8692e584ad034bd22912"
  },
  "jsonrpc": "2.0",
  "id": 4337
}

viem checks if the error code is 3 and if so treats it as a onchain revert and keeps the data field containing the revert bytes. Although couldn't find any eip or spec that says the error code 3 is a hard requirement.
Solution
Change the error response code from -32008 to 3 when a onchain revert occurs
Alternatives
No response

Hello @mouseless-eth, appreciate the nice catch! I did some research and indeed the value 3 is well used by other well-known services like Alchemy, Infura, etc. Here are some refferences to it:

https://docs.alchemy.com/reference/error-reference#json-rpc-error-codes
https://docs.infura.io/api/networks/arbitrum/json-rpc-methods/eth_call#returns


iOS crash on Interstitial initialize

OS target (Android/iOS):
iOS
Godot version:
3.2
Issue description:
When building for iOS on Xcode the application starts then exit due to an uncaught exception:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[AdmobInterstitial initialize::]: unrecognized selector sent to instance 0x600003fbca20'
I have followed the guide in the repo and everything works fine on Android. I'm correctly calling the init method of the AdMob singleton when on iOS platform. The error seems to be related to the last #119 PR which changed the way the Banner, Interstitial and Reward Video are initialized. The initialize method of the Interstitial and Reward Video classes define a third parameter which is not passed, as opposed to the banner initialize method which only has two. I'm not into ObjectiveC, but it looks like the third parameter is missing when invoking initialize on the two instances (Interstitial and Reward Video).
Example:
banner = [[AdmobBanner alloc] init];
[banner initialize :isReal :instanceId];

// interstitial = [AdmobInterstitial alloc]; // old way
// [interstitial initialize:isReal :instanceId :banner]; // old way but :banner passed correctly
interstitial = [[AdmobInterstitial alloc] init];
[interstitial initialize:isReal :instanceId]; // :banner not passed

// rewarded = [AdmobRewarded alloc]; // old way
// [rewarded initialize:isReal :instanceId :banner]; // old way but :banner passed correctly
rewarded = [[AdmobRewarded alloc] init];
[rewarded initialize:isReal :instanceId]; // :banner not passed

As soon as I fixed the error described above, it started working normally on iOS (simulator, Xcode).
But I have to point out something:

I've used the last version of the GoogleMobileAds sdk (not found the one listed in the readme)
I've used some additional settings in the Xcode project in order to make it work, which are the ones described in this official google doc, in the sections manual download and update your Info.plist.

Same error here
			admob.init(OS.is_debug_build(), get_instance_id())

@kristiannotari Could you detail how you fixed this ? I have the same issue. I assume I have to recompile export template with the fix but I have no idea what is going on

Resolved on #128, thanks


[uiux] Challenge 1 - Karaoke needs words

Summary
Solution for the coding challenge 1 (Karaoke needs words).
The Front End architecture definition can be found here: App Structure.
The project was built using the following tech stack:

Web App: React v16.8.0-alpha.1 (hooks), Reach Router
Tooling/testing: Create React App, TypeScript, Jest, react-testing-library, cypress.io

Features

Created initial structure using Create React App.
Integrated @reach/router to manage different App routes: HomePage, ArtistPage, TrackPage.
Added API client using the Fetch API.
Created reusable UI components (/shared/components): Block, Card, Input, List, Select.
Created complex components (/features/): ArtistList, SortableTrackList, TrackList
Used TypeScript for static type checking.
Added unit, integration and e2e tests.

Instructions

Install the Web App: npm i
Start the local server: npm start
Execute unit/integration tests: npm t
Run code coverage: npm run test:cov
Execute E2E tests: npm run test:e2e

Please check README.md for more detailed instructions.

closing this for clean up. All good! Thanks a lot! See you soon! :)


Problem when trying to run video on windows

flutter: {connectionId: 3, n: 0, syncMillis: 0, writtenTo: null, writeConcern: {w: 1, wtimeout: 0}, err: null, ok: 1.0}
flutter: {connectionId: 3, n: 0, syncMillis: 0, writtenTo: null, writeConcern: {w: 1, wtimeout: 0}, err: null, ok: 1.0}
flutter: true
flutter: Fit is BoxFit.fill
flutter: Null check operator used on a null value
flutter: #0      MeeduPlayerController._createVideoController
#1      MeeduPlayerController.setDataSource
#2      _BasicPlayerState._init
#3      _BasicPlayerState.initState.
#4      SchedulerBinding._invokeFrameCallback
#5      SchedulerBinding.handleDrawFrame
#6      SchedulerBinding._handleDrawFrame
#7      _invoke (dart:ui/hooks.dart:145:13)
#8      PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:338:5)
#9      _drawFrame (dart:ui/hooks.dart:112:31)
flutter: Last fit used was scaleDown
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Null check operator used on a null value
#0      MeeduPlayerController.setDataSource
#1      _BasicPlayerState._init
#2      _BasicPlayerState.initState.
#3      SchedulerBinding._invokeFrameCallback
#4      SchedulerBinding.handleDrawFrame
#5      SchedulerBinding._handleDrawFrame
#6      _invoke (dart:ui/hooks.dart:145:13)
#7      PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:338:5)
#8      _drawFrame (dart:ui/hooks.dart:112:31)
flutter: Fit is BoxFit.scaleDown
The lines above is the stacktrace when the error was throwen,
And this is flutter doctor -v output
[√] Flutter (Channel stable, 3.7.1, on Microsoft Windows [Version 10.0.19041.1415], locale en-US)
• Flutter version 3.7.1 on channel stable at C:\src\flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 7048ed95a5 (7 weeks ago), 2023-02-01 09:07:31 -0800
• Engine revision 800594f1f4
• Dart version 2.19.1
• DevTools version 2.20.1
[√] Windows Version (Installed version of Windows is version 10 or higher)
[√] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)
• Android SDK at C:\Users\Mopilani\AppData\Local\Android\sdk
• Platform android-33, build-tools 32.1.0-rc1
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 11.0.11+9-b60-7590822)
• All Android licenses accepted.
[√] Chrome - develop for the web
• Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe
[√] Visual Studio - develop for Windows (Visual Studio Community 2022 17.0.5)
• Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
• Visual Studio Community 2022 version 17.0.32112.339
• Windows 10 SDK version 10.0.19041.0
[√] Android Studio (version 2021.1)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin can be installed from:
https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 11.0.11+9-b60-7590822)
[√] VS Code (version 1.74.3)
• VS Code at C:\Users\Mopilani\AppData\Local\Programs\Microsoft VS Code
• Flutter extension version 3.46.0
[√] Connected device (3 available)
• Windows (desktop) • windows • windows-x64    • Microsoft Windows [Version 10.0.19041.1415]
• Chrome (web)      • chrome  • web-javascript • Google Chrome 110.0.5481.178
• Edge (web)        • edge    • web-javascript • Microsoft Edge 102.0.1245.33
[√] HTTP Host Availability
• All required HTTP hosts are available
• No issues found!
In my case i tryed to run mp4 and mkv videos and i am using a code from the example that were provided with the package.

@Mopilani I see that you closed the issue, does that mean it it resolved?


Race condition when shutting down executor/transport channel

ClientContext collects background resources to close after the ClientContext is closed:

ExecutorService (ExecutorAsBackgroundResource)
TransportChannel

When GrpcOperationsStub#close() is called, it calls shutdown() on an aggregation of the ExecutorService and TransportChannel which calls shutdown() on these resources in order. Since shutdown does not block and initiates a graceful shutdown, it's possible that the ExecutorService is terminated before the TransportChannel finishes (race condition).
We should probably awaitTermination on the TransportChannel before trying to shutdown the executor.
See https://github.com/googleapis/google-cloud-java/issues/5810

Should be fixed by https://github.com/googleapis/gax-java/pull/787.


OSD 2.8.0 - Document / Enhanced Table loading slowly for large documents

Hi,
I'm using Document table / Enhanced table to load large set of documents.
However in OSD 2.8.0 version, I'm unable to load large set of documents ( > 15,000 documents). it usually takes 5 minutes to load 15,000 documents in a document table.
It loads same within 20 sec in default kibana data table.
When I inspect, I can see it doing multiple API calls for same query and it is taking time to load.
This was not the case in old Plugin versions.
I feel it is a version issue.
Regards

First, sorry to reply so lately (several months after...).
Then, I have to say that Enhanced Table plugin code is exactly the same for all OSD versions from 1.0 to 2.10 (included).
So, if something has changed, it is not in Enhanced Table code itself.


Update rules

This fix error with check-redundant-params

Thanks for the PR. I'm not completely sure what all these rule changes entail, because frankly I'm not using JSDoc anymore. Would you be interested in taking over maintenance of this package? It's a completely unofficial extension to standard.

@simonkberg OK, it will be nice.

cool! I've added you to the npm package, but I can't transfer ownership yet since you have a fork of this repo with the same name. if you rename it or delete it and let me know I can complete the transfer

@simonkberg ОК, I deleted the repo.


Email Agent, awaiting retry -> recent failure

I have an Rss Agent which succesfully creates events. I receive them with an Email Agent which also succesfully receives them ("Last event in"). Yet, I do not receive any emails, moreover all events related to this end in awaiting retry -> recent failure. I am running on Heroku.

Hey @DreamFlasher. Are any errors displayed in the email agent's log, or in the jobs list?

Unfortunately not @cantino. No errors on either. I am using the SMTP settings for gmail as specified in "Using your own mail server".

Where are you seeing "awaiting retry -> recent failure"?  Could you attach a screenshot?

Happy to do so:

The button right of it has the hint "17 jobs recent failures", unfortunately nothing happens when I click on the buttons.

Happy to do so:

The button right of it has the hint "17 jobs recent failures", unfortunately nothing happens when I click on the buttons.

Happy to do so:

The button right of it has the hint "17 jobs recent failures", unfortunately nothing happens when I click on the buttons.

Clicking either of those should take you to /jobs.  It doesn't navigate you?  What happens if you go to /jobs directly?

Unfortunately, not! Neither on Ubuntu nor Windows, with non of Firefox/Chrome/Opera it navigates me to /jobs. When going to /jobs directly I get forwarded to the starting page. ("Welcome to Huginn!")

Interesting!  I think that means that you're not running as an admin user on Huginn.  Are you in a multi-user setup?  If not, how / where are you running it?

Ha, interesting, indeed! Didn't know that I wasn't an admin. I deployed it to Heroku, opened the app (huginn) page and it told me in order to register I need an invite code -- which I got from the config vars :D
I managed to setup huginn with heroku toolbelt (not possible on Windows unfortunately), created an admin account with the same username and email as the user I created before -- and luckily I still have all my agents, plus admin rights.
With the error messages in /jobs I was able to set up SMTP succesfully (in gmail you need to deactivate secure login in the gmail settings).
Solved, thank you!

Great!


Checking Launchpad items for the header in Firefox opens that feature

Checking Launchpad items for the header in Firefox opens that feature.
event.stopPropagation() doesn't stop the event from reaching the link containing the checkbox. Stackoverflow question opened to fix that.
Alternatively position the checkbox outside the links.

Fixed in 6.2.5


Fixed incorrect type in a malloc in Node extension

This problem was discovered by an internal user.

@tbetbetbe Can we merge this?


Filter by Date only works on Committed Date

On TFS 2018 RTW (16.122.27102.1), when I want to see the commit history between certain dates, commits are searched w.r.t. their Committed Date's i.s.o. Authored Date's, even though the dates I see in the history page are Authored Date's. It may be good to include this information on this page, unless it is changed in newer versions.

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

ID: c6de6ffd-afcc-17f9-8e89-6845c0a5bd6c
Version Independent ID: caea7004-b42b-9084-befc-6b33168570b4
Content: View commit history - Azure Repos
Content Source: docs/repos/git/commit-history.md
Product: devops
Technology: devops-code-git
GitHub Login: @steved0x
Microsoft Alias: sancha

Hi @keremispirli. Thank you for pointing this out. I will clarify with this information in the docs and we have added an item to our backlog to make the UI more clear as well.


The eventHub didn't receive message even if the call is successful

I use postman to trigger a plugin to send messages. However, the postman says statuscode == 201 which is successful. But the service bus explorer received nothing. I connected the eventhub by using the namespace connection string. Anyone knows why I received nothing?

@zliu443inG, that could be lots of issues not related to Service Bus Explorer. It was some time since you posted this, have you found the issue?


Rethinking Marketo Analytics Implementation PR: 1

This is the first pr in order to rethink how we handle the Marketo analytics implementation. Currently we are running out of Marketo API calls by 8am every day because of our segment integration. On every pageload we use a Segment Identify call which in turn pings Marketo's API. Additionally, while we have turned off the Marketo integration using the Segment UI for many tracking calls, we are still sending over 50k to Marketo within a few hours.
After speaking with our consultants and looking into other options I propose three pr's make this data pipeline more efficient:
PR: 1. Remove Marketo from page load identify calls and add in new identify calls only for Marketo on Sign-Up, and Application Form submission (already done).
PR: 2. Fix identify and track calls for Gallery Insights sign Up. This is currently broken and only includes a track call.
PR: 3a. Waiting to hear back from Segment, but either in this PR will create a new Analytics.js tracking call specifically intended for Marketo that will be implemented on high value b2b Artsy.net pages. In conjunction will turn off Marketo for all tracking calls except newly created one in Segment ui.
My concern with this approach is if we cannot by default have Marketo turned off for any new tracking calls, then moving forward it will be difficult to contain this approach.
PR: 3b. If 3a does not seem feasible then after speaking with our consultants and looking at documentation the best way forward is to implement marketo's munchkin tracking on our website re: http://docs.marketo.com/display/public/DOCS/Add+Munchkin+Tracking+Code+to+Your+Website.

Sounds like a plan to me! Thanks for thinking through this throughly, I'm glad to hear we might not have to throw Segment's integration with Marketo out. Looking forward to PR 3a/3b and hearing how it all works out :)

cc @cfinsness


Robust dir delete

This resolves https://github.com/timothycrosley/cruft/issues/18

Codecov Report

Merging #20 into master will decrease coverage by 0.39%.
The diff coverage is 95%.

@@            Coverage Diff            @@
##           master      #20     +/-   ##
=========================================
- Coverage   98.96%   98.57%   -0.4%
=========================================
  Files           7        7
  Lines         194      210     +16
=========================================
+ Hits          192      207     +15
- Misses          2        3      +1

Impacted Files
Coverage Δ

cruft/exceptions.py
100% <100%> (ø)
:arrow_up:

cruft/api.py
99.33% <94.44%> (-0.67%)
: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 ace0102...c858f70. Read the comment docs.

I think it would fix #13 as well.
Maybe you shouldn't add the README.rst and setup.py in the PR though 🙂
Also, can't dephell keep the Markdown format for the README?

This is awesome thank you!


Table time travel support

Is your feature request related to a problem or challenge?
A lot of DBs and table formats (e.g. Delta Lake) rely on one form or another of MVCC, whererby writes to a given table will result in a new table version. Typically, writes will usually append new files to the table state (INSERT) and/or potentially remove some files from the state (UPDATE/DELETE).
A core feature of such systems is the ability to travel between different table versions, so that one can query some earlier (non-latest) table state. However, this is not currently officially supported by DataFusion, though it is doable in a hacky way (see below for details or here for an overview of how this works in seafowl right now).
Describe the solution you'd like
First part of the work would be in the sqlparser crate, which would need to support the standard temporal table specifier in the form of a AS OF clause (https://en.wikipedia.org/wiki/SQL:2011)
I think this should probably be captured in a new field in TableFactor::Table.
Over at DataFusion side, besides capturing the parsed version in the TableScan logical plan, I imagine the main (breaking) change would be to alter the signature of the SchemaProvider::table method to something like
async fn table(&self, name: &str, version: Option<TableVersion>) -> Option<Arc<dyn TableProvider>>;

with TableVersion being some kind of an enum covering time formats or literal version denotations for starters. That would enable the implementer of this trait to know which specific table version needs to be loaded (if any).
Describe alternatives you've considered
The alternative that seafowl uses atm is the following:

abuse the existing table function syntax to smuggle the version information in a given sqlparser::ast::Statement[0]
perform a walk over each incoming sqlparser::ast::Query, trying to see whether a table function syntax was used[1]
if it was, rename the table to something unique, and register the TableProvider for the specific table version in a new session context/state[2]

[0] https://seafowl.io/docs/guides/querying-time-travel#querying-older-table-versions
[1] https://github.com/splitgraph/seafowl/blob/main/src/version.rs#L58-L91
[2] https://github.com/splitgraph/seafowl/blob/main/src/context.rs#L542-L565
Additional context
If this is something that is deemed to be sufficiently important for/compatible with DataFusion I'd be happy to take on the work needed to implement this.

Over at DataFusion side, besides capturing the parsed version in the TableScan logical plan

Actually, looking at this a bit more in-depth, TableScan would not need to be changed. Instead prior to creating that node we'd need to parse the table version during table reference resolution (resolve_table_references) inside statement_to_plan, which would in turn mean extending the sqlparser Visitor to go through TableFactors.
Then, while pre-populating the table providers for the referenced tables in the SessionContextProvider, we'd register the TableProvider for the specific table version provided. This also means that SessionContextProvider would need to track both the table name and the version too, since a given query could involve multiple versions of the same table, so something like
struct SessionContextProvider<'a> {
    state: &'a SessionState,
    tables: HashMap<(String, Option<TableVersion>), Arc<dyn TableSource>>,
}

another possibility might be to add another argument to the TableProvider::scan

True, but the main reason deferring the version resolution to the scan itself may be less favorable is that schemas can also evolve over different versions, and then we'd need to extend the TableProvider::schema method (and probably TableProvider::statistics or others). This means we'd also need to make any callers of these methods aware of what was the original version used in the query, which would mean a lot of new arguments all over the place.
Hence, why having a separate TableProvider per version is better I think (and registering those ahead of time, when populating the SessionContextProvider for a given query).

Hence, why having a separate TableProvider per version is better I think (and registering those ahead of time, when populating the SessionContextProvider for a given query)

That makes sense 👍

Thanks; anyway if there's a consensus on whether this would be worthwhile for DataFusion at all let me know, as I would love to contribute it.

Maybe it would be worth sending a note to<EMAIL_ADDRESS>to get a wider distribution.
For example https://lists.apache.org/thread/837ghhjh9gd1kvg0qqnmxqs0rm62x0xt

Great, will do that, thanks!

While reviewing https://github.com/sqlparser-rs/sqlparser-rs/pull/951 I found the following reference from BigQuery about "time decorators" that might be able to support this feature without any datafusion changes:
https://cloud.google.com/bigquery/docs/table-decorators#time_decorators
❯ create table foo (x int);
0 rows in set. Query took 0.001 seconds.

❯ select * from foo@1234;
Error during planning: table 'datafusion.public.foo@1234' not found

The downside is that the integer syntax to calculate is pretty bad, Adding real SQL support is likely a nicer option

Oh that's a nice find, I haven't seen that. Indeed it seems it could provide time travel support without DF changes, albeit in a hacky way, by smuggling the version in the table name itself.

The downside is that the integer syntax to calculate is pretty bad, Adding real SQL support is likely a nicer option

Agreed; real SQL support would be more expressive and explicit.

I think we need more response from the community and review it.
It's a big feature and changes

I think we need more response from the community and review it. It's a big feature and changes

Yup, makes sense. Happy to leave this open (or close it) until definitive consensus is achieved.

Just the https://github.com/sqlparser-rs/sqlparser-rs/pull/951 on it's own would go a long way in terms of easing the implementation of table time travel in DataFusion derived systems.

That has been merge and released, so hopefully that helps


Does not work when ordering is preserved in state and re-rendered() by React

If I choose to preserve the order within the component's state such as this.state.order = [1, 2, 3...](for example) which seems to be a perfectly natural thing to do for flux pattern, then when I render the new order in my react component's render function, the Sortable code overwrites it and clobbers the ordering.
I think what might be happening is that the dom elements are changing and Sortable thinks that the order needs to be reapplied? It ends up ordering the items incorrectly. The result is that the items I move appear to snap back to their old locations. Here is the work flow

Drag and move an item to a new location
Sortable's store set() is called
this.setState() is called from the set() method above
render() is called and re-renders the order exactly how it is on the page based on the new state.order array
Sortable see's that DOM node have changed and re-applies the ordering to the original order and clobbers the new change.

The fix that works here is simply to not honor order in the render() method and just order things the same no matter what (like when the page was first loaded), but this complicates things because I now I have to keep track of an initial ordering when the page is first loaded that is not important for any purpose other than for Sortable's idiosyncrasies.
I believe that Sortable should be able to handle render() updates and understand that even if the dom node has changed, it needs to look at "data-id" attr and understand that it is indeed in the correct order... or better yet, accept that the render() method is the single source of order truth, or just call the store get() method again...
I will also admit, I'm new to this API so I could be missing something too and any help would be appreciated :)

Hmm, this smells like the 804 issue but with react...
https://github.com/RubaXa/Sortable/issues/804

Turns outs this was related to adding the key prop on the list items.

 let items = state.order.map(id=>{
        return (
          <div className="drag"
            data-id={id}
            key={id}>my item
          </div>
        );
      });

React was giving me a warning so was adding the key property but this seems to confuse react and it was undoing the ordering. So I guess this is more of a minor bug now? Perhaps add documentation that using key props are not recommended when putting the ordering into the component state?

Well, turns out when you leave off the key, other problems arise. The warning is there for a reason. I can't add values to the list now without rendering issues.
I believe Sortable needs to be able to work with key props.

LMS007's solution works. This is a serious bug and needs a fix.

@RubaXa Thoughts on this fix?

Dear all! Meteor is moved to the separate repository. If this issue is still actual, please create it there once again and this rojects needs a maintainer:

ES2015+: https://github.com/SortableJS/react-sortablejs 🆘
mixin: https://github.com/SortableJS/react-mixin-sortablejs

We are experiencing the issue described above with Stencil.js (web components). Are there any updates on this ? Has anyone found why Sortable seems to be applying the same change once the component is re-rendered ?
I am happy to help look into this but would need some guidance around the repo from one of the maintainers :)


Refactor: Remove usage of imp

Since there are no reasonable alternatives to imp in python2.7,
I figured it'd be the easiest to try importing python3 modules and if
that fails, fall back to the previous method. However this will remove
that annoying DeprecationWarning for everyone using python3.

don't be too afraid to break 2.7 if there is clear benefit. pynvim 0.5 can be py3.5+ only if we want to.

Hahaha thanks for the tip! I wanted this refactored to a separate function so that if the decision to go pure py3 gets made we have the weird py2 / py3 thing contained to 1 function and can simply remove the except ImportError: import imp malarky

I think it fixes my issue.
https://github.com/neovim/pynvim/issues/478
The PR is completed?

I think compat.py and scripts_host.py needs to be changed.

I have imported your commit in https://github.com/neovim/pynvim/pull/486.


Is it possiable that the prediction result would be nested for NER task?

to be specifically,  for example, let the sentence "The apple corporation" as input, is there any possible that the span ["The apple corporation"] is predicted as the label 'ORG' however, the span  ["The apple"] is predicted as label the 'Other'?  If so,  what is the final prediction of input sentence "The apple corporation"?
by the way, in the training progress, after random sample, the max neg-span number is 100. But it is also seems much larger than the number of label span. For example, the sentence is made by 27 word, and the number of entities are 5, hence the label_entity_ span will be 5 whereas the neg_entity_span are 100. Will it be harmful for training the model?

Since we are using a span based approach, SpERT indeed is able to detect overlapping entity mentions. So in your example, SpERT would return two mentions, "The Apple" labeled with "Other" and "The Apple cooperation" labeled with "Org". Of course this requires your training data to contain such overlapping samples.

I think we had a similar ratio in the datasets used in our paper and it worked out fine. As always, a (automated or manual) hyperparameter search may be useful when working with a new dataset. You can change the negative entity count in the config file.

I assume this answered your question, please write a comment otherwise.


SplitPane, sashRender prop required?

Hey first time starting my own project,
I started using SplitPane for a simple vertical pane
from the storybook reference only sizes and onChange seems to be used as props
This example here
As prop seems sashRender is also required, why is that?
Could I get some help on this?
This is what I have written

      <SplitPane
        sizes={sizes}
        onChange={setSizes}
      >
        <Pane
          className="emptyInvoiceView"
          style={{ background: "grey", height: "100%" }}
          minSize="10%"
        >
          <CreateEmptyInvoiceView />
        </Pane>
      </SplitPane>

Error message is

Property 'sashRender' is missing in type '{ children: Element[]; sizes: (string | number)[]; onChange: Dispatch<SetStateAction<(string | number)[]>>; }' but required in type 'ISplitProps'.ts(2741)

You can add sashRender={() => null} below the onChange to satisfy the requirement:
<SplitPane
        sizes={sizes}
        onChange={setSizes}
        sashRender={() => null}
      >
        <Pane
          className="emptyInvoiceView"
          style={{ background: "grey", height: "100%" }}
          minSize="10%"
        >
          <CreateEmptyInvoiceView />
        </Pane>
      </SplitPane>


Error running tutorial steps

Describe the bug
got the following error while running make CFG_PATH=/config/development/clinc_dummy/conf.json compose
      Attaching to azimuth_web_1, azimuth_backend_1
      web_1      | internal/modules/cjs/loader.js:892
      web_1      |   throw err;
      web_1      |   ^
      web_1      |
      web_1      | Error: Cannot find module 'cors'
      web_1      | Require stack:
      web_1      | - /app/server.js
      web_1      |     at Function.Module._resolveFilename (internal/modules/cjs/loader.js:889:15)
      web_1      |     at Function.Module._load (internal/modules/cjs/loader.js:745:27)
      web_1      |     at Module.require (internal/modules/cjs/loader.js:961:19)
      web_1      |     at require (internal/modules/cjs/helpers.js:92:18)
      web_1      |     at Object.<anonymous> (/app/server.js:4:14)
      web_1      |     at Module._compile (internal/modules/cjs/loader.js:1072:14)
      web_1      |     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
      web_1      |     at Module.load (internal/modules/cjs/loader.js:937:32)
      web_1      |     at Function.Module._load (internal/modules/cjs/loader.js:778:12)
      web_1      |     at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12) {
      web_1      |   code: 'MODULE_NOT_FOUND',
      web_1      |   requireStack: [ '/app/server.js' ]
      web_1      | }
      azimuth_web_1 exited with code 1

I can confirm that the instructions don't seem to make it work despite building a docker image etc. I followed all the steps correctly until make CFG_PATH=/config/development/clinc_dummy/conf.json compose.  The following step also didn't work initially but I used a separate conda environment to run it successfully.
pip install gdown
make download_demo


HAswitchplate forgetting settings

Having issues with the HASwitchplate forgetting settings, Like the wifi network and MQTT devices. With this happening it wont grab the yaml and update. Any ideas what i did wrong?

What process did you use for flashing the device originally?

I used Tasmotizer to flash, and used your bin file to update it. Seems ok i guess for now. I will close this and reopen if i run into another issue. Any way to chat via discord or something?


Calendar of work

Add a calendar where you can see when students use mumuki.
That can give you a clue if a trigger has made impact.
For example:
I say there will be a small test next week about recursion. Have all students study during the weekend with mumuki? If not, I can email them to remind them to study and help them in any way.
Or: most of the students study at noon on saturday, maybe I can make a group chat with students at that time.

Hi @estefaniamiguel. What you want is something like a punch card? https://github.com/mumuki/mumuki-atheneum/graphs/punch-card

Yes and no @flbulgarelli.
I like the punchcard, it could be usefull, but also on calendar mode.
So i can answer: has somebody use mumuki this week?
Then I can go an make comments on the things they have done, for example


Offer to help Localize Daedalus

Would like to offer help localizing Daedalus Daedalus on Github. Charles mentioned to email Jousha Miller but got an auto-reply. Let me know how I can help, more than happy to. Best Wallet UI on the planet!

This is an open-source project. Fork it, add your fixes and do a PR :)
I'm sure they wont reject good working code :+1:
You can see some locales stuff here
https://github.com/input-output-hk/daedalus/tree/master/app/i18n/locales

Please wait with localization efforts @gdorta. We are putting a process in place. Until we have a solid process for managing opensounce contributions in this area, it will be a problem for us to handle these efforts. PRs with features and fixes cannot be merged currently if we have missing translations.

Hi @darko-mijic
Thanks for the update. I did not know Deadalus did not accept community contribution. Do you have an ETA on when this will be possible? Not trying to rush but I would also like to contribute :)
Thanks

@simon66 Daedalus is open to community contributions. We will announce the guidelines soon. Translations are a specific case since they need to be included in feature branches. If we decide to support new language we would need contributors for that language on a regular base. More information coming soon.

Would also like to contribute the Russian translation, but I can see the problem of incomplete localizations when new GUI elements with text are added. Core team would have to either update all translations by themselves, or to wait for new contributions.


should users be explicitly told to go to the settings to claim certificates?

On the FCC forum there are a few threads each week opened because users don't get the certificate immediately after completing the Responsive Web Design Projects.
I don't know what should be the better way, but I propose to make more clear to users that they need to go to the Settings to claim their certificate.

It would be kinda nice if it were automatically claimed when you complete the last project you need, and you get a congratulations popup

That I wouldn't agree on, it happened to me too to submit a link by
mistake, and I don't want to have that mistakenly submitted link to give me
the certificate
Instead a pop-up that say something like "If you are satisfied with your
work and you pass all user stories go to the settings and clam your
certificate"

Yes, we should probably add this. /cc @ahmadabdolsaheb

we could have add a button to redirect to settings or claim cert on the completion modal when all of the required projects for a cert are submitted and the related cert is not claimed
Having in mind that redux should be in sync with the DB to avoid asking users to reclaim their certs.

My colleague @manrajtoor and I would love to take a shot at this for a school project. Excited to learn from everyone in this community.

I will close this issue in favor of #38569.
Please feel free to go ahead and start working on it and refer to #38569 for more context.


Emagged Borg Sound Effect

About the PR

Emagged Borgs now play a Sound Effect

##Media
https://github.com/space-wizards/space-station-14/assets/113228053/bacd5fd5-7c7a-4413-a5a7-c31e61553580
Changelog
:cl:

add: Emagging borgs now plays a sound effect.

this PR doesn't do anything? You need to actually implement the logic for playing the sound.

It looks like the logic is still missing, not to mention there are YAML lint problems. If you need help, please contact us in #howdoicode on Discord.

the video isnt even from ingame bruh

you gotta actually write code for this you know. also sound is way too long


Examples with multiple classes, instead of a big "flat file"

The files in the examples directory are very helpful. Thank you for those!
Unfortunately (and please don't take this the wrong) they aren't very "Pythonic". They all start by defining a global:
app = AsyncApp()   # or App()

and then proceed to use the @app.message, @app.event, etc. syntactic sugar to decorate the event handlers being demonstrated. This is definitely a great way to introduce the concepts of Bolt, and it makes the examples easy to follow.
But I'd like to see a more "real world" example (or maybe two, if  App() and AsyncApp() are substantially different) which demonstrates "Bolt-approved best practices" on how to split (unrelated) sections of an app's event processing across multiple files/classes, and not have to rely on an app global to decorate event handlers.
I've tried several approaches, but none of them feel very satisfying. Or perhaps I'm just missing something obvious? In any case, it would be great to see what the Bolt authors had in mind in terms of a "larger scale" app... even just a short example with some event handlers split across a couple files would be helpful. (Hopefully it wasn't to just put everything in one flat namespace! :smile:)
Thanks!

@eddyg Checking this example app may be helpful to you (as the app is for developers in Japan, many parts contain Japanese words/sentences).

Listeners are placed in two source files
A method to enable listeners
Enabling listeners in the web app

In the example app, the listeners are not in classes. But you can have listeners in classes without any hurdles.

Thanks for linking to those examples. I will take a look!
I think I may just need to adjust my mindset if I want to use Bolt. Let me provide some context that may help explain where I'm coming from:
I am trying to modernize (read: re-write!) an old, internal Python 2.7-based Slack bot that is still using slackclient-1.0.5 (which doesn't use the Conversations API, so time is of the essence!) This internal bot has accumulated a lot of "triggers" over the years. 😄
The existing bot design is modular, allowing what are essentially "event plugins" to be written by groups/teams/departments, and then "dropped in" to the bot's plugin directory. These get dynamically loaded when the bot starts, and for each event, the bot calls in to each plugin and lets the plugin decide if it wants to reply or not. If the plugin returns an "attachment", the bot sends it. (A single message could actually trigger replies from multiple plugins, depending on the contents.)
I was hoping teams would still be able to maintain their own plugins, and use Bolt's convenience decorators like @app.message(r"^[Hh](i|ello)") or @app.event('reaction_added') in their plugin class code to simplify the parser. To use Bolt in a similar way, it seems like I'll need to send any needed event types down to each plugin as a "raw" event and have them continue to parse it and decide if applies to the plugin or not (like they do now). Maintaining a "master list" of event-to-plugin-mappings in a single "dispatcher" class is the other option, but that would require managing things in multiple places...
I'll look over the "learning app" you provided and see what the best way to proceed is. Thanks again!

This is what I came up with last night as a proof-of-concept. During dynamic loading of the plugins, I call in to a register method in each plugin to attach Bolt events:
class HelloPlugin(BasePlugin):
    def register(self, app: AsyncApp):
        app.message(re.compile(r"^h(i|ello)", re.I))(self.message_hello)
        app.action("click_me_button_clicked")(self.action_button_clicked)

    async def message_hello(self, message: Dict, say: Say, logger: Logger):
        logger.debug("Processing 'hello'")
        await say(
            blocks=[
                {
                    "type": "section",
                    "text": {"type": "mrkdwn", "text": f"Hey there <@{message['user']}>! :wave:"},
                    "accessory": {
                        "type": "button",
                        "text": {"type": "plain_text", "text": "Click Me"},
                        "action_id": "click_me_button_clicked"
                    }
                }
            ],
            text=f"Hey there <@{message['user']}>! :wave:"
        )

    async def action_button_clicked(self, body: Dict, ack: Ack, say: Say):
        # since this is an action, need to acknowledge it
        await ack()
        # reply to hello message in a thread
        message = body.get("message")
        thread_ts = message.get("thread_ts") or message["ts"]
        await say(text=f"<@{body['user']['id']}> clicked the button!", thread_ts=thread_ts)

Do you foresee any problems with this approach? Thanks again.

Looks great to me 👍
nit: As this is an AsyncApp, the type hints for the listener args would be AsyncAck and AsyncSay

Oooh, good catch! (Since this is a new project, I'm trying to be good about adding type hints. I appreciate you pointing that out!)
I'm gonna close out this issue since your "slack_learning_app" provided plenty of good insights!
Thanks, as always!

Thanks @eddyg for the issue and @seratch for the answers. I'm in pretty much the exact same place -- trying to modernize an app built on top of https://github.com/slackapi/python-rtmbot and was struggling with how to keep the generation modular. I was very glad to have run across this issue.

hi
I found another idea to avoid the problem.
First, isolate app global variable in a module such as "Core", then import it in each plugin module. To avoid circular import, prepare another python file such as "run.py" and import "Core" and plugin modules. launch app on run.py then all works.
Although this solution uses global variable instead of classes, but achieves the goal of splitting a big flat file into several modules.
I have created a simple module configuration on my github repo, please check it out.


updates for BootJS and custom JS/CSS

baseof changes...
Added CDN refs for jQuery, popper and bootstrap JS so dynamic elements actually work
Also added a shortcode for pulling array values out of a page-level "js" attribute.
head changes
Similar to baseOf - added a short code that iterates through an array of page-level "css" attributes to load into an individual page context.
sample page frontmatter
js = ["/js/clpp.min.js", "/js/clpp_html5_mse_hls.plugin.min.js", "/js/clpp_common_abr.plugin.min.js", "/js/clpp_loggers.js", "/js/player.js"]
css = ["https://vjs.zencdn.net/5.16.0/video-js.css", "/css/clpp.css", "/css/v5style.css"]

I like the .Params.css and .Params.js piece - are the CDN js includes necessary for what the theme is doing right now?  I don't know of functionality that isn't working without them, so I'm hesitant to put them in there for all who might use the theme...

Good question. I couldn't get some Bootstrap elements to work without the JS in place. So that's a reflex. However - since I'm now deploying my site into a CDN I'm looking at building my own and deploying it locally to my own CDN. I'm doing the same with FontAwesome (and foregoing VideoJS altogether and building my own custom controls with the shadow DOM) - so feel free to ignore it if it's not seen as useful.

Oh -I remember - it was tabs - couldn't get them to switch without the JS. Doing it now with another theme and it just reminded me.


Add a callHackage variant that doesn't require all-cabal-hashes

Motivation for this change
Because callHackage uses all-cabal-hashes to avoid requiring the user to specify a hash, it does not work for any package versions that have been uploaded after the version of all-cabal-hashes that you happen to have.  In my experience this means that probably greater than half the time callHackage doesn't work for me, and I have to fall back to fetchFromGitHub.  This is a pretty poor user experience and is also less reliable because github packages can be deleted, but hackage releases cannot.
This function works for any package that has been released on hackage.  I have been using it recently in some of my production projects and it has been working fine.  It would be really nice to have it available in nixpkgs.
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[ ] NixOS
[x] macOS
[x] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Assured whether relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

I responded to @puffnfresh above.  Also, regarding the name...I'm definitely not stuck on this name.  I'm not crazy about callHackage' though, because I tend to think primes aren't visually distinct enough.  Open to better suggestions here.


Write validity buffer for UnionArray in V4 IPC message

Which issue does this PR close?

Closes #1793.
Rationale for this change

What changes are included in this PR?

Are there any user-facing changes?

Codecov Report

Merging #1794 (6627acd) into master (73d552a) will increase coverage by 0.00%.
The diff coverage is 95.12%.

@@           Coverage Diff           @@
##           master    #1794   +/-   ##
=======================================
  Coverage   83.39%   83.40%
=======================================
  Files         198      198
  Lines       56205    56244   +39
=======================================
+ Hits        46872    46908   +36
- Misses       9333     9336    +3

Impacted Files
Coverage Δ

arrow/src/ipc/writer.rs
81.78% <95.12%> (+0.85%)
:arrow_up:

parquet_derive/src/parquet_field.rs
65.75% <0.00%> (-0.23%)
: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 73d552a...6627acd. Read the comment docs.


For File Nesting, There's No Such Icon as the one indicated in the image in the instructions on this page

The toggle button that the arrow points to in the image is not present in either Community 17.5.3 or Preview17.6.0 Preview 2.0

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

ID: 2d25dd44-f173-dd83-3afc-d6608613d450
Version Independent ID: e121cedc-5cbe-a399-e2a8-5d192aaea770
Content: File nesting rules for Solution Explorer - Visual Studio (Windows)
Content Source: docs/ide/file-nesting-solution-explorer.md
Product: visual-studio-windows
Technology: vs-ide-general
GitHub Login: @AngelosP
Microsoft Alias: angelpe

@yannduran
I see the button in my Solution Explorer. I don't know if there is any dependency on project type, but in an ASP.NET Core Web Project, I see it as long as my Solution Explorer window is expanded large enough. It disappears if the window is resized.

The article says .NET Core is required, so that explains why I don't see it in a .NET Framework project.  Have you tried different project types?

@ghogen Ahh, I missed that! I was indeed using a .NET Framework project (a VSIX). This is something that would be useful for ALL project types. I had to install an extension to even get nesting working how I needed, as there seems to be no built-in way (that I could find) to manually nest a file under another file. Other than hacking the project file, of course, but who wants to do that???
Thanks!


I24Logger() object does not have appropriate destructor

logger handlers are not closed correctly resulting in: on the nth import of the package, the resulting default logger logs n of the same message

This behavior is peculiar to iPython Kernel and won't be fixed


Sats missing from mutiny balance

I have been testing out Mutiny wallet for a few weeks and it seems that I may have lost funds due to a lightning channel close. I am hoping that someone can explain to me how to recover my sats.
I sent 430,000 sats over lightning from Strike to my Mutiny wallet on 10/16. I didn’t previously have any channels large enough to accept a transaction of this size, so I assume that a new channel must have been opened for this transaction to be reflected in my Mutiny wallet. For a while, I could see the balance in my Mutiny lightning wallet. However, recently it seems that all my channels closed and the lightning balance disappeared. The funds did not return to my strike wallet and are not showing in my Mutiny lightning or on-chain balance.
Any assistance with this matter is appreciated.

mutiny-logs.txt

mutiny-logs.txt

Sometimes when channels close, it may take a couple days for it to reflect back on chain. When did they close and when you click on the channel close icon in your activity, does it give a reason?

Sometimes when channels close, it may take a couple days for it to reflect back on chain. When did they close and when you click on the channel close icon in your activity, does it give a reason?

I had two channels close on 10/27 and one channel close on 10/31.
The 10/31 channel close has this reason:
Channel closed because the ChannelManager read from disk was stale compared to ChannelMonitor(s)
The two 10/27 channel closes have this reason:
Channel closed because of an exception: Peer attempted to reestablish channel with a very old local commitment transaction

What's your node id? It should be in settings > admin, at the top.

What's your node id? It should be in settings > admin, at the top.

02906138d7dd4f521518a30a7008723b29b1fe913ba931689fe5503f5a5cff6a85

How many days should I expect to wait before the funds return? I still see zero available. I provided my node ID above.

You'll probably get it sometime next week

Node Id: 02906138d7dd4f521518a30a7008723b29b1fe913ba931689fe5503f5a5cff6a85
force close transaction: https://mempool.space/tx/71c063bf75a4b004ca852416be4299721e7c2a007b498d48b63d3e02b7be8ad2

@hellosa-sa if you could please provide an onchain address to refund to

bc1qztpw59sp54l38l9phrkzrskj6mzzzqye5w4wc6

Sent


[Packager] Failed at start script './packager/packager.sh "--root" [path]'

I'm following this tutorial, but got error in Start Development Server step.
Console Output
MacBook-Pro:MydanoCoach Hoseok$ (JS_DIR=`pwd`/ReactComponent; cd Pods/React; npm run start -- --root $JS_DIR)

><EMAIL_ADDRESS>start /Users/Hoseok/iOS/MydanoCoach/Pods/React
> ./packager/packager.sh "--root" "/Users/Hoseok/iOS/MydanoCoach/ReactComponent"

sh: ./packager/packager.sh: Permission denied

npm ERR! Darwin 14.4.0
npm ERR! argv "/usr/local/bin/iojs" "/usr/local/bin/npm" "run" "start" "--" "--root" "/Users/Hoseok/iOS/MydanoCoach/ReactComponent"
npm ERR! node v2.3.3
npm ERR! npm  v2.11.3
npm ERR! code ELIFECYCLE
npm ERR<EMAIL_ADDRESS>start: `./packager/packager.sh "--root" "/Users/Hoseok/iOS/MydanoCoach/ReactComponent"`
npm ERR! Exit status 126
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>start script './packager/packager.sh "--root" "/Users/Hoseok/iOS/MydanoCoach/ReactComponent"'.
npm ERR! This is most likely a problem with the react-native package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     ./packager/packager.sh "--root" "/Users/Hoseok/iOS/MydanoCoach/ReactComponent"
npm ERR! You can get their info via:
npm ERR!     npm owner ls react-native
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/Hoseok/iOS/MydanoCoach/Pods/React/npm-debug.log

npm-debug.log file
0 info it worked if it ends with ok
1 verbose cli [ '/usr/local/bin/iojs',
1 verbose cli   '/usr/local/bin/npm',
1 verbose cli   'run',
1 verbose cli   'start',
1 verbose cli   '--',
1 verbose cli   '--root',
1 verbose cli   '/Users/Hoseok/iOS/MydanoCoach/ReactComponent' ]
2 info using<EMAIL_ADDRESS>3 info using<EMAIL_ADDRESS>4 verbose run-script [ 'prestart', 'start', 'poststart' ]
5 info prestart<EMAIL_ADDRESS>6 info start<EMAIL_ADDRESS>7 verbose unsafe-perm in lifecycle true
8 info<EMAIL_ADDRESS>Failed to exec start script
9 verbose stack Error<EMAIL_ADDRESS>start: `./packager/packager.sh "--root" "/Users/Hoseok/iOS/MydanoCoach/ReactComponent"`
9 verbose stack Exit status 126
9 verbose stack     at EventEmitter.<anonymous> (/usr/local/lib/node_modules/npm/lib/utils/lifecycle.js:213:16)
9 verbose stack     at emitTwo (events.js:87:13)
9 verbose stack     at EventEmitter.emit (events.js:172:7)
9 verbose stack     at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/lib/utils/spawn.js:24:14)
9 verbose stack     at emitTwo (events.js:87:13)
9 verbose stack     at ChildProcess.emit (events.js:172:7)
9 verbose stack     at maybeClose (internal/child_process.js:764:16)
9 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)
10 verbose pkgid<EMAIL_ADDRESS>11 verbose cwd /Users/Hoseok/iOS/MydanoCoach/Pods/React
12 error Darwin 14.4.0
13 error argv "/usr/local/bin/iojs" "/usr/local/bin/npm" "run" "start" "--" "--root" "/Users/Hoseok/iOS/MydanoCoach/ReactComponent"
14 error node v2.3.3
15 error npm  v2.11.3
16 error code ELIFECYCLE
17 error<EMAIL_ADDRESS>start: `./packager/packager.sh "--root" "/Users/Hoseok/iOS/MydanoCoach/ReactComponent"`
17 error Exit status 126
18 error Failed at the<EMAIL_ADDRESS>start script './packager/packager.sh "--root" "/Users/Hoseok/iOS/MydanoCoach/ReactComponent"'.
18 error This is most likely a problem with the react-native package,
18 error not with npm itself.
18 error Tell the author that this fails on your system:
18 error     ./packager/packager.sh "--root" "/Users/Hoseok/iOS/MydanoCoach/ReactComponent"
18 error You can get their info via:
18 error     npm owner ls react-native
18 error There is likely additional logging output above.
19 verbose exit [ 1, true ]

That's strange, I've never seen this error before. Could you push this project to Github?

I pushed the project. https://github.com/hoseokchoi/ReactNativeTest
The original tutorial that I followed is written in Objective-C, but I rewrote it with Swift. Thanks.

@hoseokchoi any update on this?
@ide @brentvatne close till more response + future packager move

Sounds like there's something wrong with your Node setup. Try this:
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.26.1/install.sh | bash
# Close and reopen your terminal window
nvm install v2
nvm alias default v2
rm -rf project/node_modules
npm install


error occurs when input path argument is specified as a directory

I don't see this error happening anymore, so closing this issue.


Throw an exception if native modules are being rebuilt and the host platform is not the target platform

[x] I have read the contribution documentation for this project.
[x] I agree to follow the code of conduct that this project follows, as appropriate.
[x] I have searched the issue tracker for an issue that matches the one I want to file, without success.

I am using windows server 2012 R2 X64 as the main develop server, when i am packing my project i get for windows X32/X64 everything are good, when i am create package for linux x32/x64 and i am trying to run it in linux ubuntu 16.04, i getting error from the node native module that i installed (work fine in windows), the module is "serialport".
this is the error that i get when i am trying to run the project:
A JavaScript error occurred in the main process
Uncaught Exception:
Error: /home/pos/dp-linux-x64/resources/app/node_modules/serialport/build/Release/serialport.node: invalid ELF header
at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:173:20)
at Object.Module._extensions..node (module.js:598:18)
at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:173:20)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.require (module.js:498:17)
at require (internal/module.js:20:19)
at bindings (/home/pos/dp-linux-x64/resources/app/node_modules/bindings/bindings.js:81:44)
at Object. (/home/pos/dp-linux-x64/resources/app/node_modules/serialport/lib/bindings/linux.js:2:36)
(dp:9425): GLib-GIO-CRITICAL **: g_dbus_connection_register_object: assertion 'G_IS_DBUS_CONNECTION (connection)' failed
(dp:9425): GLib-GIO-CRITICAL **: g_dbus_connection_register_object: assertion 'G_IS_DBUS_CONNECTION (connection)' failed
(dp:9425): GLib-GIO-CRITICAL **: g_dbus_connection_get_unique_name: assertion 'G_IS_DBUS_CONNECTION (connection)' failed
(dp:9425): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
after that i amd trying to rebuild the ,odule in ubuntu and replcae the folder in npm mudules, then i get that the version of node are diffrents:
(dp:9687): GLib-GIO-CRITICAL **: g_dbus_connection_register_object: assertion 'G_IS_DBUS_CONNECTION (connection)' failed
(dp:9687): GLib-GIO-CRITICAL **: g_dbus_connection_register_object: assertion 'G_IS_DBUS_CONNECTION (connection)' failed
(dp:9687): GLib-GIO-CRITICAL **: g_dbus_connection_get_unique_name: assertion 'G_IS_DBUS_CONNECTION (connection)' failed
START
A JavaScript error occurred in the main process
Uncaught Exception:
Error: The module '/home/pos/dp-linux-x64/resources/app/node_modules/serialport/build/Release/serialport.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 46. This version of Node.js requires
NODE_MODULE_VERSION 54. Please try re-compiling or re-installing
the module (for instance, using npm rebuild ornpm install).
at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:173:20)
at Object.Module._extensions..node (module.js:598:18)
at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:173:20)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.require (module.js:498:17)
at require (internal/module.js:20:19)
at bindings (/home/pos/dp-linux-x64/resources/app/node_modules/bindings/bindings.js:81:44)
at Object. (/home/pos/dp-linux-x64/resources/app/node_modules/serialport/lib/bindings/linux.js:2:36)
(dp:9687): GLib-GIO-CRITICAL **: g_dbus_connection_register_object: assertion 'G_IS_DBUS_CONNECTION (connection)' failed
(dp:9687): GLib-GIO-CRITICAL **: g_dbus_connection_register_object: assertion 'G_IS_DBUS_CONNECTION (connection)' failed
(dp:9687): GLib-GIO-CRITICAL **: g_dbus_connection_get_unique_name: assertion 'G_IS_DBUS_CONNECTION (connection)' failed
(dp:9687): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
Console output when you run electron-forge with the environment variable DEBUG=electron-forge:*. (Instructions on how to do so here). Please include the stack trace if one exists.
Put the console output here

What command line arguments are you passing?
Put the arguments here

What does your config.forge data in package.json look like?
  "config": {
    "forge": {
      "make_targets": {
        "win32": [
          "squirrel"
        ],
        "darwin": [
          "zip"
        ],
        "linux": [
          "deb",
          "rpm"
        ]
      },
      "electronPackagerConfig": {
        "icon": "./DokoPoint.ico",
        "packageManager": "npm",
        "platform": "all",
        "arch": "all"
      },
      "electronWinstallerConfig": {
        "name": "dp"
      },
      "electronInstallerDebian": {},
      "electronInstallerRedhat": {},
      "github_repository": {
        "owner": "",
        "name": ""
      },
      "windowsStoreConfig": {
        "packageName": "",
        "name": "dp"
      }
    }
  },

please help as soon as posible its very urgent for me, thanks 👍

Are you trying to build a package for a Linux target platform on a Windows host platform? If so, that won't work because Node doesn't have a concept of cross-compiling native modules.

Also, specifying platform and arch in config.forge.electronPackagerConfig won't do anything, per the README.

yes but when i run electron-forge package --arch=ia32 --platform=linux its make me package for linux system, so its dont work?

Rebuilding the native module won't work if your target platform is not the same as the host platform. You'll need to use a Linux VM to build Linux distributables (and a macOS machine, if you choose to create a darwin/mas target).
I'm surprised it doesn't throw an exception when it gets to the rebuild stage. @MarshallOfSound it would be cool if we could detect inside Forge if we need to rebuild a native module, and process.platform != target_platform.

so what version of linux do you suggest to install and build? because i tried what you say on ubuntu 16.04 and electron-forge dont worked currectlly.

Ubuntu 16.04 works fine (that is what our tests use). I would suggest that instead of installing Forge globally, you add electron-forge to devDependencies.

this is the error that i get when i am trying to install the electron-forge in linux:
oh oh Error: EACCES: permission denied, stat '/root/.bashrc'
at Error (native)
/usr/lib
└── (empty)
npm WARN optional SKIPPING OPTIONAL DEPENDENCY<EMAIL_ADDRESS>(node_modules/electron-forge/node_modules/electron-installer-dmg/node_modules/appdmg):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for<EMAIL_ADDRESS>wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm ERR! Linux 4.10.0-28-generic
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install" "-g" "electron-forge"
npm ERR! node v6.12.0
npm ERR! npm  v3.10.10
npm ERR! code ELIFECYCLE
npm ERR<EMAIL_ADDRESS>install: node tabtab-install.js
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>install script 'node tabtab-install.js'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the electron-forge package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node tabtab-install.js
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs electron-forge
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls electron-forge
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR!     /home/pos/projects/dokoPOS/npm-debug.log
npm ERR! code 1

As I mentioned in my previous comment, install Forge locally in your project, not globally.

ok i installed as you say but now the system dont reconize the electron-forge command.. so how i can run electron-forge init test?

I assumed you were trying to build your existing project instead of creating a new project.
Workarounds are described https://github.com/electron-userland/electron-forge/issues/321#issuecomment-329025394 and https://github.com/electron-userland/electron-forge/issues/321#issuecomment-338316565.

Fixing the bug "Throw an exception if native modules are being rebuilt and the host platform is not the target platform" is turning out to be more complicated than I'd like, because I can't say "stop the rebuild promise when it hits the criteria". I think what's going to happen is that we'll need to walk the node_modules tree once (in an afterCopy hook) for both pruning and rebuild purposes, and then use that data to make decisions about what to prune and what to rebuild (if it can even rebuild).


FATAL System.IO.IOException: The file or directory is corrupted and unreadable (Staxel)

Describe the bug
Steam Library Manager v<IP_ADDRESS>
Moving / compressing the Steam game "Staxel" (appid: 405710) fails with the error message "FATAL System.IO.IOException: The file or directory is corrupted and unreadable.".
To Reproduce
Steps to reproduce the behavior:

Go to 'Steam Library'
Click on 'Staxel'
Drag the game to the SLM Library
Switch to "Task Manager" and press "Start".

Expected behavior
Correct moving  / compressing the app to the SLM library.
Additional context
2019-06-07.zip
I guess the internal buffer for number of files for an app has a static size limit which is in this case exceeded, the game has more than 18000 files in its directories.
See also at the top of the log:
2019-06-07 21:08:26.3429 FATAL System.ArgumentException: Destination array was not long enough. Check destIndex and length, and the array's lower bounds.
at System.Array.Copy(Array sourceArray, Int32 sourceIndex, Array destinationArray, Int32 destinationIndex, Int32 length, Boolean reliable)
at System.Collections.Generic.List1.CopyTo(T[] array, Int32 arrayIndex)    at System.Collections.Generic.List1..ctor(IEnumerable1 collection)    at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source)
at Steam_Library_Manager.Definitions.SteamLibrary.UpdateJunks()
2019-06-07 21:08:45.3723 INFO [Staxel] Populating file list, please wait
2019-06-07 21:08:45.5868 INFO [Staxel] File list populated, total files to move: 18265 - total size to move: 1,2 GB
I suggest using a dynamic list for the file names instead of one which has a static limit.

I don't know C#, but I googled a bit, it may be that this operation is not thread safe and falls then flat:
https://stackoverflow.com/questions/10362023/destination-array-not-long-enough
https://stackoverflow.com/questions/19784704/c-sharp-system-argumentexception-destination-array-was-not-long-enough
Quote from the last URL:

As this is most likely a thread related problem, the only way a Queue.ToArray() can throw an exception saying “Destination array was not long enough” is when the queue itself grows in another thread while ToArray tries to copy it..

I don't know C#, but I googled a bit, it may be that this operation is not thread safe and falls then flat:
https://stackoverflow.com/questions/10362023/destination-array-not-long-enough
https://stackoverflow.com/questions/19784704/c-sharp-system-argumentexception-destination-array-was-not-long-enough
Quote from the last URL:

As this is most likely a thread related problem, the only way a Queue.ToArray() can throw an exception saying “Destination array was not long enough” is when the queue itself grows in another thread while ToArray tries to copy it..

Actually "Destination array was not long enough" and "The file or directory is corrupted and unreadable" both are different errors and doesn't have any relationship.
About the "The file or directory is corrupted and unreadable" error, is there any possibility for the game folder's to have permission issues, or maybe marked as read-only? I've personally never seen this error before. Can you also try running the SLM as administrator?

This is the result, running SLM as Administrator, produces (nearly) same result.
2019-06-08 as admin.zip

I belive the issue is related to a corrupted file/folder and not related to SLM at all. Can you please try repairing the game with Steam or having the game in a different folder? Thanks in advance!

I'll try to outright delete the game on disk and reinstall it, will report what happens.

Seems so... I am really surprised, because this a newish SSD, offending file is GAMEDIR\content\staxel\expressions\Heart2.qb.
CHKDSK did the trick repairing it.

Stage 2: Examining file name linkage ...

Deleting index entry overlay_english.txt in index $I30 of file 40181.
Deleting index entry Heart2.qb in index $I30 of file 1304086.
1733890 index entries processed.
Index verification completed.
Works now. Thank you for your hints!

Thanks to you for your time and effort on investigating! I'm happy to hear it's working now. :)


Renaming the webhook deployment from webhook-server to webhook.

When we generate files with controller-gen it generates a service called webhook-service and it is not configurable.

When we deploy KMM with OLM, OLM deploys a service for the webhook called <webhook-deployment-name>-service.

Therefore, before this change, we were getting 2 services for the same deployment. One generated by controller-gen and added to the bundle manifests and the other one created "on the fly" by OLM.
This change will make OLM find an already existing service called webhook-service in the cluster because the deployment is called webhook, therefore, it won't create a second service as before.
Services in KMM's namespace before the changes:
kmm-operator-controller-metrics-service   ClusterIP   <IP_ADDRESS>   <none>  8443/TCP   2d2h
kmm-operator-webhook-server-service       ClusterIP   <IP_ADDRESS>  <none>  443/TCP    2d2h
kmm-operator-webhook-service              ClusterIP   <IP_ADDRESS>  <none>  443/TCP    2d2h

Services in KMM's namespace after the changes:
kmm-operator-controller-metrics-service   ClusterIP   <IP_ADDRESS>     <none>  8443/TCP   88m
kmm-operator-webhook-service              ClusterIP   <IP_ADDRESS>  <none>  443/TCP    88m

/assign @yevgeny-shnaidman
/cc @TomerNewman

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 72.68%. Comparing base (fa23a9b) to head (dcb1856).
Report is 159 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #957      +/-   ##
==========================================
- Coverage   79.09%   72.68%   -6.42%
==========================================
  Files          51       65      +14
  Lines        5109     5762     +653
==========================================
+ Hits         4041     4188     +147
- Misses        882     1395     +513
+ Partials      186      179       -7

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

/lgtm