Hi ~ lord : "Please activate this module in LSPosed Manager, then force stop."

Dear Lord, I have encountered an issue with "Please activate this module in LSPosed Manager, then force stop.". Is LSPosed an application or not? Do I have to install it? If I have system.uid, can I directly access RencentTask without installing LSPosed
BR~

LSPoser is a software for modifying Android apps. You need to unlock your device, flash Magisk in recovery mode, then install LSPosed.
For more information, watch videos of "LSPosed" in YouTube plz.


I forgot my wsl password. Do i need to uninstall wsl and when so how do i do that?

Windows Version
Microsoft Windows [Version 10.0.22631.2861]
WSL Version
<IP_ADDRESS>
Are you using WSL 1 or WSL 2?

[X] WSL 2
[ ] WSL 1

Kernel Version
<IP_ADDRESS>-1
Distro Version
Ubuntu 16.04
Other Software
No response
Repro Steps
Forget your Password!
Expected Behavior
No access
Actual Behavior
No access
Diagnostic Logs
No response

worked it out myself!


Google Groups link is not working

Getting this: There is no group named “airbnb_caravel”.
The link on the readme is https://groups.google.com/forum/#!forum/airbnb_caravel
thank you
Markos

Thanks for reporting this issue, I had forgotten to rename the Google Group when we renamed the project. I just did now so the link is working again.


Add support for gRPC proxying

Description
This commit adds a gRPC interceptor which adds the necessary
headers for gRPC proxying to outgoing requests. This will allow
custom gRPC services to be invoked through the Dapr sidecar.
Issue reference
Please reference the issue this PR will close: #741
Checklist
Please make sure you've completed the relevant tasks for this PR, out of the following list:

[x] Code compiles correctly
[x] Created/updated tests
[ ] Extended the documentation

@halspang nice.  Is there a corresponding documentation update for this in the works?


Null Pointer Exception with Let operator in a query

We are getting null pointer exceptions when we execute Let operator in a query. Below are two examples.
Example 1:
define function ConditionsWithClaimsViaProvenance(conditions List<FHIR.Condition>, claims List<FHIR.Claim>): // returns List<FHIR.Condition>:    from conditions Condition, claims Claim         let conditionProvenance: Condition.contained.Provenance, conditionProvenanceEntity: conditionProvenance.entity.what     where exists ( conditionProvenanceEntity.reference ProvenanceReference         where IsReferenced(Claim.id, ProvenanceReference)     )return Condition
Example 2:
define "Encounters 60 Days Prior Through 60 Days After IPSD With Diagnosis of Depression":     "Encounters 60 Days Prior Through 60 Days After IPSD" IPSDEncounter         let IPSDCondition: IPSDEncounter.diagnosis.condition                with "Major Depression Diagnosis" MajorDepressionDiagnosis                 such that exists (                     IPSDCondition.reference IPSDConditionReference                         where EndsWith(IPSDConditionReference, MajorDepressionDiagnosis.id)                 )

Resolved by #220


Remove unused workflow engine generation code piece.

Description
There is some unused code in activity.go that involves a generation value but generation is not used here.  Removing since it was occasionally causing json errors.
Issue reference

Please reference the issue this PR will close: #[issue number]
Checklist
Please make sure you've  completed the relevant tasks for this PR, out of the following list:

[x] Code compiles correctly
[ ] Created/updated tests
[x] Unit tests passing
[x] End-to-end tests passing
[ ] Extended the documentation / Created issue in the https://github.com/dapr/docs/ repo: dapr/docs#[issue number]
[ ] Specification has been updated / Created issue in the https://github.com/dapr/docs/ repo: dapr/docs#[issue number]
[ ] Provided sample for the feature / Created issue in the https://github.com/dapr/docs/ repo: dapr/docs#[issue number]

@addjuarez good catch!
@cgillum please review it as you are the author.


Font setting ignored

I set the font to the pragmata mono suggested:

and then ran the enable command and restarted. the UI font now seems to be some times new roman looking thing:

this is my vscode install version info:
Version: 1.83.1 (Universal)
Commit: f1b07bd25dfad64b0167beb15359ae573aecd2cc
Date: 2023-10-10T23:46:55.789Z (2 wks ago)
Electron: 25.8.4
ElectronBuildId: 24154031
Chromium: 114.0.5735.289
Node.js: 18.15.0
V8: <IP_ADDRESS>-electron.0
OS: Darwin arm64 22.3.0

Hi, do you have Pragmata Pro Mono installed on your computer?

ah no I do not, I tried with other fonts that I do have installed and it still did not work however

I have Pragmata Pro installed but could not get any font settings to work. I updated VS Code and restarted several times after trying several noticeably different fonts.

The issue might be that the name of the font is "PragmataPro Mono" not "Pragmata Pro Mono", Can you try changing it?


Containerd version reported as unknown when listing nodes in cluster

Details in https://github.com/rancher/rancher/issues/18593

This should be fixed with #626 and available for testing in https://github.com/rancher/k3s/releases/tag/v0.7.0-rc5. Thanks for reporting @dnoland1 !

K3s Version: v0.7.0-rc5
I was able to verify that the containerd version is displayed correctly both in cli and as imported in Rancher
k3s crictl version
Version:  0.1.0
RuntimeName:  containerd
RuntimeVersion:  v1.2.7-k3s1
RuntimeApiVersion:  v1alpha2


Liquid string filter upcase not supported

The Liquid string filter upcase doesn't appear in the list of Liquid built-in functions but seems to be a valid Liquid filter.  I'm not sure if this is a version of Liquid that isn't supported by the library and there is a workaround (use string.upcase) but would be nice if this was added to the Liquid built in functions.

The list of functions are declared here, likely an oversight. PR welcome.

I've submitted a PR - I hope I've followed convention.  I couldn't find a contributing guide.


MM-8374 - Updating docs styling

Working on this for this ticket: https://mattermost.atlassian.net/browse/MM-8374
I've updated the styling of the blog list and single blog pages, along with some other minor global changes.
The subscribe box can be a separate ticket as I would need a dev to plug in the markup for me first and then I can go and style it.

@jasonblais @esethna Whoever reviews docs now.

Thanks @asaadmahmood! Looking great
1 - Looks like the header isn't vertically centered

2 - The formatting breaks on narrow view (when title goes into the date area)

3 - For an individual blog post, the word count, categories and tags appear at the bottom. Not sure if that's most obvious?


Update webpack config for postcss support

Add post css config in .webpack.config.js
It's related #7657

i suggest feature.

No one uses .pcss extension, and if they do they should just use .css within the context of create-react-app.


ConsumerWidget don't rebuild when state changed by using StateNotifierProvider

flutter_riverpod 1.0.0-dev.7
I have a question.
ConsumerWidget don't rebuild when state changed by using StateNotifierProvider.
Why is this Happen?
This is the code of this problem.
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

final counterProvider = StateNotifierProvider<MyStateNotifier, Counter>(
    (ref) => MyStateNotifier(Counter(0, 0)));

void main() {
  WidgetsFlutterBinding.ensureInitialized();

  runApp(ProviderScope(child: const MyApp()));
}

class MyApp extends ConsumerWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context, WidgetRef ref) {
    return MaterialApp(
      home: Scaffold(
        body: SafeArea(
          child: Center(
            child: Column(
              mainAxisSize: MainAxisSize.max,
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                Text(
                    "counterFirst is ${ref.watch(counterProvider).counterFirst}"),
                Text(
                    "counterSecond is ${ref.watch(counterProvider).counterSecond}"),
                ElevatedButton(
                    onPressed: () {
                      ref.watch(counterProvider.notifier).increment();
                    },
                    child: Text("Increment"))
              ],
            ),
          ),
        ),
      ),
    );
  }
}

class MyStateNotifier extends StateNotifier<Counter> {
  Counter counter;

  MyStateNotifier(this.counter) : super(counter);

  void increment() {
    counter = Counter(counter.counterFirst + 1, counter.counterSecond + 1);
  }
}

class Counter {
  int counterFirst;
  int counterSecond;

  Counter(this.counterFirst, this.counterSecond);
}

It is assumed that the number of displays will be incremented when the button is pressed.
But it isn't incremented.
I confirmed  MyStateNotifier's state is incremented when button is pressed.
So, I think  'ref.watch(counterProvider).counterFirst' is not correct,
but I don't know why is it wrong.
Please help me.

First read Notifier class function with read instead watch. Watch listens to state changes, read just uses function that doesn't change.
Second in MyStateNotifier you should change state (which is embedded in StateNotifier class) variable not counter variable.
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

final counterProvider = StateNotifierProvider<MyStateNotifier, Counter>(
    (ref) => MyStateNotifier(Counter(0, 0)));

void main() {
  WidgetsFlutterBinding.ensureInitialized();

  runApp(ProviderScope(child: const MyApp()));
}

class MyApp extends ConsumerWidget {
  const MyApp({Key key}) : super(key: key);

  @override
  Widget build(BuildContext context, WidgetRef ref) {
    return MaterialApp(
      home: Scaffold(
        body: SafeArea(
          child: Center(
            child: Column(
              mainAxisSize: MainAxisSize.max,
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                Text(
                    "counterFirst is ${ref.watch(counterProvider).counterFirst}"),
                Text(
                    "counterSecond is ${ref.watch(counterProvider).counterSecond}"),
                ElevatedButton(
                  onPressed: () {
                    ref.read(counterProvider.notifier).increment();
                  },
                  child: Text("Increment"),
                )
              ],
            ),
          ),
        ),
      ),
    );
  }
}

class MyStateNotifier extends StateNotifier<Counter> {
  Counter counter;
  MyStateNotifier(this.counter) : super(counter);

  void increment() {
    state = Counter(state.counterFirst + 1, state.counterSecond + 1);
  }
}

class Counter {
  int counterFirst;
  int counterSecond;

  Counter(this.counterFirst, this.counterSecond);
}

First read Notifier class function with read instead watch. Watch listens to state changes, read just uses functions that doesn't change.
Second in MyStateNotifier you should change state variable (which is embedded in StateNotifier class) not counter variable.
Counter variable didn't change because it's given as initial value to state variable.

Thank you so much.
I don't know that the variable I want to change have to be written "state" in StateNotifer.
I understand this.
Close this issue.


Add a floating action button to trigger the modal

Current Behavior
Modal pops up whenever a user visits the website for the first time, but never appears after that
Desired Behavior
It would be better to to have a floating action button to trigger the modal

@san-coding I'm on it. Thanks


⚠ Bofrost.at has degraded performance

In 787f573, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1108 ms

Resolved: Bofrost.at performance has improved in 8d05a03.


Unable to add Azure example locations to app-config.yaml

It seems adding Azure repos as example locations to the app-config.yaml is not working. It appears to be blocked by the CONFIG_KEY_PART_PATTERN. Since this is because of the slash (/) character I guess BitBucket examples will have the same problem.
Expected Behavior
Being able to add config like the following:
catalog:
  exampleEntityLocations:
    'azure/api':
      - https://dev.azure.com/{organization}/{project}/_git/{repo}?path={path}

Current Behavior
I get the following error:
Invalid config key 'azure/api'

Possible Solution
Update the CONFIG_KEY_PART_PATTERN I guess. Not sure if this is a good idea though and depending on what the long-term thinking around exampleEntityLocations is it might not be worth the effort.

Hi!
Hm, that's unfortunate. @Rugvip would it be OK to add slashes to the allowed pattern? We use dots as level separators in compound keys, don't we?
Another solution would be if I changed the format of that section instead, so it's
catalog:
  exampleEntityLocations:
    - azure/api:https://dev.azure.com/{organization}/{project}/_git/{repo}?path={path}

or
catalog:
  exampleEntityLocations:
    - type: azure/api
      target: https://dev.azure.com/{organization}/{project}/_git/{repo}?path={path}

the latter would actually be more in line with the similar catalog.locations config as well...

I'd say we should switch it to the { type, target } format, same as catalog.locations, as you suggested.
Also ofc we should consider whether it's actually needed at all, given that you can provide static locations through catalog.locations now.

I have missed that you can use catalog.locations. I switched to that and it works even better for me. I wanted to have something to easily import some test repos during development.
I'm fine with closing this issue.

Closing this since it works with catalog.locations.


#333: Fixed places of wrong metric recording (e.g on error case)

Searched for other places like that mentioned in the ticket.
Changes:

Ingester: Moved mentioned recordings after PUT and update only on success

Fixes issue https://github.com/weaveworks/cortex/issues/333
Signed-off-by: Bartek Plotka<EMAIL_ADDRESS>

Would you ming splitting the ruler change out into a separate PR?  @jml will need to review that.
Otherwise looks good!

Makes sense, Separated all 3 thing to separate PRs.

Thanks!


CSIP, SIP, AIP and DIP should be structured in a similar way

The documents for the different IPs should be standardized so that they are structured in a similar way and the references should keep the same ID for the same element (CSIP7 should always be the same element in all documents).

This is a general issue. See it treated here:
https://github.com/DILCISBoard/E-ARK-SIP/issues/31#issuecomment-484022670

This has been addressed with regard to document structure but it's impossible to keep IDs in sync in this manner I suspect.


Add code to ensure start order between controller/satellite/csi-node

I found that after trying to set up kube-linstor start order (especially after restart) was causing the node to not get registered. As far as I can tell, the order must be -- controller>satellite>csi-node.
If they start in the wrong order, the storage pool (which is currently implemented as a initContainer for me, see https://github.com/kvaps/kube-linstor/pull/31) does not get registered properly. Short of building in a CRD/control loop I don't think there's much you can do about this -- I couldn't find a way to pre-configure the storage pool layout of linstor with a file (is this possible? surely it is?)
Signed-off-by: vados<EMAIL_ADDRESS>

Hi @t3hmrman, thank you for your contribution!
I suppose that we need to implement better error handling mechanism for #31 instead implementing wait-for patternб which contradicts to 12-factor app best practices, and still not handling the errors ;-)

Yeah I'd agree -- I mean ideally I think going the operator route is worth doing here -- enshrining this kind of operational knowledge is what operators were built for, so that's the optimal solution, but it requires more complexity. I put this up just so anyone who tries to get started today knows what it might look like, just like #31 tipped me off to a way to make storage pools.
The benchmark I was working on is up now so I don't know when I'll get around to doing another round of testing, but I don't think this code changed very much after I figured it out. The code for that is also available.
@kvaps if you want to close this and figure out a different way to do it I'm all for it, but IMO it's worth at least documenting that this ordering issue exists. I didn't end up trying piraeus-operator so I'm not sure how well it would have handled it.

Wow, such a nice work!
I will publish it wherever possible 🙂

Oh please no rush! please let me know if there's something I can do to make this PR better -- the tests are definitely not perfect. If I can find more time, I'll try and write a minimal controller you might like (don't hold me to this). I've been itching for a reason to use kube to try writing a controller :)

@t3hmrman I already decided to keep this project such simplest as possible.
However people are really needed to upload some basic configuration to linstor-controller.
So it would allow you to generate the yaml maifests and just apply them into cluster without any additional logic.
Automate the node joining process and storage-pools configuration should be enough for now.
Currently I preparing simple bash script for that, which will work as a sidecar, and will not affect the current workflow.
If you'd like the controller way, I think you can help @WanzenBug to develop official https://github.com/piraeusdatastore/piraeus-operator. Or start the own project to build opeator for configure linstor-controller entities via CRD. Of course if it will be good enough we can include it into this chart.
To be honest I was already thinking to use aggregation apiserver feature to just represent all the linstor resources as simple Kubernetes entities. See https://github.com/LINBIT/linstor-server/issues/81 for more details.

Ah thanks for sharing, yeah that sounds good -- I'm definitely a fan of keeping it minimal! :)

Closed in favor #35


Cannot add to HACS - not compliant

I am trying to add the catt repository as a custom repository in HACS, but get the following error:
<Integration skorokithakis/catt> Repository structure for v0.12.0 is not compliant
Running Home Assistant Core 2024.9.1 and HACS 2.0.1.

I'm not familiar with HACS, but I'd accept a PR if anyone were inclined to implement this.

I assume @rstremke means the Home Assistant Community Store.
https://github.com/hacs

Ah ok, I don't use Home Assistant, but a PR would be welcome.


Provide workflow instructions for how to develop / test your custom generator

Hi!  Awesome project btw!
Is your feature request related to a problem? Please describe.
Spent about an hour digging through the source code to get a feel for how everything is working.  Would be convenient to have explicit directions on how to make changes to the generator and test the updates.  I'm now able to make changes and test them in the /usage directory, but tbh I'm still not sure if I'm technically using it correctly.
I feel like the documentation of the usage of the generated codebase is somewhat lacking.
Describe the solution you'd like
Documentation on the correct workflow for making changes to your generator and testing them.  Right now my workflow is:

Make changes to /packages/generator/src/generator.ts
cd /packages/generator && npm run prepack
cd /packages/usage && npx prisma migrate

Not sure if there's an easier way, but that's what I arrived at via trial and error.
Could also provide a QOL script in the base directory's package.json:
"generate": "cd packages/generator && npm run prepack && cd ../usage && npx prisma generate"
Thanks again for your time making this great project!

Hey, I thought the blog I've written does a much better job doing that. check it out https://dev.to/yassineldeeb/create-prisma-generator-2mdg and let me know what do you think?

I think the bits I missed out after the initial npx command then running pnpm install was the command mentioned in step 2 (build the generator!).
Fairly obvious now that I think about it but I couldn't work out why pnpm prisma generate in /usage wasn't doing anything for longer than I care to admin 😆


Sync started failing on macOS Monterey

I set up auto-sync a few months ago (for some shared Org mode files) and it seemed to be running well since then. However, late last month it seems to have silently stopped working, perhaps due to some sort of software update. git auto-sync daemon add . and all other daemon commands seem to work fine, indicating that the repo is registered to synchronize and the daemon is running, but it doesn't actually make commits or push them. git auto-sync sync . fails with the cryptic error 2022/11/17 16:07:08 invalid checksum. I vaguely remember having some minor difficulties recently getting gpg and git to work correctly again after some changes, but AFAIK that's all working fine now (and manually committing and pushing from the synchronized directory has no problems).
Where would I find more troubleshooting information?

Hmm, i can't remember now, but this doesn't yet support encrypted keys or gpg.
 Let me see if I can at minimum at least add proper error messages.

Strange, because when I set it up originally I'd been using git with signed tags by default for quite a while. And commits in this repo still aren't signed, even the manual ones. Maybe that's a red herring. There have doubtless been other updates as well.


Initial file structure for CLI.

I'm intentionally not linking the GH issue because it doesn't solve the issue yet. This is merely a quick vibe check on the folder/cmd structure.

Initial implementation of llmgo's CLI.
Here's a demo video
https://github.com/joshcarp/llm.go/assets/14824254/6e8be9c7-8b83-4f36-bbe6-799eeeab273d
I'm opening this PR early to get feedback on the structure of the command itself.

Works better than I expected, I haven't looked at the parameter/tokenizer binary files but what do you think about having them load directly from huggingface?
We'll put it in another issue, but having it load from here: https://huggingface.co/joshcarp/llm.go/tree/main for example would mean that we could unlock the potential to go install it as a CLI.

Resolved @joshcarp !

Thanks @albertpurnama!


BOT (BetterOneTab ;-) ) is extremely slow when many links/groups are stored

扩展版本 (extension version): 1.3.11
浏览器版本 (browser version):  Firefox Quantum 63.0.3 (64-bit)
操作系统 (operating system): Windows 7 (64-bit)
问题描述 (problem description): Just after installing BOT I imported into it almost 4000 links in more than 430 groups in OneTab format. It took so much time that FF displayed a warning about extension slowing down the browser. Then I tried to rename a group (BTW "RETITLE" isn't the best term for the operation...).
Yhis operation was so slow that it was close to impossible to edit the two-dozen characters group name. Also an attempt to change of group order (with arrow shown on the right side of the list beside title line) leads to several seconds long lags.
实际行为 (actual behavior):
期望行为 (expected behavior): Faster work - if possible...
重现步骤 (reproduce step): Load 4k links and try :-)
BTW. The extension is really better than OneTab, despite the fact it is still very young ;-)  Congrats!
I hope it is stable...

Thank you for your trial and reports. It is a known problem. There is already an issue (#55 ) with similar problems. I am trying to solve performance problems in the new version. This is why the new version has not been released for a long time. :)


Interactive Elements Effect

Description:
Adding some effects like physical state appearance change on hovering the interactive elements like button.
Reason for Change:
Currently on-site, there are many interactive elements but on hovering them there is no change which does noy give the proper user experience of interactive elements. Interactive elements suppose to change state on hover
Current Styling:
Currently, there is no change on hovering over buttons or other interactive elements other than the appearance of cursor pointer but we can make it change state like background color or add animations.

Screenshots or Design Mockups (optional):
https://github.com/UBA-GCOEN/StichHub/assets/86224794/cbba16a9-8453-4e21-ae90-de04ff3bba1f
Additional Information (optional):
I would like to implement the above-like animation on the hover of all buttons on the site. I can implement it for all the buttons to give a consistent look.
Request - If you think that the changes will make a difference please assign me this issue under GSSoC'23 label.

Hey @AlfiyaSiddique
Thank you for raising the issue,
But we have this issue raised already,
Check issue #96

Okay @Siddhant-Patil0203, So should I close this issue under Close as not a planned option?

@AlfiyaSiddique Yes please, you can close this issue as not planned.
Thank you.


adding kml generate function

Added function that returns a promise containing a kml structure. Attached is an example KML file that gets generated.

test2.txt


Allow for deduplicating outgoing connection attempts

Problem:
When initiating a new connection to a server address, s2n-quic will allow multiple connections to that address with no attempt to deduplicate connections. Some applications may want only a single outgoing connection to a server to be created without having to manage this deduplication on the application side.
Solution:
Add an api such as client.get_or_connect(server_addr).await -> connection::Handle that will either start a new connection to the given address (if one does not already exist), or will look up the existing connection in a map and return a handle to that connection.
This may be implemented similar to connection_id_mapper.rs, but could use an Intrusive RBTree for the mapping, as there are no DoS concerns with this map.
The mapping of server address to connection should be opt-in so that applications that do not require this feature do not use the additional resources managing this mapping entails.

Does this change what s2n-quic sends over the wire? No
Does this change any public APIs? --> New client API

Requirements / Acceptance Criteria:
An application is able to opt-in to connection deduplication and use the client.get_or_connect(server_addr).await API

RFC links: Links to relevant RFC(s)
Related Issues: Link any relevant issues
Will the Usage Guide or other documentation need to be updated?
Testing: How will this change be tested? Call out new integration tests, functional tests, or particularly interesting/important unit tests.
-->

Out of scope:

We'd probably also need to consider SNI as well, since a single IP can host more than one virtual server. But socket addr is probably fine for the initial version? Or at least we could potentially make it configurable by what key connections are tracked.


HBASE-26130 Backport HBASE-25455 "Add trace support for HRegion read/…

…write operation" to branch-2
7/17 commits of HBASE-22120, original commit 03e12bfa4ad62ecc6eee6a2c68d431bea2d5c473

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
2m 39s
Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s
No case conflicting files found.

+1 :green_heart:
hbaseanti
0m  0s
Patch does not have any anti-patterns.

+1 :green_heart:
@author
0m  0s
The patch does not contain any @author tags.

_ HBASE-25853 Compile Tests _

+0 :ok:
mvndep
0m 17s
Maven dependency ordering for branch

+1 :green_heart:
mvninstall
4m 59s
HBASE-25853 passed

+1 :green_heart:
compile
6m 46s
HBASE-25853 passed

+1 :green_heart:
checkstyle
3m 16s
HBASE-25853 passed

+1 :green_heart:
spotbugs
6m  1s
HBASE-25853 passed

_ Patch Compile Tests _

+0 :ok:
mvndep
0m 14s
Maven dependency ordering for patch

+1 :green_heart:
mvninstall
4m 48s
the patch passed

+1 :green_heart:
compile
7m 13s
the patch passed

+1 :green_heart:
javac
7m 13s
the patch passed

-0 :warning:
checkstyle
1m 44s
hbase-server: The patch generated 4 new + 189 unchanged - 1 fixed = 193 total (was 190)

+1 :green_heart:
whitespace
0m  0s
The patch has no whitespace issues.

+1 :green_heart:
hadoopcheck
13m 42s
Patch does not cause any errors with Hadoop 3.1.2 3.2.1.

+1 :green_heart:
spotbugs
4m 36s
the patch passed

_ Other Tests _

+1 :green_heart:
asflicense
0m 33s
The patch does not generate ASF License warnings.

67m 26s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3594/1/artifact/yetus-general-check/output/Dockerfile

GITHUB PR
https://github.com/apache/hbase/pull/3594

Optional Tests
dupname asflicense javac spotbugs hadoopcheck hbaseanti checkstyle compile

uname
Linux 9555f0558d84 4.15.0-143-generic #147-Ubuntu SMP Wed Apr 14 16:10:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/hbase-personality.sh

git revision
HBASE-25853 / a6184593c4

Default Java
AdoptOpenJDK-1.8.0_282-b08

checkstyle
https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3594/1/artifact/yetus-general-check/output/diff-checkstyle-hbase-server.txt

Max. process+thread count
86 (vs. ulimit of 12500)

modules
C: hbase-common hbase-client hbase-server U: .

Console output
https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3594/1/console

versions
git=2.17.1 maven=3.6.3 spotbugs=4.2.2

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
0m 34s
Docker mode activated.

-0 :warning:
yetus
0m  7s
Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck

_ Prechecks _

_ HBASE-25853 Compile Tests _

+0 :ok:
mvndep
0m 19s
Maven dependency ordering for branch

+1 :green_heart:
mvninstall
4m 20s
HBASE-25853 passed

+1 :green_heart:
compile
2m  5s
HBASE-25853 passed

+1 :green_heart:
shadedjars
7m 14s
branch has no errors when building our shaded downstream artifacts.

+1 :green_heart:
javadoc
1m 37s
HBASE-25853 passed

_ Patch Compile Tests _

+0 :ok:
mvndep
0m 22s
Maven dependency ordering for patch

+1 :green_heart:
mvninstall
4m  1s
the patch passed

+1 :green_heart:
compile
2m  3s
the patch passed

+1 :green_heart:
javac
2m  3s
the patch passed

+1 :green_heart:
shadedjars
7m 17s
patch has no errors when building our shaded downstream artifacts.

+1 :green_heart:
javadoc
1m 33s
the patch passed

_ Other Tests _

+1 :green_heart:
unit
1m 43s
hbase-common in the patch passed.

+1 :green_heart:
unit
2m 44s
hbase-client in the patch passed.

+1 :green_heart:
unit
138m  1s
hbase-server in the patch passed.

176m 52s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3594/1/artifact/yetus-jdk11-hadoop3-check/output/Dockerfile

GITHUB PR
https://github.com/apache/hbase/pull/3594

Optional Tests
javac javadoc unit shadedjars compile

uname
Linux 0ca71fd83072 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/hbase-personality.sh

git revision
HBASE-25853 / a6184593c4

Default Java
AdoptOpenJDK-11.0.10+9

Test Results
https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3594/1/testReport/

Max. process+thread count
4004 (vs. ulimit of 12500)

modules
C: hbase-common hbase-client hbase-server U: .

Console output
https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3594/1/console

versions
git=2.17.1 maven=3.6.3

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
0m 39s
Docker mode activated.

-0 :warning:
yetus
0m  7s
Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck

_ Prechecks _

_ HBASE-25853 Compile Tests _

+0 :ok:
mvndep
0m 16s
Maven dependency ordering for branch

+1 :green_heart:
mvninstall
4m 10s
HBASE-25853 passed

+1 :green_heart:
compile
1m 55s
HBASE-25853 passed

+1 :green_heart:
shadedjars
7m 28s
branch has no errors when building our shaded downstream artifacts.

+1 :green_heart:
javadoc
1m 29s
HBASE-25853 passed

_ Patch Compile Tests _

+0 :ok:
mvndep
0m 16s
Maven dependency ordering for patch

+1 :green_heart:
mvninstall
3m 47s
the patch passed

+1 :green_heart:
compile
2m  0s
the patch passed

+1 :green_heart:
javac
2m  0s
the patch passed

+1 :green_heart:
shadedjars
7m 34s
patch has no errors when building our shaded downstream artifacts.

+1 :green_heart:
javadoc
1m 27s
the patch passed

_ Other Tests _

+1 :green_heart:
unit
1m 37s
hbase-common in the patch passed.

+1 :green_heart:
unit
2m 41s
hbase-client in the patch passed.

+1 :green_heart:
unit
149m 40s
hbase-server in the patch passed.

188m  2s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3594/1/artifact/yetus-jdk8-hadoop2-check/output/Dockerfile

GITHUB PR
https://github.com/apache/hbase/pull/3594

Optional Tests
javac javadoc unit shadedjars compile

uname
Linux b8424fef6b9c 4.15.0-151-generic #157-Ubuntu SMP Fri Jul 9 23:07:57 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/hbase-personality.sh

git revision
HBASE-25853 / a6184593c4

Default Java
AdoptOpenJDK-1.8.0_282-b08

Test Results
https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3594/1/testReport/

Max. process+thread count
3398 (vs. ulimit of 12500)

modules
C: hbase-common hbase-client hbase-server U: .

Console output
https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3594/1/console

versions
git=2.17.1 maven=3.6.3

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
1m  8s
Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s
No case conflicting files found.

+1 :green_heart:
hbaseanti
0m  0s
Patch does not have any anti-patterns.

+1 :green_heart:
@author
0m  0s
The patch does not contain any @author tags.

_ HBASE-25853 Compile Tests _

+0 :ok:
mvndep
0m 16s
Maven dependency ordering for branch

+1 :green_heart:
mvninstall
4m  4s
HBASE-25853 passed

+1 :green_heart:
compile
5m 13s
HBASE-25853 passed

+1 :green_heart:
checkstyle
2m 16s
HBASE-25853 passed

+1 :green_heart:
spotbugs
4m  6s
HBASE-25853 passed

_ Patch Compile Tests _

+0 :ok:
mvndep
0m 12s
Maven dependency ordering for patch

+1 :green_heart:
mvninstall
3m 39s
the patch passed

+1 :green_heart:
compile
5m 10s
the patch passed

-0 :warning:
javac
1m  4s
hbase-client generated 1 new + 157 unchanged - 1 fixed = 158 total (was 158)

+1 :green_heart:
checkstyle
0m 24s
The patch passed checkstyle in hbase-common

+1 :green_heart:
checkstyle
0m 34s
The patch passed checkstyle in hbase-client

+1 :green_heart:
checkstyle
1m 16s
hbase-server: The patch generated 0 new + 189 unchanged - 1 fixed = 189 total (was 190)

+1 :green_heart:
whitespace
0m  0s
The patch has no whitespace issues.

+1 :green_heart:
hadoopcheck
13m 10s
Patch does not cause any errors with Hadoop 3.1.2 3.2.1.

+1 :green_heart:
spotbugs
4m 42s
the patch passed

_ Other Tests _

+1 :green_heart:
asflicense
0m 33s
The patch does not generate ASF License warnings.

55m 26s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3594/2/artifact/yetus-general-check/output/Dockerfile

GITHUB PR
https://github.com/apache/hbase/pull/3594

Optional Tests
dupname asflicense javac spotbugs hadoopcheck hbaseanti checkstyle compile

uname
Linux 585333eff6c3 4.15.0-143-generic #147-Ubuntu SMP Wed Apr 14 16:10:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/hbase-personality.sh

git revision
HBASE-25853 / a6184593c4

Default Java
AdoptOpenJDK-1.8.0_282-b08

javac
https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3594/2/artifact/yetus-general-check/output/diff-compile-javac-hbase-client.txt

Max. process+thread count
86 (vs. ulimit of 12500)

modules
C: hbase-common hbase-client hbase-server U: .

Console output
https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3594/2/console

versions
git=2.17.1 maven=3.6.3 spotbugs=4.2.2

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
2m 14s
Docker mode activated.

-0 :warning:
yetus
0m  5s
Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck

_ Prechecks _

_ HBASE-25853 Compile Tests _

+0 :ok:
mvndep
0m 20s
Maven dependency ordering for branch

+1 :green_heart:
mvninstall
5m 54s
HBASE-25853 passed

+1 :green_heart:
compile
2m 37s
HBASE-25853 passed

+1 :green_heart:
shadedjars
9m 24s
branch has no errors when building our shaded downstream artifacts.

+1 :green_heart:
javadoc
2m  9s
HBASE-25853 passed

_ Patch Compile Tests _

+0 :ok:
mvndep
0m 23s
Maven dependency ordering for patch

+1 :green_heart:
mvninstall
5m 49s
the patch passed

+1 :green_heart:
compile
2m 52s
the patch passed

+1 :green_heart:
javac
2m 52s
the patch passed

+1 :green_heart:
shadedjars
9m 46s
patch has no errors when building our shaded downstream artifacts.

+1 :green_heart:
javadoc
2m  7s
the patch passed

_ Other Tests _

+1 :green_heart:
unit
2m 51s
hbase-common in the patch passed.

+1 :green_heart:
unit
3m 47s
hbase-client in the patch passed.

-1 :x:
unit
16m 51s
hbase-server in the patch failed.

69m 15s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3594/2/artifact/yetus-jdk11-hadoop3-check/output/Dockerfile

GITHUB PR
https://github.com/apache/hbase/pull/3594

Optional Tests
javac javadoc unit shadedjars compile

uname
Linux 5bc15f4d0ab7 4.15.0-147-generic #151-Ubuntu SMP Fri Jun 18 19:21:19 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/hbase-personality.sh

git revision
HBASE-25853 / a6184593c4

Default Java
AdoptOpenJDK-11.0.10+9

unit
https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3594/2/artifact/yetus-jdk11-hadoop3-check/output/patch-unit-hbase-server.txt

Test Results
https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3594/2/testReport/

Max. process+thread count
662 (vs. ulimit of 12500)

modules
C: hbase-common hbase-client hbase-server U: .

Console output
https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3594/2/console

versions
git=2.17.1 maven=3.6.3

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
1m 12s
Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s
No case conflicting files found.

+1 :green_heart:
hbaseanti
0m  0s
Patch does not have any anti-patterns.

+1 :green_heart:
@author
0m  0s
The patch does not contain any @author tags.

_ HBASE-25853 Compile Tests _

+0 :ok:
mvndep
0m 16s
Maven dependency ordering for branch

+1 :green_heart:
mvninstall
4m 16s
HBASE-25853 passed

+1 :green_heart:
compile
5m 26s
HBASE-25853 passed

+1 :green_heart:
checkstyle
2m 14s
HBASE-25853 passed

+1 :green_heart:
spotbugs
4m 15s
HBASE-25853 passed

_ Patch Compile Tests _

+0 :ok:
mvndep
0m 13s
Maven dependency ordering for patch

+1 :green_heart:
mvninstall
3m 52s
the patch passed

+1 :green_heart:
compile
6m 16s
the patch passed

+1 :green_heart:
javac
6m 16s
the patch passed

+1 :green_heart:
checkstyle
0m 32s
The patch passed checkstyle in hbase-common

+1 :green_heart:
checkstyle
0m 41s
The patch passed checkstyle in hbase-client

+1 :green_heart:
checkstyle
1m 23s
hbase-server: The patch generated 0 new + 189 unchanged - 1 fixed = 189 total (was 190)

+1 :green_heart:
whitespace
0m  0s
The patch has no whitespace issues.

+1 :green_heart:
hadoopcheck
16m 26s
Patch does not cause any errors with Hadoop 3.1.2 3.2.1.

+1 :green_heart:
spotbugs
6m 40s
the patch passed

_ Other Tests _

+1 :green_heart:
asflicense
0m 41s
The patch does not generate ASF License warnings.

65m 46s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3594/3/artifact/yetus-general-check/output/Dockerfile

GITHUB PR
https://github.com/apache/hbase/pull/3594

Optional Tests
dupname asflicense javac spotbugs hadoopcheck hbaseanti checkstyle compile

uname
Linux a45e4e9950e7 4.15.0-143-generic #147-Ubuntu SMP Wed Apr 14 16:10:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/hbase-personality.sh

git revision
HBASE-25853 / a6184593c4

Default Java
AdoptOpenJDK-1.8.0_282-b08

Max. process+thread count
86 (vs. ulimit of 12500)

modules
C: hbase-common hbase-client hbase-server U: .

Console output
https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3594/3/console

versions
git=2.17.1 maven=3.6.3 spotbugs=4.2.2

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
0m 41s
Docker mode activated.

-0 :warning:
yetus
0m  6s
Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck

_ Prechecks _

_ HBASE-25853 Compile Tests _

+0 :ok:
mvndep
0m 27s
Maven dependency ordering for branch

+1 :green_heart:
mvninstall
3m 25s
HBASE-25853 passed

+1 :green_heart:
compile
1m 50s
HBASE-25853 passed

+1 :green_heart:
shadedjars
6m 26s
branch has no errors when building our shaded downstream artifacts.

+1 :green_heart:
javadoc
1m 22s
HBASE-25853 passed

_ Patch Compile Tests _

+0 :ok:
mvndep
0m 16s
Maven dependency ordering for patch

+1 :green_heart:
mvninstall
3m 26s
the patch passed

+1 :green_heart:
compile
1m 51s
the patch passed

+1 :green_heart:
javac
1m 51s
the patch passed

+1 :green_heart:
shadedjars
6m 29s
patch has no errors when building our shaded downstream artifacts.

+1 :green_heart:
javadoc
1m 24s
the patch passed

_ Other Tests _

+1 :green_heart:
unit
1m 32s
hbase-common in the patch passed.

+1 :green_heart:
unit
2m 46s
hbase-client in the patch passed.

+1 :green_heart:
unit
148m 40s
hbase-server in the patch passed.

183m 42s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3594/3/artifact/yetus-jdk8-hadoop2-check/output/Dockerfile

GITHUB PR
https://github.com/apache/hbase/pull/3594

Optional Tests
javac javadoc unit shadedjars compile

uname
Linux<PHONE_NUMBER>ae 4.15.0-151-generic #157-Ubuntu SMP Fri Jul 9 23:07:57 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/hbase-personality.sh

git revision
HBASE-25853 / a6184593c4

Default Java
AdoptOpenJDK-1.8.0_282-b08

Test Results
https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3594/3/testReport/

Max. process+thread count
3705 (vs. ulimit of 12500)

modules
C: hbase-common hbase-client hbase-server U: .

Console output
https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3594/3/console

versions
git=2.17.1 maven=3.6.3

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
3m  4s
Docker mode activated.

-0 :warning:
yetus
0m  7s
Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck

_ Prechecks _

_ HBASE-25853 Compile Tests _

+0 :ok:
mvndep
0m 27s
Maven dependency ordering for branch

+1 :green_heart:
mvninstall
5m 27s
HBASE-25853 passed

+1 :green_heart:
compile
2m 50s
HBASE-25853 passed

+1 :green_heart:
shadedjars
9m 41s
branch has no errors when building our shaded downstream artifacts.

+1 :green_heart:
javadoc
2m  4s
HBASE-25853 passed

_ Patch Compile Tests _

+0 :ok:
mvndep
0m 16s
Maven dependency ordering for patch

+1 :green_heart:
mvninstall
6m  9s
the patch passed

+1 :green_heart:
compile
2m 49s
the patch passed

+1 :green_heart:
javac
2m 49s
the patch passed

+1 :green_heart:
shadedjars
9m 32s
patch has no errors when building our shaded downstream artifacts.

+1 :green_heart:
javadoc
1m 51s
the patch passed

_ Other Tests _

+1 :green_heart:
unit
2m 48s
hbase-common in the patch passed.

+1 :green_heart:
unit
3m 47s
hbase-client in the patch passed.

+1 :green_heart:
unit
212m 48s
hbase-server in the patch passed.

266m 15s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3594/3/artifact/yetus-jdk11-hadoop3-check/output/Dockerfile

GITHUB PR
https://github.com/apache/hbase/pull/3594

Optional Tests
javac javadoc unit shadedjars compile

uname
Linux c1087141ab11 4.15.0-147-generic #151-Ubuntu SMP Fri Jun 18 19:21:19 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/hbase-personality.sh

git revision
HBASE-25853 / a6184593c4

Default Java
AdoptOpenJDK-11.0.10+9

Test Results
https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3594/3/testReport/

Max. process+thread count
2777 (vs. ulimit of 12500)

modules
C: hbase-common hbase-client hbase-server U: .

Console output
https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3594/3/console

versions
git=2.17.1 maven=3.6.3

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

thanks for reviewing it @Apache9


build: bump ti plugins version and enable validate config job

@Mini256 Could you please change the config file to test it?

/test pull-tichi-validate-external-plugin-yaml

/merge

After this PR landed. You can submit a PR to configs.


Sector sleep and issues with spawn

Hi guys,
i understand the making of this feature and I like the sleeping sector feature, which is decreasing the usage of HW and making game more smooth, but in same time i would like to use it, I cannot go through it with correct functionality of spawns.
As some of you know, with sectors asleep, the spawns will just not work and thus dont spawn anything, this is a big complication for the dungeons itself, that will almost never spawn fully, unless the timer for sectors to go sleep is few hours, and even in this case, if you have spawns that spawn one mob per hour, and 5 mobs amount, this would take 5 hours of not falling to sleep.
Even tho i could get through the dungeons, there is a bigger issue and this is the random spawns for mounts, pirate AI ships and stuff like this. Since the randomly spawned object, which needs to get through timers to spawn, will most of the time be created in the sleeping sector and never spawn before someone enters.
I tried to get around when creating the item, to GOAWAKE for the sector and spawn itself, it will wake up both, but timers still stuck.
I also tried to use the SECTOR.FLAGS=secf_nosleep and combination of all mentioned above, but its little bit weird and complicated to work out properly so the sector will go sleep again after the spawning is done. Most of the time didnt even managed to make the timers work, even tho its been woken up.
Does anyone know any way how to get through this? I kinda like the idea that NPCs/Spawns fall to sleep, but not before they actually finished its job, that way its missing the point?
Or is there any actual way how to fix this in core?
Thanks!
Gladie

Spawn point should never check if it's a sleeping sector until they have all their spawn accomplish.

Its weird.
Im using custom loop, that after the spawn is created is supposed to spawn all , but with sleeping sectors it always spawns only 1 monster.
If i try same thing with sectors no sleeping, it will spawn everything.

So I might have found some awkward solution. This trigger is called on the main NPCs event from sphere.ini

For new spawns created into the sleeping sector, the first part of the IF will do the job, idk how.
For the dungeons, theres the second part, which once the sector is ready to go sleep (no clients around and timer from sphere.ini is ready) there is a windows few seconds and in this time, you can quickly spawn everything that is left.

I would be definitely happy if someone has anything else or better to this.
ON=@CREATE
IF (<SPAWNITEM>) && (<REGION.FLAGS>&REGION_FLAG_SHIP) && (<SPAWNITEM.COUNT> < <SPAWNITEM.AMOUNT>)
	SPAWNITEM.TIMERD=1
ELIF (<SPAWNITEM>) && (<SPAWNITEM.SECTOR.CANSLEEP>) && (<SPAWNITEM.COUNT> < <SPAWNITEM.AMOUNT>)
 	SPAWNITEM.TIMERD=1
ENDIF

I agree, the feature request for spawns to never fall sleep untill  ==  would be good solution.

The problem is that when a sector go to sleep, the sector stops ticking and thus all the items inside stops ticking, that's why the CAN_O_NOSLEEP flag does not work.


Enable change app service plan of existing app service

Enable change app service plan of existing app service, for issue #672

Codecov Report

Merging #677 into develop will decrease coverage by 0.14%.
The diff coverage is 0%.

@@             Coverage Diff             @@
##           develop     #677      +/-   ##
===========================================
- Coverage    33.82%   33.67%   -0.15%
===========================================
  Files           74       74
  Lines         3001     3014      +13
  Branches       436      439       +3
===========================================
  Hits          1015     1015
- Misses        1906     1919      +13
  Partials        80       80

Impacted Files
Coverage Δ

...bapp/handlers/runtime/LinuxRuntimeHandlerImpl.java
0% <0%> (ø)
:arrow_up:

...ers/runtime/PrivateRegistryRuntimeHandlerImpl.java
0% <0%> (ø)
:arrow_up:

...pp/handlers/runtime/WindowsRuntimeHandlerImpl.java
0% <0%> (ø)
:arrow_up:

...en/webapp/handlers/runtime/BaseRuntimeHandler.java
0% <0%> (ø)
:arrow_up:

...rs/runtime/PrivateDockerHubRuntimeHandlerImpl.java
0% <0%> (ø)
:arrow_up:

...ers/runtime/PublicDockerHubRuntimeHandlerImpl.java
0% <0%> (ø)
:arrow_up:

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 e0b0ffa...d09a523. Read the comment docs.


please help!  Request ID: Root=....

Sorry, the following happened to me again, please help!
raise _format(GatedRepoError, message, response) from e
huggingface_hub.errors.GatedRepoError: 401 Client Error. (Request ID: Root=1-66f4b037-1bf3d7d219afbc904ee05694;5601d2c9-8fd8-4ed8-b38d-d8a432e1fa59)
Cannot access gated repo for url https://huggingface.co/black-forest-labs/FLUX.1-dev/resolve/main/ae.safetensors.
Access to model black-forest-labs/FLUX.1-dev is restricted. You must have access to it and be authenticated to access it. Please log in.

You need to apply FLUX.1-dev access first in https://huggingface.co/black-forest-labs/FLUX.1-dev


Expose function to add entropy tables to pre-built dictionary.

In some cases a custom dictionary building algorithm tailored for a specific
input can be more effective than the one produced by ZDICT_trainFromBuffer,
but with the current API it's not possible encode the entropy tables into the
custom-built dictionary.
This commit extracts the logic to add entropy tables to a dictionary from
ZDICT_trainFromBuffer and exposes it as a function
ZDICT_addEntropyTablesFromBuffer.

Great idea Giuseppe !
Also, note that the project doesn't take PR directly into master.
It should go first through "dev" branch, or even its own feature branch.
Note that the currently active feature branch is dev070.
It features some little changes within zdict which will lightly affect your patch (dictID header field).

The currently active feature branch is dev070.

Sure, I'll rebase on that branch.

Looks like GitHub does not support changing the base branch of a PR, I'll open a new one.

Indeed, I believe it's the number one feature request since a few years already ...
https://github.com/isaacs/github/issues?q=is%3Aissue+is%3Aopen+sort%3Acomments-desc


test(middleware): fix flapping gas oracle

Motivation
CI tests are flapping because gas price changes between retrieving from Gas Station as expected and using it in middleware.
Solution
Implement fake gas price oracle, so we can be sure price doesn't change during the test.
PR Checklist

[x] Implement FakeGasOracle

Nice one! Thank you.


Turbo replication changes

PR for https://github.com/GoogleCloudPlatform/dotnet-docs-samples/issues/1509

@anshuldavid13 once this is approved please go ahead and merge it when you can. We are trying to get this feature / samples released this week. Thanks!

Error is an unrelated transient Monitoring error. Merging


Updating asset collision handling

Problem
The current logic for unpacking and packing an App can run into issues if there are collisions between the existing and the renamed files. The code right now tried to manage these in place, but there are scenarios where the new or old name of the file causes the previous entry to be overwritten and lost. An example of this can be found in #449.
The existing workflow roughly looks like this:

When we convert the app from an MSApp to source files (unpacking), we take all the images and rename them. Instead of the names they were given in the MSApp, they get named to be the friendly name of the image. Take my example app, these become:

0002.png -> Image2.png
8a8c1695-20fc-426f-a4c1-95984c977124.png -> 0001.png
548996b7-0cd8-4a9a-a417-351c30cc2da6.png -> 0002.png

Now in our unpacked app we have all the images as their friendly names.
When we go to pack the app back up, we take all these files and put them into _assetFiles in the CanvasDocument before eventually calling RestoreAssetFilePaths().
Inside this function, it goes through each image and it:

Finds the previous name of the image (so the reversal of my 3 files above.)
Removes the friendly name entry from _assetFiles
Adds or updates _assetFiles with the original filename

In Step 4, imagine the following:

_assetFiles contains our 3 unpacked images: Image2.png, 0001.png, 0002.png
We find a file called Image2.png, whose original name was 0002.png
We remove Image2.png from the _assetFiles and add 0002.png. Problem: we just overwrote the existing 0002.png.
Now we find a file called 0002.png, whose original name was 548996b7-0cd8-4a9a-a417-351c30cc2da6.png.
We remove 0002.png (problem: we just added this file) and add 548996b7-0cd8-4a9a-a417-351c30cc2da6.png. We just lost a file.

Solution
I am trying to simplify this and resolve collisions by keeping track of the new asset file entries separately, and then resolving them once we are finished processing the resources, instead of doing the swaps in place. This is a little less efficient, but I believe it will prevent any potential collision issues.
While fixing this, I refactored the unpacking portion as well inside StabilizeAssetFilePaths(), since it was causing my sample App to fail a Stress Test. It was similarly having issues where paths were being overwritten in _assetFiles, it just appears that those issues were never presenting as a roundtrip error in our existing test Apps.
Validation
All unit tests continue to pass, and I have added a new roundtrip App to test this specific scenario that identified this issue.

Looks great, confirms this fix works well also by testing the scenario reported in an earlier issue #440.
That issue involved asset collision and involved similar area of code.


conformance: add hostname intersection test

What type of PR is this?
/area conformance
What this PR does / why we need it:
Adds a conformance test that validates hostname
intersection between HTTPRoutes and Listeners.
Also updates the "WaitsForConsistency" helper
to retry immediately after a successful request, to
speed up test execution.
Which issue(s) this PR fixes:
Updates #1104
Does this PR introduce a user-facing change?:

NONE

/ok-to-test

Was that intended as a comment on one of my PRs or indeed this one with autocomplete being not helpful?

Updated based on #1159.

@rainest sorry for the confusion, not sure what I did but likely an accidental @.

@rainest sorry for the confusion, not sure what I did but likely an accidental @.

Thanks @skriss! This change LGTM and tests appear to be working as expected. Will leave a bit of time for someone else to chime in and add final LGTM.
/approve

Thanks @skriss! This change LGTM and tests appear to be working as expected. Will leave a bit of time for someone else to chime in and add final LGTM.
/approve

Thanks!
/lgtm


Implementation of Reclaim Space operation

This commit adds the implementation of Reclaim Space
Operation.
Signed-off-by: yati1998<EMAIL_ADDRESS>

Also, there is a type in the commit message (and PR title): Implemntation

Since StorageConsumption pre_usage,post_usage is optional, cephcsi returns nil values in csi grpc response,
This needs to be handled accordingly to avoid panic.
  // This field is OPTIONAL. This allows the SP to inform the CO about the
  // storage consumption before the ReclaimSpace operation was executed.
  StorageConsumption pre_usage = 1;

  // This field is OPTIONAL. This allows the SP to inform the CO about the
  // storage consumption after the ReclaimSpace operation was executed.
  StorageConsumption post_usage = 2;

Since StorageConsumption pre_usage,post_usage is optional, cephcsi returns nil values in csi grpc response, This needs to be handled accordingly to avoid panic.
  // This field is OPTIONAL. This allows the SP to inform the CO about the
  // storage consumption before the ReclaimSpace operation was executed.
  StorageConsumption pre_usage = 1;

  // This field is OPTIONAL. This allows the SP to inform the CO about the
  // storage consumption after the ReclaimSpace operation was executed.
  StorageConsumption post_usage = 2;

the fields are optional but why return nil instead of returning empty structure with nil values?

the fields are optional but why return nil instead of returning empty structure with nil values?

Because the fields in the structure are ints. That means, an empty structure would set the fields to 0, which has a different meaning than a nil structure.

@Madhu-1 can you review the PR.


Formatting with black doesn't update the file in-place

Environment data

VS Code version: 1.56.2
Extension version (available under the Extensions sidebar): v2021.5.842923320
OS and version: Arch Linux 5.12.5
Python version (& distribution if applicable, e.g. Anaconda): 3.6.8, using pyenv
Type of virtual environment used (N/A | venv | virtualenv | conda | ...): pyenv. I think it's virtualenv under the hood?
Value of the python.languageServer setting: Pylance

Expected behaviour
When formatting a python file with black, from the palette, right clicking, or format-on-save, the file should be updated with the changes.
Actual behaviour
The black process can be seen running, but the file does not get updated.

Error: Invalid patch string: --- /home/lacrymology/workspace/shiphero/Shiphero-API/shipping/shipping/application/quoting.py.43d88024a1c151b0045448c575b5425b.tmp	2021-05-28 17:46:43.167718 +0000

Please provide the logs as mentioned in the issue template.
Logs

Output for Python in the Output panel (View→Output, change the drop-down the upper-right of the Output panel to Python)

XXX

@karrtikr updated the description, sorry

Is that all in the logs? Can you please paste the full log. The first few lines and the command we run are important.

sorry again, updated

Thanks. Can you try running the command inside the cwd ~/workspace/shiphero/Shiphero-API.
~/.pyenv/versions/shiphero-shipping/bin/python ~/.vscode/extensions/ms-python.python-2021.5.842923320/pythonFiles/pyvsc-run-isolated.py black --diff --quiet ~/workspace/shiphero/Shiphero-API/shipping/shipping/application/quoting.py

in terminal and send a screenshot for the output. Please expand ~ to your home directory before running the command. Also, what is the full path to quoting.py file you intend to run?

Looks fine at a glance
--- /home/lacrymology/workspace/shiphero/Shiphero-API/shipping/shipping/application/quoting.py  2021-05-28 17:46:43.847718 +0000
+++ /home/lacrymology/workspace/shiphero/Shiphero-API/shipping/shipping/application/quoting.py  2021-05-31 12:54:08.198232 +0000
@@ -24,11 +24,15 @@
         for_return: bool = False,
     ):
         warehouse = await self._helper.get_shipping_warehouse(user, order, force_warehouse=force_warehouse)

         carriers_info = await self._helper.build_carriers_info(
-            user, warehouse.id, warehouse.profile, warehouse.identifier, order.account_id,
+            user,
+            warehouse.id,
+            warehouse.profile,
+            warehouse.identifier,
+            order.account_id,
         )

         quotes: List[Tuple[CarrierInfo, List[Quote]]] = []
         for carrier_info in carriers_info:
             ship_data = await self._helper.build_shipment_data_for_carrier(
@@ -56,11 +60,15 @@
         carrier: str,
         force_warehouse: int = None,
         shipping_method: str = None,
         for_return: bool = False,
     ):
-        warehouse = await self._helper.get_shipping_warehouse(user, order, force_warehouse=force_warehouse,)
+        warehouse = await self._helper.get_shipping_warehouse(
+            user,
+            order,
+            force_warehouse=force_warehouse,
+        )

         carriers_info = await self._helper.build_carriers_info(
             user, warehouse.id, warehouse.profile, warehouse.identifier, order.account_id, carrier
         )

@@ -158,11 +166,11 @@
             if quote.errors:
                 errors.append(dict(carrier=carrier_info.display_name, errors=quote.errors))

         ret = dict(
             # carrier=quote.carrier,
-            rates='rates',
+            rates="rates",
             cheapest=cheapest and rate_to_dict(*cheapest),
             # FIXME: collect errors
             warnings=[],
             carrier_errors=errors,
         )

Unfortunately, I'm unable to reproduce this issue with any simple python file,
test.py
hello = ''

I'm suspecting this could be related to the interpreter you're using. Can you try

Using test.py I mentioned instead.
Some other interpreter other than the pyenv one, for eg. some other interpreter in https://www.python.org/ and see if you run into the same error mentioned in the log?

I was experiencing this issue as well and found that setting the Editor: Default Formatter  to Python resulted in python files being autoformatted with black. I don't know whether this setting got changed on a recent update or if something else changed such that autoformatting otherwise stopped working.
Without that change, this used to auto format files, but no longer does.
To reproduce:

create new folder
pipenv install black --pre
select the virtual environment as the interpreter: Python: Select Interpreter
create a test.py file

import os

class testClass:

    def testfun():
        pass

    def testfun():
        pass

    def testfun():
        pass

    def testfun():
        pass

    def testfun():
        pass

save

That should get rid of the extra lines between methods, but doesn't.
Here are my setting.json from the same folder:
{
  "python.formatting.provider": "black",
  "python.pythonPath": "/home/caleb/.local/share/virtualenvs/test-4ew3Vgs-/bin/python"
}
`

@karrtikr it works on a new project, if I install black at the system level. If I select the system interpreter in my existing project, it still does not work.

@karrtikr issue was that someone added the color = true option to the project's pyproject.toml file, so the diff contained color markers and it didn't apply. Sorry

@Lacrymology Glad you were able to diagnose that🎉
@CalebEverett Your issue seems different, please open a new issue.


Cannot load json file properly

I couldn't find any example nor documentation on how to load a json file properly. I did it doing so:
ifstream myfile(p.path());
json j;
j << myfile;
cout << j.at(0) << endl;
cout << j[0] << endl;

Neither of those variants do work. I can compile it but I get the error cannot use at() with object and same with the [] operator. Only with a iterator I can actually access my values:
for (json::iterator it = j.begin(); it != j.end(); ++it)
But I can't access the subvalues in any way yet as there are no examples or documentations avaiable.
I tried it in many ways:
json j;
j << myfile;
for (json::iterator it = j.begin(); it != j.end(); ++it)
{
            json k;
            k << it;
            k << it.value();
...

Are there any examples how to actually load a json file properly or am I doing something wrong?

Here are examples from the README: https://github.com/nlohmann/json#tofrom-streams-eg-files-string-streams
How does your JSON file look like? What is the error message you encounter?

Closing due to inactivity. Feel free to comment to this issue if the problem still occurs.

@PowerOfCreation if you're still around, I'm using ifstream to stream into the JSON object, like in the examples on the readme:
json j;
std::ifstream i("path/to.json);
if (is.is_open() && i.good())
    i >> j;

It looks like you're trying to do j << i instead. Perhaps supported by the library, but I haven't tried.


Where are n_parallel_ftasks_per_script and n_ftasks_per_script defined?

As per #572 (the preliminary step towards #493), we may have a variable with a name like n_parallel_ftasks_per_script which defines the number of Fractal tasks that should be executed in parallel as part of the same SLURM job.
Question: where do we expect this variable to be set?
Examples:

Global variable, for the whole fractal-server instance.
One variable value for each operation mode in the SLURM configuration file - see #576.
Variable is defined for each task, in the database.
Variable is specified by the user each time they add a task to a workflow.
...

The same question holds for n_ftasks_per_script.

Just to clarify: "global" means "per-task but not per-workflowtask", right?
Cause my understanding is that each task (say create-ome-zarr, or cellpose) will have a very different value.

To facilitate the discussion, here are some requirements and options.
Requirements:

During execution of a Workflow, we need to know the value of n_ftasks_tot for each WorkflowTask. This is already known, since it it the number of components (e.g. whole-well images) in the dataset metadata.
During execution of a Workflow, we need to know the value of n_ftasks_per_script for each WorkflowTask.
During execution of a Workflow, we need to know the value of n_parallel_ftasks_per_script for each WorkflowTask.

Options for setting n_ftasks_per_script and n_parallel_ftasks_per_script (not mutually exclusive, since some granularity will always be needed and defaults are not enough for that):
4. Global configuration variables for each fractal-server instance.
5. Per-workflow definition upon submission for execution.
6. Default values for each Task, coming from the fractal-tasks-core manifest.
7. Required attributes of a WorkflowTask: they become two columns of the WorkflowTask database table, and we always have to set them during the usual create-workflow-task or edit-workflow-task operations.
8. Optional attributes of a WorkflowTask: they become two nullable columns of the WorkflowTask database table, and if we do not set them during the usual create-workflow-task or edit-workflow-task operations then there we will need to be some other source.
9. ..
Let's complete this list of options, in case I missed some, and then for each one of the two relevant variables (n_ftasks_per_script and n_parallel_ftasks_per_script) we need to list all options that can be used in a priority order.
Random example:
n_ftasks_per_script: 8, 4
n_parallel_ftasks_per_script: 6, 7

Note that having more than two options per variable already seems a bit risky, in terms of clarity.

I think that the source of this difficult choice is the following:

We want the user to know at little as possible about this (that is, we need solid defaults)
The values of n_ftasks_per_script and n_parallel_ftasks_per_script must be correlated with each other (i.e. we have to set them together in order to make a reasonable choice)
They must be correlated with n_ftasks_tot (e.g. 10 or 400 wells)
They must be correlated with the specific task (e.g. cellpose vs yokogawa-to-zarr)

My best proposal at the moment is to use the current behavior (one job per task) as the default, and then modify the relevant variables only for specific cases (i.e. treating 400 wells).
This would be something like
n_ftasks_per_script: 4 (global default, equal to 1), 8 (overridable for each task, with N atomic operations)
n_parallel_ftasks_per_script: 4 (global default, equal to 1), 8 (overridable for each task, with N atomic operations)

(where N is the number of parallel tasks in the specific workflow)

Priorities:
8 (optional overwrite by the user in the workflow task)
6 (task default => meta attribute)
9 (heuristics)
Example:
Most tasks have no defaults set. Cellpose will have a default for n_parallel_ftasks_per_script = 1.
A user could set n_ftasks_per_script in the meta args of any task. They could also set n_parallel_ftasks_per_script in the meta args (that would overwrite the default set by the task).
If nothing is set, the heuristic provides a value.
Concern:
Meta is a free-field dictionary. Different runners pick up different things.
Parallelization level key-value is treated in special way (i.e. cannot be overwritten)
Are we adding 2 new reserved keywords? Do they need special object protection?
=> formal requirements for those needed (=> suggestion by @tcompa )

How does the heuristic work?
Will require some additional parameters:
How many cores do the nodes on the cluster have? (smallest node/node we want to use)
How much memory do the nodes we want to use have?

associated partitions
Getting rid of executors decreases portability of the manifest. Somewhere we need to define partitions for GPUs, CPUs => GPU True/False attribute for tasks (overwritable). Our config defines specific rules for GPU & CPU.
[=> kinda an executor]
On FMI side, we'd need to specify additional extra-lines for GPU request

What does each task need to specify?
CPUs required
Memory required
GPU: True/False
Partition name (through GPU True/False)
Runtime (optional)
What does each workflow task need
All form task
Extra lines
WORKER_INIT
What's in the manifest?
Whatever is not optional for tasks (e.g. CPUs, Memory, GPU Flag)
Partition name is loaded from config
runtime is optional
Some default nb_tasks_per script
Scenarios, how do we want to run them by default (for Yokogawa to Zarr):
1 task => 1 job, n_ftasks_per_script = 1, n_parallel_ftasks_per_script = 1
10 tasks => 1 job, n_ftasks_per_script = 10, n_parallel_ftasks_per_script = 10 (depending on what cluster resources allow)
10 tasks => 2 job, n_ftasks_per_script = 5, n_parallel_ftasks_per_script = 5 (depending on what cluster resources allow)
400 tasks  => 10 job, n_ftasks_per_script = 40, n_parallel_ftasks_per_script = 5
We need to differentiate between small and large workflow (how many wells)
We first set n_parallel_ftasks_per_script based on slurm config & task requirements (what is still possible to run on a node)
How do we get n_ftasks_per_script? Do we have some target value for number of jobs running? (e.g. goal to have max. 20 jobs)
Scenario 1:
50 tasks, n_parallel_ftasks_per_script = 5 => n_ftasks_per_script = 5
Scenario 1:
200 tasks, n_parallel_ftasks_per_script = 5 => n_ftasks_per_script = 20
=> overall jobs are capped at a max value
For cellpose, we overwrite n_parallel_ftasks_per_script to 1 (or 2)
Open question:
Do we always want to run with highest n_parallel_ftasks_per_script possible? Or stay smaller (e.g. 5-10) to get deployed faster [how greedy do we get]
Would the user need to know about the global target value?
Do we have different defaults for number of tasks in a config file by the admin?

As per our last discussion with @jluethi @mfranzon @gusqgm
Whenever we are running a parallel task (note: non-parallel tasks are simple instances of the more general cases described here), at some point inside fractal_server.runner.submit_workflow we call executor.map(function, component_list). The executor may be concurrent.futures.ThreadPoolExecutor or fractal_server.app.runnner._slurm.FractalSlurmExecutor, and it takes care of executing function for the given arguments and returning the results.
The plan is that FractalSlurmExecutor.map method will look like
def map(self, function, ...):
    # (1) perform heuristics to set some required parameters
    # (2) run function

and we are now to define point (1) - while (2) is mostly explored in #572.
Here is an example of how the heuristics block could look like. This is not meant to be the actual one (e.g. we may choose different inputs, or different logic), but it should serve as a template for proposing other examples.
## INPUTS ##

OPTIONAL: n_ftasks_per_script, n_parallel_ftasks_per_script
    These come from optional WorkflowTask attributes (they can only be set in
    pairs, not one by one)
REQUIRED: n_ftasks_tot
    This is equal to `len(component_list)`, and it is alwasy known
REQUIRED: cpus_per_task
    This may come from different sources, see priority list below
REQUIRED: mem_per_task
    This may come from different sources, see priority list below
REQUIRED: slurm_mem_per_node, slurm_cpus_per_node
    These are fractal-server configuration variables, specified by the admin in
    a configuration file (after learning about the SLURM configuration on a
    specific cluster).
REQUIRED: target_number_of_jobs
    This is a fractal-server configuration variable, specified by the admin in
    a configuration file (after learning about the SLURM configuration on a
    specific cluster).

## HEURISTICS / BRANCH 1 ##
If n_ftasks_per_script, n_parallel_ftasks_per_script are set, then we need to
validate this parameters set.
1st check: n_parallel_ftasks_per_script*cpus_per_task must be <= slurm_cpus_per_node
2nd check: n_parallel_ftasks_per_script*mem_per_task must be <= slurm_mem_per_node
3rd check: math.ceil(n_ftasks_tot / n_ftasks_per_script) must be <= target_number_of_jobs
If all checks pass, then return.

## HEURISTICS / BRANCH 2 ##
If n_ftasks_per_script, n_parallel_ftasks_per_script are not set, then we need
to compute them.

## HEURISTICS / BRANCH 2a ##
If n_ftasks_tot < target_number_of_jobs:
    n_ftasks_per_script=1
    n_parallel_ftasks_per_script=1

## HEURISTICS / BRANCH 2b ##
If n_ftasks_per_script, n_parallel_ftasks_per_script are not set, then we need
to compute them. Here is an example that independently maximizes
n_parallel_ftasks_per_script and minimizes n_ftasks_per_script, given some
constraints, and then reduces n_parallel_ftasks_per_script if needed.

n_ftasks_per_script = math.ceil(n_ftasks_tot // target_number_of_jobs)

max_parallel_based_on_cpus = slurm_cpus_per_node // cpus_per_task
max_parallel_based_on_mem = slurm_mem_per_node // mem_per_task
n_parallel_ftasks_per_script = min(max_parallel_based_on_cpus, max_parallel_based_on_mem)
n_parallel_ftasks_per_script = min(n_parallel_ftasks_per_script, n_ftasks_per_script)

## OUTPUTS ##
n_ftasks_per_script
n_parallel_ftasks_per_script

The priority list we discussed (repeated from the comment above) includes the following sources for n_parallel_ftasks_per_script and n_ftasks_per_script (highest to lowest priority):

WorkflowTask attributes, as explicitly set by the user;
Task attributes (either explicitly set by the user or coming from the manifest defaults);
The heuristics logic.

Very good overview of the heuristic approach & the priorities, thanks @tcompa !

Content feedback on the heuristic approach:
## HEURISTICS / BRANCH 1 ##
If n_ftasks_per_script, n_parallel_ftasks_per_script are set, then we need to
validate this parameters set.
1st check: n_parallel_ftasks_per_script*cpus_per_task must be <= slurm_cpus_per_node
2nd check: n_parallel_ftasks_per_script*mem_per_task must be <= slurm_mem_per_node
3rd check: math.ceil(n_ftasks_tot / n_ftasks_per_script) must be <= target_number_of_jobs
If all checks pass, then return.

I think check 3 should just raise a (big) warning. i.e. a user can run things in a way that does not follow the heuristic goals of target_number_of_jobs. They are warned of this an it's their risk whether that's inefficient or will stop accepting jobs from them.
## HEURISTICS / BRANCH 2a ##
If n_ftasks_tot < target_number_of_jobs:
    n_ftasks_per_script=1
    n_parallel_ftasks_per_script=1

I'd have a different default here:
2a)
1st check: What's a reasonable / the max* n_parallel_ftasks_per_script that can run on the given nodes of the cluster, given the CPU & memory settings? => n_parallel_ftasks_per_script = X
2nd check: Is ceil(n_ftasks_tot / n_parallel_ftasks_per_script) < target_number_of_jobs
If yes, run with n_parallel_ftasks_per_script = X, n_ftasks_per_script = X
=> Runs all the jobs in parallel, in a few jobs
If no => HEURISTICS / BRANCH 2b
Choose highest reasonable/possible slurm_cpus_per_node, slurm_mem_per_node => run as described above.
Not fully sure whether this is all for 2b or there should be a 2c / separate condition.

reasonable vs max slurm_mem_per_node, slurm_cpus_per_node:
If our max node size is 16 CPU cores, 62 GB of RAM, requesting max node size is reasonable.
At FMI, there are fewer, but much bigger nodes (e.g.192 CPU cores, 805 GB RAM). In that case, we may target something smaller (e.g. aim for 48 Cores, 200 GB max.) to avoid having to wait too long.

If a user for some reason would want to run something that required 250 GB of RAM per task (I don't think that should happen, but 🤷🏻♂), it should be possible to run this (likely with n_parallel_ftasks_per_script = 1 and a high n_ftasks_per_script) => 2c edge case?
How would we specify reasonable max. node size vs. actual max or do we not fix an actual max?

Small (side-)comment:

I think check 3 should just raise a (big) warning. i.e. a user can run things in a way that does not follow the heuristic goals of target_number_of_jobs. They are warned of this an it's their risk whether that's inefficient or whether slurm will stop accepting jobs from them.

We don't currently have a way to provide feedback from inside the runner (nor I see an obvious way to do it, because we will hit this point while running tasks in background). We can add a warning line to the logs, but I would hardly call it a big warning.

Re: reasonable/max (@jluethi)
Are you thinking about having twice as many variables (a max_ one which is a hard constraint and a target_ one which is a soft constraint)?
If so, let's use these variable names to turn the scheme into an explicit definition - I can try to do it, but tomorrow ;)

Hi @jluethi, I am trying to compile your suggestions into something explicit and I'm not getting what's "reasonable" in this comment:

1st check: What's a reasonable / the max* n_parallel_ftasks_per_script that can run on the given nodes of the cluster,

Here is a concrete example to look at, below. The question is how is XXXX defined.
import math
import pytest
import logging
from devtools import debug

def heuristics(
        *,
        n_ftasks_per_script: int | None,  # Optional WorkflowTask attribute
        n_parallel_ftasks_per_script: int | None,  # Optional WorkflowTask attribute  # noqa
        n_ftasks_tot: int,  # Length of the component list, always known
        cpus_per_task: int,  # Task requirements (multiple possible sources)
        target_cpus_per_job: int,  # Fractal configuration variable (soft)
        max_cpus_per_job: int,  # Fractal configuration variable (hard)
        mem_per_task: int,  # Task requirements (multiple possible sources)
        target_mem_per_job: int,  # Fractal configuration variable (soft)
        max_mem_per_job: int,  # Fractal configuration variable (hard)
        target_num_jobs: int,  # Fractal configuration variable (soft)
        max_num_jobs: int,  # Fractal configuration variable (hard)
        ) -> tuple[int, int]:

    # TODO: memory may come as a string, with units. Here we should parse it,
    # and convert it to a given unit (say MB)

    # Branch 1
    if bool(n_ftasks_per_script) != bool(n_parallel_ftasks_per_script):
        raise ValueError(
                "n_ftasks_per_script and n_parallel_ftasks_per_script must "
                "be both set or both unset"
                )
    if n_ftasks_per_script and n_parallel_ftasks_per_script:
        if n_parallel_ftasks_per_script > n_ftasks_per_script:
            logging.warning(
                    "Setting n_parallel_ftasks_per_script="
                    f"n_ftasks_per_script={n_ftasks_per_script}"
                    )
            n_parallel_ftasks_per_script = n_ftasks_per_script
        if n_parallel_ftasks_per_script * cpus_per_task > target_cpus_per_job:
            logging.warning("Requesting more cpus than expected")
        if n_parallel_ftasks_per_script * cpus_per_task > max_cpus_per_job:
            raise ValueError("Requesting more cpus than allowed")
        if n_parallel_ftasks_per_script * mem_per_task > target_mem_per_job:
            logging.warning("Requesting more memory than expected")
        if n_parallel_ftasks_per_script * mem_per_task > max_mem_per_job:
            raise ValueError("Requesting more memory than allowed")
        num_jobs = math.ceil(n_ftasks_tot / n_ftasks_per_script)
        if num_jobs > target_num_jobs:
            logging.warning("Requesting more jobs than expected")
        if num_jobs > max_num_jobs:
            raise ValueError("Requesting more jobs than allowed")
        return n_ftasks_per_script, n_parallel_ftasks_per_script

    # Branch 2
    reasonable_n_parallel_ftasks_per_script = XXX    # <--- THIS IS THE VARIABLE I DON'T UNDERSTAND
    if math.ceil(n_ftasks_tot / reasonable_n_parallel_ftasks_per_script) <= target_num_jobs:  # noqa
        n_parallel_ftasks_per_script = reasonable_n_parallel_ftasks_per_script
        n_ftasks_per_script = reasonable_n_parallel_ftasks_per_script
    else:
        n_ftasks_per_script = math.ceil(n_ftasks_tot / target_num_jobs)
        n_parallel_based_on_cpus = target_cpus_per_job / cpus_per_task
        n_parallel_based_on_mem = target_mem_per_job / mem_per_task
        n_parallel_ftasks_per_script = min(n_parallel_based_on_cpus, n_parallel_based_on_mem)  # noqa
        n_parallel_ftasks_per_script = min(n_parallel_ftasks_per_script, n_ftasks_per_script)  # noqa

    return n_ftasks_per_script, n_parallel_ftasks_per_script

@pytest.mark.parametrize(
        "n_ftasks_per_script,n_parallel_ftasks_per_script",
        [
            (None, None),  # use the heuristics
            (20, 1),  # ask for 20-tasks job with no parallelism
            ]
        )
@pytest.mark.parametrize(
        "n_ftasks_tot,cpus_per_task,mem_per_task",  # task properties
        [
            (1, 1, 7000),  # yokogawa-to-zarr task for 1 well
            (10, 1, 7000),  # yokogawa-to-zarr task for 10 wells
            (400, 1, 7000),  # yokogawa-to-zarr task for 400 wells
            (1, 16, 63000),  # cellpose task for 1 well
            (10, 16, 63000),  # cellpose task for 10 wells
            (400, 16, 63000),  # cellpose task for 400 wells
            ]
        )
@pytest.mark.parametrize(
        "max_cpus_per_job,max_mem_per_job,max_num_jobs",  # cluster configuration  # noqa
        [
            (16, 64000, 1000),  # nodes with 16 CPUs, 64G memory, max 1000 jobs
            (192, 805000, 100),  # nodes with 192 CPUs, 805G memory, max 100 jobs  # noqa
            ]
        )
def test_heuristics(
        n_ftasks_per_script: int | None,
        n_parallel_ftasks_per_script: int | None,
        n_ftasks_tot: int,
        cpus_per_task: int,
        max_cpus_per_job: int,
        mem_per_task: int,
        max_mem_per_job: int,
        max_num_jobs: int,
        ):
    debug(n_ftasks_per_script)
    debug(n_parallel_ftasks_per_script)

    target_cpus_per_job = int(max_cpus_per_job * 0.75)
    target_mem_per_job = int(max_mem_per_job * 0.75)
    target_num_jobs = int(max_num_jobs * 0.75)

    n_ftasks_per_script, n_parallel_ftasks_per_script = heuristics(
            n_ftasks_per_script=n_ftasks_per_script,
            n_parallel_ftasks_per_script=n_parallel_ftasks_per_script,
            n_ftasks_tot=n_ftasks_tot,
            cpus_per_task=cpus_per_task,
            target_cpus_per_job=target_cpus_per_job,
            max_cpus_per_job=max_cpus_per_job,
            mem_per_task=mem_per_task,
            target_mem_per_job=target_mem_per_job,
            max_mem_per_job=max_mem_per_job,
            target_num_jobs=target_num_jobs,
            max_num_jobs=max_num_jobs,
    )
    debug(n_ftasks_per_script)
    debug(n_parallel_ftasks_per_script)

As per our last discussion with @jluethi, here is a plan for a revamped heuristics (the one below is the part where the output parameters were not already provided as an input, not the part where we only need to validate them):

Branch N

Set n_parallel_ftasks_per_script by aiming for target cpu/mem.
Given n_parallel_ftasks_per_script, set n_ftasks_per_script=n_parallel_ftasks_per_script (meaning that there is no "internal queue" inside jobs)
If  we are under the target job number, return.

Branch N+1 (if branch N failed)

Set n_parallel_ftasks_per_script by aiming for max cpu/mem.
Given n_parallel_ftasks_per_script, set n_ftasks_per_script=n_parallel_ftasks_per_script (meaning that there is no "internal queue" inside jobs)
If  we are under the max job number, return.

Sanity check: up to this point, we never introduced "internal queues".
Branch N+2 (if branch N+1 failed)

Set n_parallel_ftasks_per_script by aiming for max cpu/mem (the same as in branch 2).
Given n_parallel_ftasks_per_script, set n_ftasks_per_script based on max job number. This will introduce "internal queues".

I'll come up with an example table for the following 30 cases:

Number of components in [1, 10, 40, 96, 400].
Task (CPUs/mem) in [(1, "4G"), (16, "62G"), (4, "16G")].
Site in ["UZH", "FMI"], where

# UZH
  target_cpus_per_job = 8
  max_cpus_per_job = 16
  target_mem_per_job = 32G
  max_mem_per_job = 62G
  target_num_jobs = 100
  max_num_jobs = 200
# FMI
  target_cpus_per_job = 48
  max_cpus_per_job = 96
  target_mem_per_job = 62G
  max_mem_per_job = 125G
  target_num_jobs = 5
  max_num_jobs = 10

Great summary, thanks @tcompa ! And yes, this should be the goal of the heuristic :)

Here is an example of the current table, not meant to be checked in detail.
(but it already shows some weird situations..)
Cluster   | cpus/task | mem/task | | #jobs | tasks/script | parallel_tasks/script | Parallelism |
cluster_0 |         1 |     4000 | |     1 |            2 |                     2 |       1.000 |
cluster_0 |         1 |     4000 | |     5 |            2 |                     2 |       1.000 |
cluster_0 |         1 |     4000 | |    20 |            2 |                     2 |       1.000 |
cluster_0 |         1 |     4000 | |    48 |            2 |                     2 |       1.000 |
cluster_0 |         1 |     4000 | |   100 |            4 |                     4 |       1.000 |
cluster_0 |        16 |    62000 | |     1 |            2 |                     2 |       1.000 |
cluster_0 |        16 |    62000 | |     5 |            2 |                     2 |       1.000 |
cluster_0 |        16 |    62000 | |    20 |            2 |                     2 |       1.000 |
cluster_0 |        16 |    62000 | |    48 |            2 |                     2 |       1.000 |
cluster_0 |        16 |    62000 | |   100 |            4 |                     0 |       0.000 |
cluster_0 |         4 |    16000 | |     1 |            2 |                     2 |       1.000 |
cluster_0 |         4 |    16000 | |     5 |            2 |                     2 |       1.000 |
cluster_0 |         4 |    16000 | |    20 |            2 |                     2 |       1.000 |
cluster_0 |         4 |    16000 | |    48 |            2 |                     2 |       1.000 |
cluster_0 |         4 |    16000 | |   100 |            4 |                     1 |       0.250 |

Cluster   | cpus/task | mem/task | | #jobs | tasks/script | parallel_tasks/script | Parallelism |
cluster_1 |         1 |     4000 | |     1 |            2 |                     2 |       1.000 |
cluster_1 |         1 |     4000 | |     5 |            2 |                     2 |       1.000 |
cluster_1 |         1 |     4000 | |     5 |            8 |                     8 |       1.000 |
cluster_1 |         1 |     4000 | |     5 |           20 |                    15 |       0.750 |
cluster_1 |         1 |     4000 | |     5 |           80 |                    15 |       0.188 |
cluster_1 |        16 |    62000 | |     1 |            2 |                     2 |       1.000 |
cluster_1 |        16 |    62000 | |     5 |            2 |                     2 |       1.000 |
cluster_1 |        16 |    62000 | |     5 |            8 |                     1 |       0.125 |
cluster_1 |        16 |    62000 | |     5 |           20 |                     1 |       0.050 |
cluster_1 |        16 |    62000 | |     5 |           80 |                     1 |       0.013 |
cluster_1 |         4 |    16000 | |     1 |            2 |                     2 |       1.000 |
cluster_1 |         4 |    16000 | |     5 |            2 |                     2 |       1.000 |
cluster_1 |         4 |    16000 | |     5 |            8 |                     3 |       0.375 |
cluster_1 |         4 |    16000 | |     5 |           20 |                     3 |       0.150 |
cluster_1 |         4 |    16000 | |     5 |           80 |                     3 |       0.037 |

Quick glance feedback:
#jobs seems to scale as we'd expect in the beginning, but never reaching max job number. Also, tasks/script is a bit confusing (already at 2 for a single task)
parallel_tasks/script hits 0 for one of the cases, which is also weird :)

There's plenty to fix, agreed (plus I am not even showing the number-of-wells column). Including cases where n_parallel_ftasks_per_script becomes.. zero??
This was just to check that the table structure makes sense. I will re-post after going through the new heuristics we described today.

That looks much better. And the trade-offs appear to happen in the way that we'd want them.
One questions: In table 1, why do the napari-wf tasks have max 1. parallel task per script? With a target of 8 CPUs, 32 GB of memory, 2 should fit, no? [/ 4 for max cpus & RAM]

32 GB of memory

The cluster spec currently has 31G, so that two parallel tasks do not fit

This is when I modify cluster0 properties to have a target of 32GB:
Cluster   | Task       | cpus/task | mem/task | #tasks || #jobs | max #tasks/script | max #parallel_tasks/script | Parallelism |
cluster_0 | yoko2zarr  |         1 |     4000 |      1 ||     1 |                 8 |                          8 |       1.000 |
cluster_0 | yoko2zarr  |         1 |     4000 |     10 ||     2 |                 8 |                          8 |       1.000 |
cluster_0 | yoko2zarr  |         1 |     4000 |     40 ||     5 |                 8 |                          8 |       1.000 |
cluster_0 | yoko2zarr  |         1 |     4000 |     96 ||    12 |                 8 |                          8 |       1.000 |
cluster_0 | yoko2zarr  |         1 |     4000 |    400 ||    50 |                 8 |                          8 |       1.000 |
cluster_0 | napari-wf  |         4 |    16000 |      1 ||     1 |                 2 |                          2 |       1.000 |
cluster_0 | napari-wf  |         4 |    16000 |     10 ||     5 |                 2 |                          2 |       1.000 |
cluster_0 | napari-wf  |         4 |    16000 |     40 ||    20 |                 2 |                          2 |       1.000 |
cluster_0 | napari-wf  |         4 |    16000 |     96 ||    48 |                 2 |                          2 |       1.000 |
cluster_0 | napari-wf  |         4 |    16000 |    400 ||   134 |                 3 |                          3 |       1.000 |
cluster_0 | cellpose   |        16 |    61000 |      1 ||     1 |                 1 |                          1 |       1.000 |
cluster_0 | cellpose   |        16 |    61000 |     10 ||    10 |                 1 |                          1 |       1.000 |
cluster_0 | cellpose   |        16 |    61000 |     40 ||    40 |                 1 |                          1 |       1.000 |
cluster_0 | cellpose   |        16 |    61000 |     96 ||    96 |                 1 |                          1 |       1.000 |
cluster_0 | cellpose   |        16 |    61000 |    400 ||   200 |                 2 |                          1 |       0.500 |
cluster_1 | yoko2zarr  |         1 |     4000 |      1 ||     1 |                15 |                         15 |       1.000 |
cluster_1 | yoko2zarr  |         1 |     4000 |     10 ||     1 |                15 |                         15 |       1.000 |
cluster_1 | yoko2zarr  |         1 |     4000 |     40 ||     3 |                15 |                         15 |       1.000 |
cluster_1 | yoko2zarr  |         1 |     4000 |     96 ||     4 |                31 |                         31 |       1.000 |
cluster_1 | yoko2zarr  |         1 |     4000 |    400 ||    10 |                40 |                         31 |       0.775 |
cluster_1 | napari-wf  |         4 |    16000 |      1 ||     1 |                 3 |                          3 |       1.000 |
cluster_1 | napari-wf  |         4 |    16000 |     10 ||     4 |                 3 |                          3 |       1.000 |
cluster_1 | napari-wf  |         4 |    16000 |     40 ||     6 |                 7 |                          7 |       1.000 |
cluster_1 | napari-wf  |         4 |    16000 |     96 ||    10 |                10 |                          7 |       0.700 |
cluster_1 | napari-wf  |         4 |    16000 |    400 ||    10 |                40 |                          7 |       0.175 |
cluster_1 | cellpose   |        16 |    61000 |      1 ||     1 |                 1 |                          1 |       1.000 |
cluster_1 | cellpose   |        16 |    61000 |     10 ||     5 |                 2 |                          2 |       1.000 |
cluster_1 | cellpose   |        16 |    61000 |     40 ||    10 |                 4 |                          2 |       0.500 |
cluster_1 | cellpose   |        16 |    61000 |     96 ||    10 |                10 |                          2 |       0.200 |
cluster_1 | cellpose   |        16 |    61000 |    400 ||    10 |                40 |                          2 |       0.050 |

Ah ok, then the heuristics are working as they should.
We'd likely set default task requirements to something like 15 GB to fit better into that envelope :) Or lower, depending on some profiling of actual task memory usage of course.


Basic rotatable component

Added a Rotatable component that provides a "Rotate" verb.
Can't rotate anchored objects
Only added the component to vending machines and roller chairs for now

Questions:

Is this the right way to go? Should this be bound to some key, maybe? R?
If it IS the right way to go, should I make another verb to rotate counter-clockwise?
Should I make a Wrenchable component for the simplest case of things that can be anchored/unanchored with a wrench? We currently lack a way to do this.

Is this the right way to go? Should this be bound to some key, maybe? R?

Seems kind of unnecessary to me. Rotation really isn't that common.

If it IS the right way to go, should I make another verb to rotate counter-clockwise?

Can't hurt.

Should I make a Wrenchable component for the simplest case of things that can be anchored/unanchored with a wrench? We currently lack a way to do this.

In another PR maybe.

Actually do vending machines even have rotated sprites? Why give them the component?

The engineering and tools vending machine that I imported from bay do. I guess ideally we'd change the rest of them to have directional sprites as well?
I can also remove it from vending machines for now if we're not sold on the idea.
I'll push the counter-clockwise rotation verb in a bit.


UHF-8390

Guzzle::jsonDecode to utils::jsonDecode
ProphesizeTrait for prophesize method
How to test:
run composer require drupal/helfi_navigation:dev-UHF-8390
run composer require drupal/upgrade_status and drush en -y upgrade_status
run drush upgrade_status:analyze helfi_navigation
You should only see deprecation errors from prophecy / prophesize method.

Codecov Report

Merging #38 (032979f) into main (31ee06e) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head 032979f differs from pull request most recent head 3a37ac5. Consider uploading reports for the commit 3a37ac5 to get more accurate results

@@            Coverage Diff            @@
##               main      #38   +/-   ##
=========================================
  Coverage     70.03%   70.03%
  Complexity      174      174
=========================================
  Files            19       19
  Lines           664      664
=========================================
  Hits            465      465
  Misses          199      199

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


chore(transaction-service): add SEI-NETWORK transaction service api url

SEI NETWORK's multisig safe service: https://sei-safe.protofire.io/welcome

I have read the CLA Document and I hereby sign the CLA

recheck