[Question]: How to get original video fps with VideoGear.

Issue guidelines

[X] I've read the Issue Guidelines and wholeheartedly agree.

Issue Checklist

[X] I have searched open or closed issues for my problem and found nothing related or helpful.
[X] I have read the Documentation and found nothing related to my problem.
[X] I have gone through the Bonus Examples and FAQs and found nothing related or helpful.

Describe your Question
I need to  process High-Resolution videos with Higher FPS (60 fps or above ) frame by frame and generate point cloud. When using VideoGear and WriteGear, the video is not showing up as its original fps . It is slow as compared to the original. Also adding stabilize in these videos makes it very slow. Can you help with this? Didn't find anything from issues and documentation.
Terminal log output(Optional)
No response
Python Code(Optional)
No response
VidGear Version
0.3.1
Python version
3.9
Operating System version
Windows 10
Any other Relevant Information?
No response

Hi @nidhi-jha01, there can be several reasons why it is slow, but stabilizing it, will surely won't produce real-time frames. The stabilizer as mentioned in the docs will have latency because it need certain amount of frames to be in memory before applying filter to stabilize it.  And this latency is even worse with HD or high FPS frames. So my advise would be to at least downscale or divide the task into different module such as generating point cloud, saving video, stabilizing video etc., and maybe use multi-threading or multi-processing to make it faster, but still you have to comprise between performance and quality. Hope that helps.

@abhiTronix While using VideoGear and WriteGear , the fps is cut down to half of the original FPS for videos of >= 60 fps.

@nidhi-jha01 Okay, can you explain the complete pipeline, and what are the various tasks in your pipeline.

@abhiTronix While using VideoGear and WriteGear , the fps is cut down to half of the original FPS for videos of >= 60 fps.

@nidhi-jha01 also, can you elaborate "cut down to half of the original FPS", by whom? API or you manually before inputting?

import required libraries
from vidgear.gears import VideoGear
from vidgear.gears import WriteGear
import cv2
Open suitable video stream, such as webcam on first index(i.e. 0)
stream = VideoGear(source=file_name,stabilize=True,**options).start()
Define WriteGear Object with suitable output filename for e.g. Output.mp4
writer = WriteGear(output = 'Output1.mp4')
loop over
while True:
# read frames from stream
frame = stream.read()

# check for frame if None-type
if frame is None:
    break

# {do something with the frame here}

# write frame to writer
writer.write(frame)
cv2.namedWindow("Output Frame", cv2.WINDOW_NORMAL)
cv2.resizeWindow("Output Frame", 600, 700)
# cv2.imshow("REALTIME", frame)
# Show output window
cv2.imshow("Output Frame", frame)

# check for 'q' key if pressed
key = cv2.waitKey(1) & 0xFF
if key == ord("q"):
    break

close output window
cv2.destroyAllWindows()
safely close video stream
stream.stop()
safely close writer
writer.close()
This is the script that I am using for processing the video. The video that I feed to this script is of 60 fps with 1280*720 resolution. The video that appears on Output frame is very slow when compared to the video I feed to the script.
I calculated the prev_frame_time and current frame time and evaluated fps using it  as follows:
new_frame_time = time.time()
fps = 1 / (new_frame_time - prev_frame_time)
with this calculation the fps that I get for output window is usually between 20-30 fps .

I calculated the prev_frame_time and current frame time and evaluated fps using it as follows:

new_frame_time = time.time()
fps = 1 / (new_frame_time - prev_frame_time)
with this calculation the fps that I get for output window is usually between 20-30 fps .
@nidhi-jha01 The FPS reported will be slower because number of factors. Try these hacks:

Remove following imshow code: (becomes overhead when you just wanna save frames)

cv2.namedWindow("Output Frame", cv2.WINDOW_NORMAL)
cv2.resizeWindow("Output Frame", 600, 700)
# cv2.imshow("REALTIME", frame)
# Show output window
cv2.imshow("Output Frame", frame)

# check for 'q' key if pressed
key = cv2.waitKey(1) & 0xFF
if key == ord("q"):
    break

Use stabilize=False in VideoGear Class: (as it is slower inertly due to how it is designed)
Try resizing frames with reducer() function:

# import required libraries
from vidgear.gears.helper import reducer
from vidgear.gears.stabilizer import Stabilizer
from vidgear.gears import CamGear
from vidgear.gears import WriteGear
import cv2

# Open suitable video stream
stream = CamGear(source="unstabilized_stream.mp4").start()

# initiate stabilizer object with default parameters
stab = Stabilizer()

# Define writer with default parameters and suitable output filename for e.g. `Output.mp4`
writer = WriteGear(output="Output.mp4")

# loop over
while True:

    # read frames from stream
    frame = stream.read()

    # check for frame if not None-type
    if frame is None:
        break

   # reducer frames size if you want more performance
   frame = reducer(frame, percentage=30)  # reduce frame by 30%

    # send current frame to stabilizer for processing
    stabilized_frame = stab.stabilize(frame)

    # wait for stabilizer which still be initializing
    if stabilized_frame is None:
        continue

    # {do something with the stabilized frame here}

    # write stabilized frame to writer
    writer.write(stabilized_frame)

# clear stabilizer resources
stab.clean()

# safely close video stream
stream.stop()

# safely close writer
writer.close()

@nidhi-jha01 But if you asking to get exact FPS as original it is impossible with stabilize=True in VideoGear class because how the backend Stabilizer class is designed.


Add examples to the README and website?

Examples where one would actually see the badge :-)

good idea, will do

Is this what you had in mind https://github.com/r-hub/cchecksbadges#badges ?

Yes, thank you! :star_struck:  Could you please add alternative text as well?


tflite with hexagon delegate get poor performance while running mobilenet_quant_v1_224.tflite on Snapdragon 845

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): No
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): MacOS
Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device: MeiZu 16th, Snapdragon 845
TensorFlow installed from (source or binary): source
TensorFlow version (use command below): master branch, commit hash : 851b83d0ef9659bb83b4f8c56708fb045fe276dc
Bazel version (if compiling from source): 3.1.0
GCC/Compiler version (if compiling from source): ndk 20

After push all libhexagon_*.so to phone, I run benchmark_model with option "--use_hexagon=true --hexagon_profiling=true", then get results below

It seem that symbol of remote_handle_control not found, and the performance just so poor which even almost reach 60ms

@peyer
In order to expedite the trouble-shooting process here,Could you please fill the issue template, and please provide a code snippet to reproduce the issue reported here. Thanks!

ok. As I have said, I just use master branch with newest commit 851b83d0ef9659bb83b4f8c56708fb045fe276dc
Below is my configure results

Then I just use bazel to compile tflie

After all, I push all libhexagon_*.so and mobilenet_quant_v1_224.tflite, benchmark_model, then got

I think it is just too simple to reproduce similar results as well as running on Snapdragon 845 device

For the remote handle log message, it is harmless in your case.
As for the latency, i think you are mistaken. From the log you shared, the inference is taking 6358 us, which is 6.358 ms. not 60ms.
This looks working correctly to me.

@karimnosseir Sorry to brother you for my mistake. Another question, does tflite support SnapDragon with Hexagon backend?

@karimnosseir Sorry to brother you for my mistake. Another question, dose tflite support inference on SnaDragon 888 with Hexagon dsp backend ?

@peyer np.
Sadly no, Snapdragon 888 doesn't leverage Hexagon NN API. They had a new APIs for executing on the DSP, and hexagon delegate doesn't work with it.


Fix VM creation and update when sshAccess is disabled.

What this PR does / why we need it:
This PR fixes creation and update of azure VMs when sshAccess is disabled by adding a "fake" PublicKey.
Currently, creating an azure shoot with sshAccess disabled is not possible since the shoot would fail in reconciliation. It fails with the following cloud provider validation error: The value of parameter linuxConfiguration.ssh.publicKeys.keyData is invalid. since its value is "".
After removing SSH from LinuxConfiguration it starts failing with this cloud provider error: Authentication using either SSH or by user name and password must be enabled in Linux profile., which would suggest we need to provide either SSH or an adminPassword. We do not include the adminPassword and it is ill-advised to do so. The only option left would be to pass a "fake" PublicKey.
Which issue(s) this PR fixes:
Fixes #
Special notes for your reviewer:
Release note:

Fixed VM creation and update when `sshAccess` is disabled.

@AleksandarSavchev could you mention why an SSH access disablement is required ? Any gardener issue , slack thread ? We would like to know the context , as this will affect all our mcm-providers.
cc @ashwani2k @unmarshall

@himanshu-kun disabling SSH access is needed to make our clusters compliant with DISA STIGs rules 242393 and 242394. You can find the backlog issue for these changes here. For more information you can check the PR that added SSHAccess field to shoot description: ref.

As per https://github.com/MicrosoftDocs/azure-docs/issues/14447 it should be possible to block SSH access by configuring network security group. Have you already tried this out?

@unmarshall there are 2 issues:
a) The links that @AleksandarSavchev posted show that the endgoal is to disable the sshd daemon of the nodes - not disable SSH access somehow e.g. with NSGs.
b) If when shoot.spec.sshAccess is disabled, gardener does not create any SSH public key, then the machineclass will be invalid anyway. I think this was the original problem, that the since there isn't a key anymore, machine creation fails anyway.

When a shoot is configured with SSHAccess disabled a service called sshd-ensurer runs a script every 30 seconds which disables and stops the sshd service if enabled and/or running, it also kills any ssh connections. With SSHAccess disabled no public keys are created and the creation of bastions is disabled as well(ref: gardener/gardener#7188)
The problem of disabling ssh access has already been solved by the upper mentioned functionality. The problem in provider-azure is that we cannot create shoots with SSHAccess disabled, since there are no SSH public keys.

thanks for the context and sorry for the delay. I tried this out myself ..
the machineClass looked like this when workersSettings.sshAccess.enabled: false
osProfile:
      adminUsername: core
      linuxConfiguration:
        disablePasswordAuthentication: true
        ssh:
          publicKeys:
            keyData: null
            path: /home/core/.ssh/authorized_keys

the error from provider was
Cloud provider message - machine codes error: code = [Internal] message = [compute.VirtualMachinesClient#CreateOrUpdate: Failure sending request: StatusCode=400 -- Original Error: Code="InvalidParameter" Message="The value of parameter linuxConfiguration.ssh.publicKeys.keyData is invalid." Target="linuxConfiguration.ssh.publicKeys.keyData"]

I have reviewed the PR, kindly address , then we'll merge it.


Could you please simplify your filtering syntax?

It's pretty difficult to use.  Maybe something more like what Pinecone does, without all the hierarchy and internal objects like FieldCondition?

Hi, there is an open issue for it https://github.com/qdrant/qdrant/issues/3323


Add faq for no active account.

I try this plugin, I is very good. But I just can login and browse problem, But can't test and submit. I try figure it out. The result is my email is not active.

Sorry for the inconvenience. Good news is that the repo is still under maintenance!
My plan is to try an inactive account and see what will happen.

Thanks for your hardworking.

Related commit: 1fe65265d77c7e38c6


Apparent race condition in Arithmetic Block / Read-Before-Write Inlining bug?

This topology produces the following output when run on Pothos 0.5.0:

It appears that occasionally the Arithmetic block processes the buffer on port 0 in-place before it has been rendered by the Wave Monitor block, causing the data displayed on the Wave Monitor block to be displaced by 1024.
The issue remains when the Pacer block is removed, and also occurs if the Wave Monitor block is replaced by a Binary File Sink block and subsequently replayed directly into a Wave Monitor Block. It occurs for integer, float and complex float dtypes. I have not observed this occurring when input ports 0 and 1 of the Arithmetic block are swapped.
Changing line 301 of WorkerActor.cpp from:
        if (tryRBW and port._buffer.useCount() == 2) //2 -> accumulator + this port

to:
        if (false) //2 -> accumulator + this port

appears to stop the issue from occurring, but of course also disables the read-before-write buffer inlining optimization.

Thanks for the reporting. I was able to replicate this. It does really look like the buffer is getting inlined when its technically still held as a reference by another block. The wave source should be passing a reference (incrementing) to both the adder and the pacer, before discarding its own reference (decrementing). So while I dont think its a race on the reference count, it could be an accounting issue where we drop the reference before we should. I'm looking into it.

Solution: https://github.com/pothosware/pothos/commit/6dbb6118bbf25213da3544f7f3702c20fe9748bb


[INLONG-7945][Sort] Fix MongoDB CDC unable to output the 'replace' records

Prepare a Pull Request
[INLONG-7945][Sort] Fix MongoDB CDC unable to output the 'replace' records

Fixes #7945

Motivation
When executing the command db.tb1.replaceOne({"id": 51}, {"id":51, "name": "replace 51, 51 happy day"}) in MongoDB, the MongoDB CDC is unable to output the event.
Modifications

Remove the restriction on the replace operation.
Refactor the code.

@kuansix pls review it.


patch appears under library on click, fix

otherwise good, but now it blinks:

interesting

fixed so now it just closes floating box if dropped under it, expecting user is focused on graph not ui

ok lgtm


No what's new section

[Enter feedback here]
Hi it would be great if there was a Whats New Section like there is for the CAF. many thanks!

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

ID: 953cd3b7-f664-44f5-04bb-046a0f1079fe
Version Independent ID: 953cd3b7-f664-44f5-04bb-046a0f1079fe
Content: Microsoft Azure Well-Architected Framework - Azure Architecture Center
Content Source: well-architected/index.md
Service: architecture-center
Sub-service: well-architected
GitHub Login: @david-stanford
Microsoft Alias: robbymillsap

@dominicallen for consideration in aligning WAF to use a process like AAC & CAF's "What's New"

Thank you for the feedback! We've added this suggestion to our backlog for review


Use the local variable cache instead of c.cache

What does this PR do?
This PR fixes a panic where the scanfilesystem function was not using the right cache

Motivation

Additional Notes

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes
e2e tests should pass

/merge

/merge -p urgent

/merge -c

/merge -p urgent

/merge -c

/merge

/merge

/merge

/merge -c

/merge


[ssr] _uid is shared between requests

Version
2.3.1
Reproduction link
https://github.com/pi0/nuxt-test/blob/ssr_uid/pages/index.vue#L8
Steps to reproduce
This tests are based on this branch of nuxt.js which brings 2.3.x runInNewContext compatibility to nuxt.js. But can be reproduced with any other setup with runInNewContext  set to false.
What is expected?
_uid should be incremented on context and reset after every request
What is actually happening?
It is being shared across requests and each request affects next one.

_uid is internal and should not be used as part of the application state - I think it's fine as long as the user follows this rule.


Well-known-types support

Consider the following Service:
service Crow {
    rpc Hello (google.protobuf.Empty) returns (Caw);
}

This is what compiler generates for it:
pub trait Crow {
    fn hello(&mut self, ctx: ::grpcio::RpcContext, req: super::empty::Empty, sink: ::grpcio::UnarySink<super::hello::Caw>);
}

^ And compilation obviously fails, because super has no empty module in its scope.
rust-protobuf seems to have support for well-known-types, and I think it's possible to reuse it. Haven't dug too much into the code, but if I'm not mistaken all the needed modules and methods are public, so maybe it won't be very painful to implement.

You can work around this problem by:

Generate your proto rust files in a common directory.
Adding a mod.rs file to that directory.
In that mod.rs file map empty::Empty to protobuf::well_known_types::Empty:

use protobuf;

...proto.rs mods...

mod empty {
  pub use protobuf::well_known_types::Empty;
}


Disallow prefixes and terms having the same name in a scope

Something like H(50) could be either a prefix:<H> applied to a 50 (with superstitious parentheses), or a function call to a function H with one argument 50.
We kind of need to choose already at parse time, and the choice should be independent of the lexical environment, whether we find H or prefix:<H> (or both) among our bound names.
Which kind of means it needs to parse as a function call, always. But should H (50) (with an extra space) also be the function call? On one hand, it could be a way to disambiguate; on the other, we've so far managed to make the language completely whitespace-insignificant in exactly this sense. (Unlike Perl 6.)
I'm inclined to make even H (50) parse as a function call, because I like the whitespace insignificance that much. The question is how much we cater to someone who wanted it to mean the prefix, and what to give them instead.
I guess the most extreme thing to do would be to forbid the name clash in the first place, just like between infixes and postfixes.

Having slept on it, I'm slightly more leaning towards never allowing the conflict in the first place. That is, H(50) gets to mean either, but it's always clear from the lexical environment which one it is.

In the end, that's not so different from how +++ could be any number of combinations of postfixes, infix, and prefixes, according to the lexical environment. (All within the bounds of LTM and ratcheting.)

I think "parentheses after a term means function call" is a reasonable-enough rule to turn into an inviolable rule. But (stepping back a bit), the original problem is that parentheses are both terms (for grouping) and postcircumfixes (for function/macro invocation).
Come to think of it, same thing could happen with a [b], with a and [b] being either a prefix op and an array literal or a term and a postfix lookup.


Update to the open.mp beta server

Open.mp beta was released today, Any chance this will be updated to support it?

double the request

I agree, I hope it will be.

Yes, I'm going to do it soon.

I was reading over the open multiplayer readme and it appears they are planning on adding what this plugin does directly to the server. That would be fantastic if they went that route.


Inline annotation doesn't work if the JSON is a plain tree

If you use a plain tree to organize the translations in the JSON, the extension won't work correctly.
It will detect the translation on it's own menu but won't detect it on inline annotations like this example:

But if I use the classic tree in JSON it will work correctly:

@JJBocanegra Thank you for the feedback!
I might need to think about a proper way to support that.
My quick thought is add a config to determine the mode of parser. Something like
"vue-i18n-ally.mode": "plain" # or "normal"

What do you think?

That would work for me! 😄
But maybe call it something like json-mode or locale-json-mode to be more specific.
Also I'm new to VSCode extensions but could I ask you to show me where is the related code? Maybe I can think on something to avoid having a new parameter in the configuration 🤔

But maybe call it something like json-mode or locale-json-mode to be more specific.

People use YAML or JS format may also use this "flatten" style. I would prefer it's an organizing style rather than a format specified "mode".
My main concern about introducing this new config is making user confuse without reading the docs and becoming not quite "out-of-box".

Related code
https://github.com/antfu/vue-i18n-ally/blob/f9eb73f325752c67435cd928a33039ca0db17e55/src/core/LocaleLoader.ts#L95-L106

Also went it comes to writing, it uses lodash to set the key. This may also need to change.
https://github.com/antfu/vue-i18n-ally/blob/da6a9ac2f84fbb9076ee4af270fad483875e7c1e/src/core/LocaleLoader.ts#L303

Related code
https://github.com/antfu/vue-i18n-ally/blob/f9eb73f325752c67435cd928a33039ca0db17e55/src/core/LocaleLoader.ts#L95-L106

What about something like this?
getTreeNodeByKey (keypath: string, tree?: LocaleTree): LocaleNode | LocaleTree | undefined {
    tree = tree || this._localeTree

    let node = tree.children[keypath];

    if (node)
      return node;

    const keys = keypath.split('.')
    const root = keys[0]
    const remaining = keys.slice(1).join('.')
    node = tree.children[root]
    if (!remaining)
      return node
    if (node && node.type === 'tree')
      return this.getTreeNodeByKey(remaining, node)
    return undefined
  }

@JJBocanegra Great solution!
How about writing? Editing and translating will modify the locales file. How can we determine which style would user like to save?
I would do some experiment.

Modify the existing keys can be handled properly. Problem comes to creating new keys.
My solution is raising a prompt letting use to choose the mode on the first time saving. Then store the mode into config so user would not be bothered next time.

Modify the existing keys can be handled properly. Problem comes to creating new keys.
My solution is raising a prompt letting use to choose the mode on the first time saving. Then store the mode into config so user would not be bothered next time.

Or you could check if the JSON is flat or not, and take the decision then and if there is a mix of both modes then you could show the prompt asking what's the preference

Or you could check if the JSON is flat or not, and take the decision then and if there is a mix of both modes then you could show the prompt asking what's the preference

Determine whether a JSON is flat or not can be tricky. Being strict I would say a flat JSON requires two conditions:  there is no nested object and at least one of the keys contains '.' But this makes this situation failed
{
  "fruits.apple": "...",
  "fruits.banana": "...",
  "some.nested.currency": { "style": "currency", "currency": "USD" }
}

This should be flat but will be detected as the normal "object style". (to supporting Number localization and others)

{
  "some.nested.currency": { "style": "currency", "currency": "USD" }
}

That example is a mix of both modes, when that happens the prompt should appear and ask the user what's the preference 😄

Haha good point. I would start to implement now.

I was trying to remember what was doing a library that I used the last year for localisations, and it just converted all to flat or to tree, but don't let you mix both modes 🤔.
Maybe you could do the same, force the user to choose a mode (is a good practice after all) and convert the JSONs to the mode used.

@JJBocanegra I released a new version just now. Please update to v0.20.0 to see if it solves your case.

Now it's working! But I discovered another little issue, I'm going to open a new one.
Thanks @antfu and great work! 😄


[dashboard v2]  better grid drop ux, fix tab bugs 🐛

This PR

adds an empty drop target to the DashboardGrid to increase the drop zone surface area for better UX
fixes a bug where deletion of top-level tabs when a non-zero tab index was selected resulted in an empty screen because the tabIndex was not reset
fixes a bug in findParentId 🤦♂

@graceguo-supercat

LGTM!


[EventParameter] New parameter required in events OnBeforeAutoReserveXXX from codeunit Reservation Management

Related to my other issue
https://github.com/microsoft/ALAppExtensions/issues/10255
We require the parameter CalcReservEntry, as it exists in event OnBeforeAutoReserveItemLedgEntry, of all the following events of codeunit 99000845 "Reservation Management":
OnBeforeAutoReservePurchLine
OnBeforeAutoReserveSalesLine
OnBeforeAutoReserveProdOrderLine
OnBeforeAutoReserveProdOrderComp
OnBeforeAutoReserveAssemblyHeader
OnBeforeAutoReserveAssemblyLine
OnBeforeAutoReserveTransLine
OnBeforeAutoReserveServLine
OnBeforeAutoReserveJobPlanningLine

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.


Two lambda functions created after setting up default auth

Note: If your question is regarding the AWS Amplify Console service, please log it in the
AWS Amplify Console repository
These are the steps I performed for setting up Auth:

 Do you want to use the default authentication and security configuration? Default configuration
 Warning: you will not be able to edit these selections.
 How do you want users to be able to sign in? Username
 Do you want to configure advanced settings? No, I am done.

And two lambda functions created:

amplify-collectbetter-dev-140-UserPoolClientLambda-WDwkpxFH8G2M
amplify-collectbetter-dev-UpdateRolesWithIDPFuncti-R9Bgb8JYFhM6

I couldn't find any documentation about their functionality or why they are created except this issue explaining when they are created. I used Amplify to about 1 year ago for a project and used the same auth set-up settings but these lambda's weren't created.
So, what's the point of them? They aren't connected to any triggers, so what are they doing? Is there a way to not have them setup during the auth addition process? If they aren't being used I'd rather not have such extra infrastructure setup.
Which Category is your question related to?
Auth
Amplify CLI Version
5.1.0
You can use amplify -v to check the amplify cli version on your system
What AWS Services are you utilizing?
Auth, API, Storage.
Provide additional details e.g. code snippets

These are custom resource used to extend the CloudFormation;

amplify-collectbetter-dev-140-UserPoolClientLambda-WDwkpxFH8G2M

Is used to ensure the UserPool is to verify the UserPool settings.

amplify-collectbetter-dev-UpdateRolesWithIDPFuncti-R9Bgb8JYFhM6

This is used to update the AuthRole and UnAuthRole to allow access to the IdentityPool

@ammarkarachi Thanks for the reply.
From reading the documentation you provide I get the sense that I won't need to use them. If that is the case how can I remove them from my cloudformation stack? Is that okay to do, or are they used by functionality in Amplify?

@johnEthicalTechnology
I would suggest you keep them, It would require some testing on our part to make sure it doesn't break anything moving forwards

Closing due to inactivity. @johnEthicalTechnology if you have further questions please reply back to this thread or open a new Usage Question issue. 🙂


Run soil mask and indices for existing VNIR data

The hyperspectral workflow to generate NC from raw data is partially complete.  This task is to run the soil_mask and hyperspectral indices process for the existing VNIR data to generate review data.
Completion criteria:

[x] VNIR data copied from ROGER scratch to condo (blocking)
[x] Register existing datasets with Clowder?
[x] Run soil_mask extractor on existing inputs
[ ] Run hyperspectral indices extractors with soil mask inputs
[x] Document process
[ ] Create review issue and other issues for any encountered problems.

Trying to run soil_mask on existing inputs and running into OOM errors via Kubernetes.  @max-zilla  will maybe need some help purging the queue(s) so we can process only the small stuff in the short term.

look into possible running without soil masks. get indices that aggregate over soil AND leaves. right now soil mask is prerequisite for indices.

need to clear message queue
trigger on small files that we can actually handle

assume all v. lg files are errors (?)

the soilmask extractor has been updated and re-deployed on kubernetes, but the new files Henry created from 2017 need to be uploaded to Clowder in order to trigger the rest of the workflow.

running upload script on 1785 .nc VNIR files from 2017 now. e.g.:
https://terraref.ncsa.illinois.edu/clowder/datasets/5b72e7154f0c25c7b2813d72

Moved filesize limit down to 20GB and resubmitted.

Added #500 to create larger memory node now that we have resources.

@craig-willis are there any outstanding issues with node 7 or can i queue this?

Closing this for now until Vasit's team can resolve #514


[SPARK-9269][SQL] Add Set type matching to ArrayConverter

Can one of the admins verify this patch?

Can one of the admins verify this patch?

@alexliu68 thanks - what's the use case for this?

Cassandra has Set data type. When read set data into Spark SQL, it errors out by no matching in ArrayConverter

This seems reasonable, but we should also add tests to make sure that schema inference on sets works too.  Can we close this issue until you have time to add those and bring this PR up to date?


Squirrel not found

Hi,
I'm developing a windows application with electron, everything works fine but when I try update the app with the electron auto-updater module I receive a error "Squirrel not found".
What i'm missing?
Is possible use electron auto-updater module with this package?

I made a mistake when try upgrade to a new version.
With the installed version works really good.

I am having the same problem. How exactly did you resolved it?


kubectl describe nodes id should include namepaces when dumping pods running on the node

kubectl describe nodes id today shows all pods running on a node with that id, but doesn't include namespace for each pod:
$ cluster/kubectl.sh describe pods dns-test-fbcde65a-0e23-11e5-aa37-24be050deb0e
dawnchen@dawndev3:/usr/local/src/goproj/src/github.com/GoogleCloudPlatform/kubernetes$
dawnchen@dawndev3:/usr/local/src/goproj/src/github.com/GoogleCloudPlatform/kubernetes$ cluster/kubectl.sh describe nodes e2e-test-dawnchen-minion-r27t
W0608 14:19:21.456425   16588 request.go:291] field selector: v1beta3 - events - involvedObject.namespace - : need to check if this is versioned correctly.
W0608 14:19:21.456506   16588 request.go:291] field selector: v1beta3 - events - involvedObject.kind - Node: need to check if this is versioned correctly.
W0608 14:19:21.456518   16588 request.go:291] field selector: v1beta3 - events - involvedObject.uid - e2e-test-dawnchen-minion-r27t: need to check if this is versioned correctly.
W0608 14:19:21.456529   16588 request.go:291] field selector: v1beta3 - events - involvedObject.name - e2e-test-dawnchen-minion-r27t: need to check if this is versioned correctly.
Name:			e2e-test-dawnchen-minion-r27t
Labels:			kubernetes.io/hostname=e2e-test-dawnchen-minion-r27t
CreationTimestamp:	Mon, 08 Jun 2015 13:18:21 -0700
Conditions:
  Type		Status	LastHeartbeatTime			LastTransitionTime			Reason					Message
  Ready 	True 	Mon, 08 Jun 2015 14:19:15 -0700 	Mon, 08 Jun 2015 14:12:34 -0700 	kubelet is posting ready status
Addresses:	<IP_ADDRESS>,<IP_ADDRESS>
Capacity:
 cpu:		1
 memory:	1745136Ki
 pods:		100
Version:
 Kernel Version:		3.16.0-0.bpo.4-amd64
 OS Image:			Debian GNU/Linux 7 (wheezy)
 Container Runtime Version:	docker://1.7.0-rc2
 Kubelet Version:		v0.18.1-470-g636b40ffa19928-dirty
 Kube-Proxy Version:		v0.18.1-470-g636b40ffa19928-dirty
PodCIDR:			<IP_ADDRESS>/24
ExternalID:<PHONE_NUMBER>902049538
Pods:				(2 in total)
  fluentd-elasticsearch-e2e-test-dawnchen-minion-r27t
  dns-test-03e93b16-0e24-11e5-aa37-24be050deb0e

But when the user describe pod, it requires the namespace. There is no good way to find such pod belonging to which namespace so far.

cc/ @bgrant0607

Some related discussion can be found at #9356

I happened to be reading the code of this part recently, I'll create a PR to show namespaces.

@dchen1107 - Should we display namespaces of other resources like service, pod, etc. while describing them?

@hurf yes, that would be great.  Please feel free to send the PR to me.
Thanks!
--brendan

Closed by #9650


Ctrl+clicking Vector2.move_toward() member method points to GDScript builtin move_toward()'s documentation

Godot version: Godot 3.2.3stable, Godot 3.3 rc7

**OS/device including version:**Win64

Issue description:

The Vector2.move_toward() method seems to be misconfigured, appearing as move_toward(from,to,delta).
See https://github.com/godotengine/godot-docs/issues/4820
Steps to reproduce:
paste this code into your script and notice "move_toward" is marked in red, indicating a keyword. Ctrl-leftclick on "move_toward to get to the @GDScript move_toward API documentation instead of the Vector2 API docs.
var test_vec = Vector2(100,100)

func _process(delta):
	test_vec = test_vec.move_toward(Vector2.ZERO, 5)
	print(test_vec)

To clarify, it's not the method being misconfigured, it's the symbol resolution logic of the editor which finds the wrong match. The code should likely not look up builtin methods when trying to resolve symbols for some_var.method, as those would always be either member methods or properties.

Seems to be fixed in master.


Internal Server Error on User Registration in Development Mode

Describe the bug
Internal Server Error on User Registration. The default admin and password in the env.docker are also not working
To Reproduce
Steps to reproduce the behavior:
Run docker-compose --env-file .env.docker up
Sign up
And the error occurs.
Expected behavior
A user should be created with the supplied username and password.
Screenshots

Desktop (please complete the following information):

OS: Debian 11
Browser: Firefox-ESR
Version: 115.5.0esr

Additional context
ilfs@ilfs80:~/Public/grimoire$ docker compose --env-file .env.docker up
[+] Running 16/16
 ✔ pocketbase 3 layers [⣿⣿⣿]      0B/0B      Pulled                                                                              16.4s
   ✔ 96526aa774ef Pull complete                                                                                3.5s
   ✔ b81d65e74622 Pull complete                                                                                4.4s
   ✔ a6035ffe0b8d Pull complete                                                                                7.8s
 ✔ grimoire 11 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                                                                       92.5s
   ✔ 1f7ce2fa46ab Pull complete                                                                                8.4s
   ✔ be65943961fd Pull complete                                                                                6.7s
   ✔ deaa56ebdf84 Pull complete                                                                                13.4s
   ✔ 75001c095b3d Pull complete                                                                                11.5s
   ✔ 696f14a4770f Pull complete                                                                                12.1s
   ✔ bcd4e171318c Pull complete                                                                                14.0s
   ✔ e20100610709 Pull complete                                                                                30.2s
   ✔ 912033d20149 Pull complete                                                                                18.2s
   ✔ 4f4fb700ef54 Pull complete                                                                                16.5s
   ✔ 86b0332a7a4b Pull complete                                                                                23.4s
   ✔ ac31ac158758 Pull complete                                                                                20.9s
[+] Running 3/3
 ✔ Network grimoire_default       Created                                                                                0.2s
 ✔ Container grimoire-pocketbase  Created                                                                                6.5s
 ✔ Container grimoire             Created                                                                                1.9s
Attaching to grimoire, grimoire-pocketbase
grimoire-pocketbase  | 2023/11/30 12:36:14 Server started at http://<IP_ADDRESS>:80
grimoire-pocketbase  | ├─ REST API: http://<IP_ADDRESS>:80/api/
grimoire-pocketbase  | └─ Admin UI: http://<IP_ADDRESS>:80/_/
grimoire             | Listening on <IP_ADDRESS>:5173
grimoire             | Error: Not found: /favicon.ico
grimoire             |     at resolve (file:///app/build/server/index.js:3585:18)
grimoire             |     at resolve (file:///app/build/server/index.js:3412:34)
grimoire             |     at Object.handle (file:///app/build/server/chunks/hooks.server-13110f1a.js:31:26)
grimoire             |     at respond (file:///app/build/server/index.js:3410:43)
^CGracefully stopping... (press Ctrl+C again to force)
Aborting on container exit...
[+] Stopping 2/2
 ✔ Container grimoire             Stopped                                                                                11.6s
 ✔ Container grimoire-pocketbase  Stopped                                                                                1.2s
canceled

ilfs@ilfs80:~/Public/grimoire$ docker compose --env-file .env.docker up
[+] Running 2/2
 ✔ Container grimoire-pocketbase  Running                                                                                0.0s
 ✔ Container grimoire             Recreated                                                                                1.0s
Attaching to grimoire, grimoire-pocketbase
grimoire             | Listening on <IP_ADDRESS>:5173
grimoire             | Error: Not found: /favicon.ico
grimoire             |     at resolve (file:///app/build/server/index.js:3585:18)
grimoire             |     at resolve (file:///app/build/server/index.js:3412:34)
grimoire             |     at Object.handle (file:///app/build/server/chunks/hooks.server-13110f1a.js:31:26)
grimoire             |     at respond (file:///app/build/server/index.js:3410:43)
grimoire             | ClientResponseError 0: Something went wrong while processing your request.
grimoire             |     at file:///app/node_modules/.pnpm/pocketbase@0.19.0/node_modules/pocketbase/dist/pocketbase.es.mjs:1:31144
grimoire             |     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
grimoire             |     at async default (file:///app/build/server/chunks/7-ca624c92.js:9:20)
grimoire             |     at async handle_action_request (file:///app/build/server/index.js:1072:18)
grimoire             |     at async render_page (file:///app/build/server/index.js:2508:23)
grimoire             |     at async resolve (file:///app/build/server/index.js:3524:24)
grimoire             |     at async Object.handle (file:///app/build/server/chunks/hooks.server-13110f1a.js:31:20)
grimoire             |     at async respond (file:///app/build/server/index.js:3410:22)
grimoire             |     at async Array.ssr (file:///app/build/handler.js:1221:3) {
grimoire             |   url: '',
grimoire             |   status: 0,
grimoire             |   response: {},
grimoire             |   isAbort: false,
grimoire             |   originalError: TypeError: fetch failed
grimoire             |       at fetch (file:///app/build/shims.js:20346:13)
grimoire             |       at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
grimoire             |       at async default (file:///app/build/server/chunks/7-ca624c92.js:9:20)
grimoire             |       at async handle_action_request (file:///app/build/server/index.js:1072:18)
grimoire             |       at async render_page (file:///app/build/server/index.js:2508:23)
grimoire             |       at async resolve (file:///app/build/server/index.js:3524:24)
grimoire             |       at async Object.handle (file:///app/build/server/chunks/hooks.server-13110f1a.js:31:20)
grimoire             |       at async respond (file:///app/build/server/index.js:3410:22)
grimoire             |       at async Array.ssr (file:///app/build/handler.js:1221:3) {
grimoire             |     cause: Error: connect ECONNREFUSED <IP_ADDRESS>:8090
grimoire             |         at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1595:16) {
grimoire             |       errno: -111,
grimoire             |       code: 'ECONNREFUSED',
grimoire             |       syscall: 'connect',
grimoire             |       address: '<IP_ADDRESS>',
grimoire             |       port: 8090
grimoire             |     }
grimoire             |   }
grimoire             | }
grimoire             | ClientResponseError 0: Something went wrong while processing your request.
grimoire             |     at file:///app/node_modules/.pnpm/pocketbase@0.19.0/node_modules/pocketbase/dist/pocketbase.es.mjs:1:31144
grimoire             |     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
grimoire             |     at async default (file:///app/build/server/chunks/7-ca624c92.js:9:20)
grimoire             |     at async handle_action_request (file:///app/build/server/index.js:1072:18)
grimoire             |     at async render_page (file:///app/build/server/index.js:2508:23)
grimoire             |     at async resolve (file:///app/build/server/index.js:3524:24)
grimoire             |     at async Object.handle (file:///app/build/server/chunks/hooks.server-13110f1a.js:31:20)
grimoire             |     at async respond (file:///app/build/server/index.js:3410:22)
grimoire             |     at async Array.ssr (file:///app/build/handler.js:1221:3) {
grimoire             |   url: '',
grimoire             |   status: 0,
grimoire             |   response: {},
grimoire             |   isAbort: false,
grimoire             |   originalError: TypeError: fetch failed
grimoire             |       at fetch (file:///app/build/shims.js:20346:13)
grimoire             |       at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
grimoire             |       at async default (file:///app/build/server/chunks/7-ca624c92.js:9:20)
grimoire             |       at async handle_action_request (file:///app/build/server/index.js:1072:18)
grimoire             |       at async render_page (file:///app/build/server/index.js:2508:23)
grimoire             |       at async resolve (file:///app/build/server/index.js:3524:24)
grimoire             |       at async Object.handle (file:///app/build/server/chunks/hooks.server-13110f1a.js:31:20)
grimoire             |       at async respond (file:///app/build/server/index.js:3410:22)
grimoire             |       at async Array.ssr (file:///app/build/handler.js:1221:3) {
grimoire             |     cause: Error: connect ECONNREFUSED <IP_ADDRESS>:8090
grimoire             |         at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1595:16) {
grimoire             |       errno: -111,
grimoire             |       code: 'ECONNREFUSED',
grimoire             |       syscall: 'connect',
grimoire             |       address: '<IP_ADDRESS>',
grimoire             |       port: 8090
grimoire             |     }
grimoire             |   }
grimoire             | }
grimoire             | ClientResponseError 0: Something went wrong while processing your request.
grimoire             |     at file:///app/node_modules/.pnpm/pocketbase@0.19.0/node_modules/pocketbase/dist/pocketbase.es.mjs:1:31144
grimoire             |     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
grimoire             |     at async default (file:///app/build/server/chunks/12-82d76df8.js:12:7)
grimoire             |     at async handle_action_json_request (file:///app/build/server/index.js:997:18)
grimoire             |     at async resolve (file:///app/build/server/index.js:3524:24)
grimoire             |     at async Object.handle (file:///app/build/server/chunks/hooks.server-13110f1a.js:31:20)
grimoire             |     at async respond (file:///app/build/server/index.js:3410:22)
grimoire             |     at async Array.ssr (file:///app/build/handler.js:1221:3) {
grimoire             |   url: '',
grimoire             |   status: 0,
grimoire             |   response: {},
grimoire             |   isAbort: false,
grimoire             |   originalError: TypeError: fetch failed
grimoire             |       at fetch (file:///app/build/shims.js:20346:13)
grimoire             |       at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
grimoire             |       at async default (file:///app/build/server/chunks/12-82d76df8.js:12:7)
grimoire             |       at async handle_action_json_request (file:///app/build/server/index.js:997:18)
grimoire             |       at async resolve (file:///app/build/server/index.js:3524:24)
grimoire             |       at async Object.handle (file:///app/build/server/chunks/hooks.server-13110f1a.js:31:20)
grimoire             |       at async respond (file:///app/build/server/index.js:3410:22)
grimoire             |       at async Array.ssr (file:///app/build/handler.js:1221:3) {
grimoire             |     cause: Error: connect ECONNREFUSED <IP_ADDRESS>:8090
grimoire             |         at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1595:16) {
grimoire             |       errno: -111,
grimoire             |       code: 'ECONNREFUSED',
grimoire             |       syscall: 'connect',
grimoire             |       address: '<IP_ADDRESS>',
grimoire             |       port: 8090
grimoire             |     }
grimoire             |   }
grimoire             | }
grimoire             | ClientResponseError 0: Something went wrong while processing your request.
grimoire             |     at file:///app/node_modules/.pnpm/pocketbase@0.19.0/node_modules/pocketbase/dist/pocketbase.es.mjs:1:31144
grimoire             |     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
grimoire             |     at async default (file:///app/build/server/chunks/12-82d76df8.js:12:7)
grimoire             |     at async handle_action_json_request (file:///app/build/server/index.js:997:18)
grimoire             |     at async resolve (file:///app/build/server/index.js:3524:24)
grimoire             |     at async Object.handle (file:///app/build/server/chunks/hooks.server-13110f1a.js:31:20)
grimoire             |     at async respond (file:///app/build/server/index.js:3410:22)
grimoire             |     at async Array.ssr (file:///app/build/handler.js:1221:3) {
grimoire             |   url: '',
grimoire             |   status: 0,
grimoire             |   response: {},
grimoire             |   isAbort: false,
grimoire             |   originalError: TypeError: fetch failed
grimoire             |       at fetch (file:///app/build/shims.js:20346:13)
grimoire             |       at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
grimoire             |       at async default (file:///app/build/server/chunks/12-82d76df8.js:12:7)
grimoire             |       at async handle_action_json_request (file:///app/build/server/index.js:997:18)
grimoire             |       at async resolve (file:///app/build/server/index.js:3524:24)
grimoire             |       at async Object.handle (file:///app/build/server/chunks/hooks.server-13110f1a.js:31:20)
grimoire             |       at async respond (file:///app/build/server/index.js:3410:22)
grimoire             |       at async Array.ssr (file:///app/build/handler.js:1221:3) {
grimoire             |     cause: Error: connect ECONNREFUSED <IP_ADDRESS>:8090
grimoire             |         at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1595:16) {
grimoire             |       errno: -111,
grimoire             |       code: 'ECONNREFUSED',
grimoire             |       syscall: 'connect',
grimoire             |       address: '<IP_ADDRESS>',
grimoire             |       port: 8090
grimoire             |     }
grimoire             |   }
grimoire             | }
grimoire             | ClientResponseError 0: Something went wrong while processing your request.
grimoire             |     at file:///app/node_modules/.pnpm/pocketbase@0.19.0/node_modules/pocketbase/dist/pocketbase.es.mjs:1:31144
grimoire             |     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
grimoire             |     at async default (file:///app/build/server/chunks/12-82d76df8.js:12:7)
grimoire             |     at async handle_action_json_request (file:///app/build/server/index.js:997:18)
grimoire             |     at async resolve (file:///app/build/server/index.js:3524:24)
grimoire             |     at async Object.handle (file:///app/build/server/chunks/hooks.server-13110f1a.js:31:20)
grimoire             |     at async respond (file:///app/build/server/index.js:3410:22)
grimoire             |     at async Array.ssr (file:///app/build/handler.js:1221:3) {
grimoire             |   url: '',
grimoire             |   status: 0,
grimoire             |   response: {},
grimoire             |   isAbort: false,
grimoire             |   originalError: TypeError: fetch failed
grimoire             |       at fetch (file:///app/build/shims.js:20346:13)
grimoire             |       at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
grimoire             |       at async default (file:///app/build/server/chunks/12-82d76df8.js:12:7)
grimoire             |       at async handle_action_json_request (file:///app/build/server/index.js:997:18)
grimoire             |       at async resolve (file:///app/build/server/index.js:3524:24)
grimoire             |       at async Object.handle (file:///app/build/server/chunks/hooks.server-13110f1a.js:31:20)
grimoire             |       at async respond (file:///app/build/server/index.js:3410:22)
grimoire             |       at async Array.ssr (file:///app/build/handler.js:1221:3) {
grimoire             |     cause: Error: connect ECONNREFUSED <IP_ADDRESS>:8090
grimoire             |         at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1595:16) {
grimoire             |       errno: -111,
grimoire             |       code: 'ECONNREFUSED',
grimoire             |       syscall: 'connect',
grimoire             |       address: '<IP_ADDRESS>',
grimoire             |       port: 8090
grimoire             |     }
grimoire             |   }
grimoire             | }
grimoire             | ClientResponseError 0: Something went wrong while processing your request.
grimoire             |     at file:///app/node_modules/.pnpm/pocketbase@0.19.0/node_modules/pocketbase/dist/pocketbase.es.mjs:1:31144
grimoire             |     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
grimoire             |     at async default (file:///app/build/server/chunks/12-82d76df8.js:12:7)
grimoire             |     at async handle_action_json_request (file:///app/build/server/index.js:997:18)
grimoire             |     at async resolve (file:///app/build/server/index.js:3524:24)
grimoire             |     at async Object.handle (file:///app/build/server/chunks/hooks.server-13110f1a.js:31:20)
grimoire             |     at async respond (file:///app/build/server/index.js:3410:22)
grimoire             |     at async Array.ssr (file:///app/build/handler.js:1221:3) {
grimoire             |   url: '',
grimoire             |   status: 0,
grimoire             |   response: {},
grimoire             |   isAbort: false,
grimoire             |   originalError: TypeError: fetch failed
grimoire             |       at fetch (file:///app/build/shims.js:20346:13)
grimoire             |       at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
grimoire             |       at async default (file:///app/build/server/chunks/12-82d76df8.js:12:7)
grimoire             |       at async handle_action_json_request (file:///app/build/server/index.js:997:18)
grimoire             |       at async resolve (file:///app/build/server/index.js:3524:24)
grimoire             |       at async Object.handle (file:///app/build/server/chunks/hooks.server-13110f1a.js:31:20)
grimoire             |       at async respond (file:///app/build/server/index.js:3410:22)
grimoire             |       at async Array.ssr (file:///app/build/handler.js:1221:3) {
grimoire             |     cause: Error: connect ECONNREFUSED <IP_ADDRESS>:8090
grimoire             |         at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1595:16) {
grimoire             |       errno: -111,
grimoire             |       code: 'ECONNREFUSED',
grimoire             |       syscall: 'connect',
grimoire             |       address: '<IP_ADDRESS>',
grimoire             |       port: 8090
grimoire             |     }
grimoire             |   }
grimoire             | }

Hello @ilovefreesw!
Which version of the app do you use? If not the most recent one, please pull the main branch, as it contains a fix for this very problem.
As for the initial admin credentials not working for user login, they shouldn't. As mentioned here, https://github.com/goniszewski/grimoire/issues/25.

Yes I run docker compose on the latest version. I think that uses the latest code.  Grimoire's app image has no use for it.

@tamaskan next version will include much better error handling for both app and forms. PR: https://github.com/goniszewski/grimoire/pull/27

@goniszewski Installed your version and I still get 500 errors when logged in.
I have used your latest version (currently commit f64abc49ef75ec1947ffd866eb99da3983b088da).
Here is the steps to reproduce the issue:

Clone the repo
Copy .env.example into .env
Run docker compose up -d
Go to http://localhost:5173
Click Sign-up
Create user with username test and password test1234
You get this error

With this log:
handlePBError ClientResponseError 404: The requested resource wasn't found.
    at file:///app/node_modules/.pnpm/pocketbase@0.19.0/node_modules/pocketbase/dist/pocketbase.es.mjs:1:31144
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async default (file:///app/build/server/chunks/12-14553d45.js:28:7)
    at async handle_action_json_request (file:///app/build/server/index.js:992:18)
    at async resolve (file:///app/build/server/index.js:3519:24)
    at async Object.handle (file:///app/build/server/chunks/hooks.server-3e813b3f.js:33:20)
    at async respond (file:///app/build/server/index.js:3405:22)
    at async Array.ssr (file:///app/build/handler.js:1221:3) {
  url: 'http://pocketbase/api/collections/categories/records',
  status: 404,
  response: {
    code: 404,
    message: "The requested resource wasn't found.",
    data: {}
  },
  isAbort: false,
  originalError: {
    url: 'http://pocketbase/api/collections/categories/records',
    status: 404,
    data: {
      code: 404,
      message: "The requested resource wasn't found.",
      data: {}
    }
  }
} true

Click on login
Try to login with username test and password test1234
You get a 500 internal error with this log

User logged: test
User logged: test
ClientResponseError 404: The requested resource wasn't found.
    at file:///app/node_modules/.pnpm/pocketbase@0.19.0/node_modules/pocketbase/dist/pocketbase.es.mjs:1:31144
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async load (file:///app/build/server/chunks/0-afd7bea8.js:44:22)
    at async load_server_data (file:///app/build/server/index.js:1187:18)
    at async file:///app/build/server/index.js:2558:18 {
  url: 'http://pocketbase/api/collections/categories/records?page=1&perPage=1000&expand=parent&filter=owner%3D%22gaso9xiznpphbyt%22&sort=name',
  status: 404,
  response: {
    code: 404,
    message: "The requested resource wasn't found.",
    data: {}
  },
  isAbort: false,
  originalError: {
    url: 'http://pocketbase/api/collections/categories/records?page=1&perPage=1000&expand=parent&filter=owner%3D%22gaso9xiznpphbyt%22&sort=name',
    status: 404,
    data: {
      code: 404,
      message: "The requested resource wasn't found.",
      data: {}
    }
  }
}

You are now stuck in 500 loop until you clear cookies

Also, trying out to login into http://localhost:5173/admin/login doesn't work at all. I get a 401 error with any credentials.
Do we have to create an admin user in pocketbase first before being able to use grimoire?

@babariviere PocketBase needs to apply necessary migrations. Without this step, the app won't be able to connect to it.
Error with code 404 probably means that the PB doesn't see the provided token as valid. If PUBLIC_HTTPS_ONLY is not set to true, and both http://pocketbase:80 and http://localhost:8090 (with default config) fails the same, it may be the problem with PB configuration or missing migrations.

@babariviere PocketBase needs to apply necessary migrations. Without this step, the app won't be able to connect to it.
Error with code 404 probably means that the PB doesn't see the provided token as valid. If PUBLIC_HTTPS_ONLY is not set to true, and both http://pocketbase:80 and http://localhost:8090 (with default config) fails the same, it may be the problem with PB configuration or missing migrations.

Migrations aren't automatically run? They are mount on a certain path in the docker-compose, I though it would automatically run them. Even running the pocketbase migrate command does nothing because I think the mount path is incorrect.
I think if we had just the bootstrap command for this, it would be enough for everyone to run it without friction.

The migrations are run automatically the first time PB is started. I have mentioned this specifically because there were attempts to run the app with only docker-compose.yml and .env file (so no pb_migrations in sight).
I am trying to improve and simplify the initialization process any chance I get. If I stumble upon a better solution, I will implement it 🙂

I made a small fix to your docker-compose, the mount path was incorrect. That's probably why it wasn't working as expected.

Hello. I'm receiving the same error when I try to run the service.
Listening on <IP_ADDRESS>:5173
ClientResponseError 0: Something went wrong while processing your request.
    at file:///app/node_modules/.pnpm/pocketbase@0.19.0/node_modules/pocketbase/dist/pocketbase.es.mjs:1:31144
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async load (file:///app/build/server/chunks/0-e19feb09.js:34:24)
    at async load_server_data (file:///app/build/server/index.js:1187:18)
    at async file:///app/build/server/index.js:2558:18 {
  url: '',
  status: 0,
  response: {},
  isAbort: false,
  originalError: TypeError: fetch failed
      at fetch (file:///app/build/shims.js:20346:13)
      at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
      at async load (file:///app/build/server/chunks/0-e19feb09.js:34:24)
      at async load_server_data (file:///app/build/server/index.js:1187:18)
      at async file:///app/build/server/index.js:2558:18 {
    cause: Error: connect ECONNREFUSED <IP_ADDRESS>:8090
        at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1595:16) {
      errno: -111,
      code: 'ECONNREFUSED',
      syscall: 'connect',
      address: '<IP_ADDRESS>',
      port: 8090
    }
  }
}

Firstly I build the latest branch with ./build.sh. It was succesfully completed:
[+] Building 173.7s (16/16) FINISHED                                                                                docker:default
 => [internal] load .dockerignore                                                                                0.6s
 => => transferring context: 273B                                                                                0.0s
 => [internal] load build definition from Dockerfile                                                                                0.7s
 => => transferring dockerfile: 1.04kB                                                                                0.1s
 => [internal] load metadata for docker.io/library/node:20-slim                                                                                1.7s
 => [base 1/5] FROM docker.io/library/node:20-slim@sha256:2f451571a2e424b7aed654ca404331bf1ebf1ae3b4794bef0618d123d7a670e4                                 0.0s
 => [internal] load build context                                                                                0.5s
 => => transferring context: 5.25MB                                                                                0.3s
 => CACHED [base 2/5] RUN corepack enable                                                                                0.0s
 => CACHED [base 3/5] RUN apt-get update && apt-get install -y python3 python3-pip                                                                         0.0s
 => [base 4/5] COPY . /app                                                                                2.0s
 => [base 5/5] WORKDIR /app                                                                                1.2s
 => [prod-deps 1/1] RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile                                               66.0s
 => [build 1/2] RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile                                                          69.6s
 => [build 2/2] RUN pnpm run build                                                                                82.7s
 => [stage-3 1/3] COPY --from=prod-deps /app/node_modules /app/node_modules                                                                               13.0s
 => [stage-3 2/3] COPY --from=build /app/build /app/build                                                                                1.9s
 => [stage-3 3/3] COPY --from=build /app/package.json /app/package.json                                                                                1.3s
 => exporting to image                                                                                8.0s
 => => exporting layers                                                                                7.8s
 => => writing image sha256:12d7db5bf2970b6bf69db2b1bfb4c922f572c781bbd0778dce53c3be5d526f10                                                               0.1s
 => => naming to docker.io/goniszewski/grimoire:latest
 ```

 After I tried `docker-compose up -d` command and I get error
 ```
ahbh@ubuntu-server:/media/hub/data/srv/grimoire$ docker-compose up -d
Creating network "grimoire_default" with the default driver
Creating grimoire-pocketbase ... error

ERROR: for grimoire-pocketbase  Cannot start service pocketbase: error while creating mount source path '/media/hub/data/srv/grimoire/pb_data': chown /media/hub/data/srv/grimoire/pb_data: operation not permitted

ERROR: for pocketbase  Cannot start service pocketbase: error while creating mount source path '/media/hub/data/srv/grimoire/pb_data': chown /media/hub/data/srv/grimoire/pb_data: operation not permitted
ERROR: Encountered errors while bringing up the project.
```
tried the same second time and I get `done`
```
ahbh@ubuntu-server:/media/hub/data/srv/grimoire$ docker-compose up -d
Starting grimoire-pocketbase ... done
Creating grimoire            ... done
```

But when I try to access the URL, I get `500 Internal Error`

I'm trying to run it like my other 10 docker containers with Caddy for reverse-proxy and Tailscale. I have an entry in my Caddyfile :
```
grim.ahbh.top {
        reverse_proxy http://localhost:5173
}
```
My .env file:
```
# Set it if you're using external PocketBase installation (default: http://localhost:8090)
# Example: PUBLIC_POCKETBASE_URL=https://grimoire.mydomain.com:8090
PUBLIC_POCKETBASE_URL=http://localhost:8090
# RECOMMENDED: Change this to your email
ROOT_ADMIN_EMAIL=user@email
# RECOMMENDED: Use a secure password. Can be later changed in PocketBase's admin panel
ROOT_ADMIN_PASSWORD=password
# Set this to your domain name (default: http://localhost:5173)
# Example: ORIGIN=grimoire.mydomain.com
ORIGIN=http://localhost:5173
# Set this to true if you're using HTTPS (default: false)
# Example: PUBLIC_HTTPS_ONLY=true
PUBLIC_HTTPS_ONLY=false
# Change to the port you want the app to listen on (default: 5173)
# Example: PORT=80
PORT=5173
# Set this to true if you want to disable public signups (default: false)
PUBLIC_SIGNUP_DISABLED=false
```

Am I doing something wrong? Because every other service I'm running is working with those steps.


Minio integration (as integrations destination)

Is your feature request related to a problem? Please describe.
When wanting to use self-hosted Minio S3 object storage, an error is returned:

An error occurred (403) when calling the HeadBucket operation: Forbidden

Describe the solution you'd like
In
https://github.com/mage-ai/mage-ai/blob/69bf7b39bee9826553969de0a4456d6cbe2f008e/mage_integrations/mage_integrations/destinations/amazon_s3/__init__.py#L15-L46
there is also support for Boto's endpoint_url, as introduced for data loaders in #2748
    @property
    def endpoint(self) -> str:
        return self.config.get('endpoint', 'https://sts.amazonaws.com')

         return boto3.client(
             's3',
             aws_access_key_id=self.config.get('aws_access_key_id'),
             aws_secret_access_key=self.config.get('aws_secret_access_key'),
             config=config,
             region_name=self.region,
+            endpoint_url=self.endpoint,
        )

This should then also be documented in
https://github.com/mage-ai/mage-ai/blob/master/mage_integrations/mage_integrations/destinations/amazon_s3/README.md

Wow, that went fast! Much appreciated.


Notebook 7 fails due to missing pip dependency

When attempting to run notebook 7 (Ep7: GPU and Hardware Acceleration, Part 1) in a Google Colab, runing the first cell (the pip install step) fails. Specifically, the first cell goes as follows:
!python3 -m  pip install mlc-ai-nightly-cu110 -f https://mlc.ai/wheels

However, this leads to the following error:
Looking in links: https://mlc.ai/wheels
ERROR: Could not find a version that satisfies the requirement mlc-ai-nightly-cu110 (from versions: none)
ERROR: No matching distribution found for mlc-ai-nightly-cu110

I met the same problem, have you solved it

No I didn't. Though I also did not spend much time on it.

the wheels site no longer host cuda110, plz install mlc-ai-nightly-cu117


I am getting an issue defaults undefined

TypeError: Cannot read property 'defaults' of undefined
at ScrollBarsDirective.link (directives/scrollBar/scrollbars.js:31:52)

Hi Naveen,
Thanks for the star and issue. Do you have more details about how I can reproduce that error? If possible, could you create a github repo, possibly by cloning this repo and modifying the basic demo1.html under the gh-pages branch http://iominh.github.io/ng-scrollbars/demo1.html
Minh

When i am going from one view to another view and when i  get back again am getting
TypeError: Cannot read property 'defaults' of undefined
at ScrollBarsDirective.link (scrollBar/scrollbars.js:31:52)
at angular.js:7154:44
at nodeLinkFn (angular.js:6752:13)
at compositeLinkFn (angular/angular.js:6146:13)
at compositeLinkFn (angular/angular.js:6149:13)
at compositeLinkFn (angular/angular.js:6149:13)
at compositeLinkFn (angular/angular.js:6149:13)
at compositeLinkFn (angular/angular.js:6149:13)
at compositeLinkFn (angular/angular.js:6149:13)
at compositeLinkFn (angular/angular.js:6149:13)

Hi iominh,
Can you update me regarding that issue

@naveen305 check in console whether jQuery.mCustomScrollbar is defined. Check whether you are reloading jQuery while changing view, which may have removed mCustomScrollbar initialization.

Thanks Thillai for the reply and my apologies naveen305 for the slow reply -- I've been very busy lately. I'm still not entirely sure how to reproduce the error but from looking at the stack trace, it indeed looks like either jQuery.mCustomScrollbar is undefined (did you include it?) or the ScrollBars module is not defined (did you inject it into your app -- see step 2 in the readme.md)
However, these errors would appear on the initial page load, so I'm not sure why it only appears when you "change views"

My advice would be to include the non-minified version of ng-scrollbars (scrollbars.js) and set a breakpoint to determine why it's undefined in the first view but undefined when you change to another view

I'm experiencing same bug. I found out that the problem is at:
        // TODO: can we do this without jquery?
        $.mCustomScrollbar.defaults.scrollButtons = this.defaults.scrollButtons;

Where "mCustomScrollbar" is undefined.
I've got loaded angular, css and jquery.mCustomScrollbar.concat.min.js and jquery so I dont know what could be the problem. :(

Hi Mastanka,
Does it load at all or only on a view change? Do the default demos work for you?
Do you mind creating a jsfiddle, codepen, or maybe forking this repo on the gh-pages branch and creating a demo html page (see the demo1.html, demo3.html as examples) with your particular includes (like Angular version, jQuery version, etc)?
I'm not sure how to reproduce this issue so any help you can provide would be great.
Thanks!

Hi iominh,
I've created plunker:
http://plnkr.co/edit/Kk3oaIYpExqeCa1tECmq?p=preview
As you can see div where I'm using directive wont load. (if you delete depenci on ngScrollbars, angular load correctly). But on the second div, where there is pure jQuery scrollbars are loaded correctly. :( It looks like the same problem, but I'm not shure, since I'm new with js/plunker so I cant debug solution any further...
M.

Mastanka,
Thanks for putting together that Plunkr. I noticed that your link to ng-scrollbars was set to https://rawgit.com/iominh/ng-scrollbars/blob/src/scrollbars.js, which is invalid? Try https://rawgit.com/iominh/ng-scrollbars/0.0.5/src/scrollbars.js instead.
Also it didn't look like you were setting up ng-scrollbars correctly. See the following Plunkr: http://plnkr.co/edit/bejvwwzgsDe58HQ1DWjo?p=preview
It shows how to set up your controller and ng-scrollbars on the elements. So check out the html, css, and js
Minh

Hi all, I'm going to close this ticket, please let me know if you encounter any issues and I'll re-open

+1

I got the same problem. It was because I loaded jquery twice and the app scripts were in the middle. My solution was simplely moving all the app scripts to the bottom.

I had the similar issue. It was caused because of loading order in the script tag.  I had the below script which was loaded before ng-scrollbars which caused the issue.

Now Iam loading this script after ng-scrollbars have loaded.


Touch when reordering

Ran into an issue today with acts_as_list and fragment caching. I have a list of items that are expensive to render, so they are each being fragment cached. These items also can be reordered by drag-and-drop. However, only the item that was being dragged got its updated_at timestamp touched, so only that item's fragment cache got busted. The remaining items had stale caches with stale position information, even though this information had been updated in the db. Thus, this PR.
What do you think?

Test failure appears to be a red herring. Same failure is currently on master... looks like something related to JRuby dependencies.

@botandrose tests have been fixed in master. Could you please rebase?
Thanks.

:green_heart:

Ping

Can you rebase this @botandrose? I'll look at merging it then.

Rebased.

Thanks for this :) Just a couple of questions.

Does it work to just chain .touch before the .update_all. Seems like this would make it easier to support different Rails versions as .touch's functionality has changed over time.
Failing that, you could have a custom method that executes .update_all for both the change required, plus updating any necessary timestamp columns. I like this less than option 1.

Hi @brendon, thank you for taking a look at this!

Unfortunately, ActiveRecord does not support calling touch on a relation... only on single ActiveRecord instances. Hence my manual touch_all implementation.
To make sure I understand, you are suggesting that we take the approach I propose in this PR, with the alteration that we merge the touch_all and the update_all into one db query?

Ah I see. Yes that's a pain hey?
I don't think it'd hurt to introduce a new method (update_all_with_touch) or something like that that will accept the standard arguments for update_all and adds the touch functionality. It would certainly be dryer :)

Ha, no big deal, I just wanted to make sure I understood what you were suggesting. I definitely agree with the overall sentiment. The duplication in this diff makes me cringe! I didn't want to go too deep into refactoring before knowing whether or not this was likely to be accepted. I'll give it a shot and report back!

@brendon Okay, I've got something working here that I'm reasonably happy with. I've extracted most of the duplication to private methods, and the update is now performed with a single db query. WDYT?

Thanks for that, that's a lot cleaner.
Sorry to be a pain, but I've had another thought. I think we can avoid passing that scope around. Can you create class methods that can be chained off the scope? This is the same way update_all works already. What do you think?

@brendon Ah, great idea! That's the API I wanted, but for some reason I was thinking that we'd have to monkeypatch AR::Relation in order to get it... I totally forgot about class methods being magically extended onto AR::Relation.
This is a definite improvement overall, I think, but there is getting to be quite a bit of indirection, and instantiating a new record just to get the timestamp fields is rather unfortunate. What do you think? Good to merge, or do you think we can improve this further?

Getting close! :) I've just added some notes above. I'm keen to cache as much as we can, and also make this as flexible as possible so that it doesn't confuse anyone in the future. Let me know what you think.

Thanks @botandrose. Regarding caching the columns, I think that should be done up top when acts_as_list is called. We're about to merge some biggish changes to the structure of that method for Rails 5 compatibility, so perhaps wait until we've done that, then rebase and add those cached values. I'd imagine it'd be something along the lines of how we cache position_column:
def position_column
    '#{configuration[:column]}'
end

Breaking it down further, timestamp_attributes_for_update_in_model is basically just doing this:
[:updated_at, :updated_on].select { |c| self.class.column_names.include?(c.to_s) }

We could do this in acts_as_list as:
def timestamp_attributes
    [:updated_at, :updated_on].select { |c| column_names.include?(c.to_s) }
end

Also frustratingly this 'instance' method is only calling a class method:
def current_time_from_proper_timezone
    self.class.default_timezone == :utc ? Time.now.utc : Time.now
end

So you can just call: default_timezone == :utc ? Time.now.utc : Time.now and now you don't need to initialise a new object!
I hope that helps :D

@brendon I think that is a perfectly reasonable approach, except for one big issue. What happens when one is using acts_as_list with an existing database schema that does not conform to Rails conventions?
Just like it is possible to override the position column in acts_as_list, its possible to override the default timestamp columns in ActiveRecord proper. The official way to do this in AR is to override #timestamp_attributes_for_create and #timestamp_attributes_for_update with the desired column names. I've had to do this myself several times over the years when hooking up AR to an existing db.
We agree that this .update_all_with_touch method should attempt to behave as close to the actual touch method as possible, and I think this is another instance of that.

Ah I see, yes that does make a difference. I did wonder about how one was supposed to override the columns. It's a shame that these are instance methods and not class methods. I can't think of much of a use case for having these fields being configurable per instance of a class. I'll look into this later today and get back to you.

@brendon Yeah, I definitely agree that they should have been class methods. I can imagine a scenario in which a record is a state machine, and in some states, some fields are touched, and in other states, some other fields are touched, but its pretty contrived. ¯\_(ツ)_/¯

@brendon Did you have a chance to take another look at this? Anything I can do to help get this merged?

Hey sorry about this. I had it marked to take a look but have been under the pump the last couple of weeks :)
Just had a couple of notes about the code, otherwise, you're right, we shouldn't get more specific than the Rails code on this one. I didn't consider people overriding those methods. We're doing some work elsewhere regarding using quoted_table_name to prefix the reference to the position column. I think we need to do this here too.
Also, I've just updated master with Rails 5 support. Can you rebase?

No worries! Thanks for taking a look! I've rebased, and added a new commit that adds the fully qualified table names where possible. TIL you can't supply the table name for the left-hand side of an assignment (at least not in SQLite) which I guess makes sense, since you're already specifying the table name in the beginning of the UPDATE clause.

Ok, I think this one is ready to go. I did just have one small thought about the name of the methods. Do you think touch_and_decrement_all or decrement_and_touch_all would be a better name? The with reminds me of method chaining.

Yeah, the naming does evoke alias_method_chain.
Now that I think about it, what do you think about just .decrement_all and .increment_all? Ultimately, this PR is addressing the fact that it was surprising that the touching wasn't happening, when one would expect it to. With that in mind, why even bother to point out the touching in the name of those two methods?
.update_all_with_touch still sounds right to me, to differentiate from AR.update_all.
Thoughts?

I agree, let's run with that :) Let me know once you've updated it and I'll merge it.

Done, and :green_heart:. Thanks very much for your time on this, @brendon !

Excellent! :) Thank you very much for working so hard on this :) It's dedicated contributors like yourself that make these projects run smoothly. I'll probably release a gem in the near future once we've closed off a few more issues.


[Rancher2] Rancher 2.5.9 - backup / restore causes two default-tokens in each namespace

Request Summary:

It seems to be a known issue in Rancher 2.5.x, that after restoring from the Rancher backup operator, it creates duplicated default-tokens secrets in restored namespaces.
Therefore I would suggest adding a section to the installation page warning about that fact and pointing the users to either upgrade to Rancher 2.6.4. or run a workaround script.
Maybe similar to how its done here: https://rancher.com/docs/rancher/v2.6/en/backups/restoring-rancher/#known-issues
Details:

Some example issues from rancher/rancher

https://github.com/rancher/backup-restore-operator/issues/165

PR https://github.com/rancher/docs/pull/4253

Closing. See comment from PR #4253


externalIds Type

When I receive a response from a track search, using this wonderful library, I get a response that includes the optional property of externalIds, which I'd like to use in the app I'm working on.
What I'm seeing is something like this:  externalIds: Optional(["isrc": "GBCBR2100039"])
When I've accessed this property before, via the standard Spotify Web API (not yours), the property is an ExternalIdObject, as referenced here, with possible keys of: ean, isrc, & upc.
I'm wondering if the response provided by this library is intentionally returning an array, rather than an object.
The term externalIds is somewhat misleading, as it seems to suggest a list of things, rather than a mapping of things, so maybe this is the reason.
Regardless, I can work with the response as is, but I thought I'd bring the above to your attention and see if you have any feedback.
Thanks.

Actually, that's a Dictionary, not an array... 😕

I'm wondering if the response provided by this library is intentionally returning an array, rather than an object.

The type of Track.externalIds is [String : String]?, not an array. This matches the structure of the JSON payload.

The term externalIds is somewhat misleading, as it seems to suggest a list of things, rather than a mapping of things

This is the term chosen by Spotify, not me. To me the term, does not specifically imply an array or a mapping. You can easily inspect the declared type of a property in Swift, so I don't understand what the issue is.

Thanks for the clarification, @Peter-Schorn
Frankly, I'm used to working in JS, so the Dictionary threw me.  My bad.
I can use the following to get at the data:
track.externalIds?["isrc"]


Uptime Kuma Pushover testing successful.

Once a week on a Saturday, I get a push notification to my Pushover notification with content "Uptime Kuma Pushover testing successful.".

Where is this configured?
How can I turn it off?

Thanks
Matt

It is a bug of current Pushover implementation
It should send you the certificate expiration notification, but it sent a wrong message to you.

What certificate is the warning for?
How can I stop this? I've been woken up every Saturday at 6am!

1.11.1 should show the correct msg now.

@louislam is there any way to turn it off or change the time? It keeps coming at 6am every Saturday and wakes me up.

@louislam is there any way to turn it off or change the time? It keeps coming at 6am every Saturday and wakes me up.

Sorry about that, but there is no option to turn this off.
What kind of cert are you using? Because the warning will be sent only if it closes to be expired.

I'm using let's encrypt on Nginx reverse proxy. It would be great if the user could either:
a) turn this feature off
b) choose the time that the notification comes
c) choose which notification type to use (so I could do a low priority one that doesn't wake me up)


Remove td-agent-ruby.conf

It was used for prelink.
We don't use it since 66116d55088b4c055579d2ea3b326b48f0cc4d24.

Thanks for your review!


As an admin I need to be able find and delete locations easily from the admin area

Allow the admin to paste a name or a latitude or longitude value for the location into a search box so that location can be found and deleted.

Now we are using osm data that can't be done by delete on our side


Better way to retrieve the database connection.

TL;DR uses Illuminate\Support\Facades\DB to create the connection

Reason
The reason behind this pr is when using dynamic databases like on multi-tenant applications often the database name is null and set dynamically depending on the request so getting the db connection out of the container like:
** $this->container['db']->connection($config['connection'] ?? null) ** will always set the connection using the wrong configuration and no the dynamic one

How to Reproduce
on the config/database.php
create a connection like this:
'connections' => [
    'tenant' => [
        'driver' => 'mysql',
        'url' => env('DATABASE_URL'),
        'host' => env('DB_HOST', '<IP_ADDRESS>'),
        'port' => env('DB_PORT', '3306'),
        'database' => null,
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'prefix_indexes' => true,
        'strict' => true,
        'engine' => null,
        'options' => extension_loaded('pdo_mysql') ? array_filter([
            PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            'sticky' => false,
        ]) : [],
    ],

in order to simulate a multi-tenant app change the config files in any route, request, etc like this:
config([
'database.connections.tenant.database' => 'any_database',
]);
DB::purge('tenant');
Finally use Laravel pennant as you like and you will notice an error:
** Call to a member function prepare() on null **

Hi @casanasvictor, thank you for the suggestion and the PR. I've created a PR with a slightly different approach https://github.com/laravel/pennant/pull/43


Improve instructions for Sync/Lockwise

Related to https://github.com/louisabraham/ffpass/issues/28

Thanks!


phpseclib "phpinfo" is causing execution to fail on Managed VMs

The phpseclib library used to validate ID Tokens is calling phpinfo to determine the OpenSSL version. Because phpinfo is blacklisted by suhosin, it will not run without special whitelisting in the Managed VMs environment.
Relevant Error:
# cat  /var/log/app_engine/suhosin.log
Feb  8 19:45:53 [18] ALERT - function within blacklist called: phpinfo() (attacker '<IP_ADDRESS>', file '/app/vendor/google/apiclient/src/Goo
gle/AccessToken/Verify.php', line 78)
Feb  8 19:46:14 [18] ALERT - function within blacklist called: phpinfo() (attacker '<IP_ADDRESS>', file '/app/vendor/google/apiclient/src/Goo
gle/AccessToken/Verify.php', line 78)

fix: https://github.com/google/google-api-php-client/pull/848

@bshaffer Great, can you create a release tag on that repo so that we can have them?

@tmatsuo we should just update google-api-php-client to a @dev tag for now. RC tags on that library should not be a result of this repo's requirements :-/

fixed - updating to stable version is tracked in #98


OpenXR Errors After First Tutorial Page

Tested versions

Reproducible in: 4.2.1.stable.mono

System information
Godot v4.2.1.stable.mono - Windows 10.0.19045 - Vulkan (Forward+) - dedicated NVIDIA GeForce GTX 1080 Ti (NVIDIA; <IP_ADDRESS>33) - Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz (8 Threads)
Issue description
Just going trough the basic tutorial I run into 3 errors in the output and the debugger output.
From output when project is opened:
modules/openxr/editor/openxr_interaction_profile_editor.cpp:260 - Parameter "profile_def" is null.
From debugger output after game is run:
E 0:00:02:0890   is_top_level_path_supported: OpenXR: Unsupported toplevel path /user/eyes_ext
  <C++ Error>    Condition "required_extension == "unsupported"" is true. Returning: false
  <C++ Source>   modules/openxr/openxr_api.cpp:200 @ is_top_level_path_supported()

E 0:00:02:0918   is_interaction_profile_supported: OpenXR: Unsupported interaction profile /interaction_profiles/ext/eye_gaze_interaction
  <C++ Error>    Condition "required_extension == "unsupported"" is true. Returning: false
  <C++ Source>   modules/openxr/openxr_api.cpp:220 @ is_interaction_profile_supported()

Suspect that last one has something to do with me using a Valve Index and that even though the Eye Gaze Interaction setting is false in the project settings it tries to do something with it.
The errors don't prevent the game from running, but its not nice to run into any error messages while doing your first steps.
Steps to reproduce
If you close and open the project again you will be presented with the first error. This one disappears after you run the game but shows up again if you close and open the project.
After every run you will encounter the 2 errors in the debugger ouput.
Minimal reproduction project (MRP)
Go trough https://docs.godotengine.org/en/stable/tutorials/xr/setting_up_xr.html C# version and run the game using a Valve Index.

I'm having the exact same problem. All three errors.
I'm on v4.3.dev.custom_build [d76c1d0e5]
Windows 10
NVIDIA GeForce GTX 1060 3GB
Intel(R) Core(TM) i5-10600KF CPU @ 4.10GHz

Had the same issue and found this, now its fixed.

same but with the basic version of godot (gdscript only) and mobile instead of forward+

Same issue on 4.2.1 Windows with Quest 3.

This issue is definitely caused by something added in #82614

CC @godotengine/xr

This is being tracked by https://github.com/GodotVR/godot_openxr_vendors/issues/86

This is being caused by the eye gaze interaction profile being added to the default action map, while the eye gaze interaction extension is not enabled and we're thus missing the meta data that drives the action map editor.
We need to change this logic so the eye gaze interaction extension is instantiated but not activated so the right information is recorded in the meta data table. We've been a little overzealous in completely removing extensions when not enabled in the settings.
There is also a question whether it makes sense to add the eye gaze interaction to the default action map. I think we should remove that bit.
In the mean while the workaround to get rid of these errors is to edit the action map, remove the defunct entry, and save it.

For all monkeys out there like me:
When you delete the sub_resource you also need to delete the corresponding resource in [resource] section, using the [sub_resource] id to find it, from the array (resources loads subresource).
tip for proceeding:

search for gaze in openxr_action_map.tres
the found sub_resource containing gaze has id
search for id

if id is found in [resource]

delete the entry from [resource] array

after that delete [sub_resources] containing gaze

this is not fool prove, but I hope it helps
btw: this took days for me to find (after upgrading from 4.1.2 to 4.2.1 my XR broke) maybe linking it to the tutorial would be a good idea? My old project still doesn't work and has no such eye gazing feature in the tres file. Should I open a new issue for this? Don't know how to perform a reproducabilty with Version changes, with this one.
Much love for your work :heart:


Easyapache overwrites pagespeed.conf

Hi,
Thanks for this great plugin.
Easyapache will overwrite pagespeed.conf, deleting all custom rules. Is there a simple fix for this?

,
Before you run /scripts/easyapache in the future, create these files:
vi /scripts/preeasyapache

Place the following content into the file:
#!/bin/bash
if [ -e "/usr/local/apache/conf/pagespeed.conf" ]; then
   cp -prf /usr/local/apache/conf/pagespeed.conf /root/
fi

Next, create this file
vi /scripts/posteasyapache

Place the following content into the file:
if [ -e " /usr/local/apache/conf/pagespeed.conf" ]; then
   mv /usr/local/apache/conf/pagespeed.conf /usr/local/apache/conf/pagespeed.conf _easy
   cp -prf /root/pagespeed.conf /usr/local/apache/conf/pagespeed.conf
   /etc/init.d/httpd restart
fi

The first script copies the existing pagespeed config file to /root/ at the beginning of the Apache build. The second script copies pagespeed.conf back into   /usr/local/apache/conf/ folder, and restarts Apache at the end of the build.
After saving these files, ensure they can execute:
chmod +x /scripts/preeasyapache
chmod +x /scripts/posteasyapache

cPanel EasyApache Hooks: https://documentation.cpanel.net/display/EA/Script+Hooks


Not enough delineation between SKU's\ Tiers

Could you guys please separate the different the different sku's -at least into sections. SQL Database and SQL MI are not the same and do not have exactly the same HA features. Its difficult to accurately identify the differences between tiers for SQL MI because everything is mixed together with SQLDB.
Identifying the differences between tiers should be a quick exercise but on this page you need to go through the whole document (reading things that are not relevant), just to make sure that you dont miss some random note about a feature not being supported for a particular sku.

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

ID: e2d07885-d3f0-11d9-0a1f-aa9025d60d49
Version Independent ID: 551bdeb1-fc7c-5d7f-4e58-a558d3a39df7
Content: High availability - Azure SQL Database and SQL Managed Instance
Content Source: azure-sql/database/high-availability-sla.md
Service: sql-db-mi
Sub-service: high-availability
GitHub Login: @rajeshsetlem
Microsoft Alias: rsetlem

Hi @wapayne69 Thanks for reaching out, We will Investigate and update you shortly.

@rajeshsetlem can you please provide your inputs

Hi @wapayne69, Thanks for the feedback to separate out content for SQL DB & SQL MI. We will work on a plan and execute it. Please stay tuned.

#please-close


REST API doc upload, python requests issue.

Uploading pdf to inbox via REST api and python requests does not trigger the worker. I get a response 200, and The document appears in the inbox, and the log shows STARTED OCR  for each page. but it never actually COMPLETED OCR.
Drag and drop into inbox works fine.
This is with gunicorn and nginx, ..if i run the server through manage.py runserver, python request triggers the worker normally.
........
But, if I use CURL to upload the pdf, it works fine and triggers the worker as it should .
Any thoughts?
thanks.
Info:

OS :Ubuntu 20.04 LTS
Browser  n/a
Database [PostgreSQL 12.1]
Papermerge Version1.5.3

Unrelated:
is there any possibility to upload meta data with the document down the line? Or any suggestions to where to look in the code regarding accessing or editing the metadata in python?

@jjkonway

is there any possibility to upload meta data with the document down the line?

This feature will be implemented in later versions, when more sophisticated REST API will be introduced.

Or any suggestions to where to look in the code regarding accessing or editing the metadata in python?

Sure, metadata is added/edited in this view. As comments mention there, metadata is stored per Page (that is when end user saves metadata on the document, that metadata is actually saved on the first page of respective document).

Nevermind! it was my code. workng now thanks


fix the opts.opts reference when using the option manager from a command

not sure this needs fixing anymore


Use Reward Retention Period as pruning delay

Fixes iotaledger/iota-core#638 and iotaledger/iota-core#629.

The hardcoded pruning delay is replaced by a function which captures an API provider to determine the retention period for the to-be-pruned epoch.
The rewards calculation will now only fetch epochs which are retained according to the new protocol parameter. Without this, a node that has pruning disabled would retain rewards indefinitely and such a node would under certain circumstances disagree on the reward amount with a node that has automatic pruning enabled.

As long as we don't change the retention period parameter across protocol upgrades, this is fine and we can keep the user-managed prune action through the management API. However, if we were to increase the retention period, whether a node has automatic pruning or user-managed pruning would matter.

At some new epoch X, where the increased retention period becomes active through a new protocol version, an automatically-pruned node would have pruned older rewards already, while a user-managed node would potentially still have them and hence, nodes would disagree on the calculated rewards. At this point we would have to disable user-managed pruning to make all nodes agree. This can be left as a future problem or can be fixed by handing responsibility of the reward storage completely to the protocol.

It's not entirely clear to me whether the approach in this PR would work when we would increase or decrease the retention period in a protocol upgrade. I'm not sure if we should take care of this now or if and when we want to upgrade this particular parameter.

It's not entirely clear to me whether the approach in this PR would work when we would increase or decrease the retention period in a protocol upgrade. I'm not sure if we should take care of this now or if and when we want to upgrade this particular parameter.

I think decreasing should be ok as all nodes have the required information. Increasing would be tricky but I think we should worry about that if and when we want to do that.


Embed CAB files

Embed cabinet files in the shared framework MSI
Addresses #13875

@johnbeisner

No, this is only for 3.1 for the new installer we're working on. Embedding the CABs avoid hash conflicts when downloading payloads. Because the CAB files have some limitations, we don't modify their names during builds so when a previous copy is cached, the bundle won't recache, but then run into a hash conflict once it starts to install because the file it has and the file it needs are different between two releases. This effectively just avoids having to add additional logic in the engine to force cache cabinets


Close response body if downloadItem errors out

Close response body if downloadItem errors out

Does this PR need a docs update or release note?

[ ] :white_check_mark: Yes, it's included
[ ] :clock1: Yes, but in a later PR
[x] :no_entry: No

Type of change

[ ] :sunflower: Feature
[x] :bug: Bugfix
[ ] :world_map: Documentation
[ ] :robot: Supportability/Tests
[ ] :computer: CI/Deployment
[ ] :broom: Tech Debt/Cleanup

Test Plan

[ ] :muscle: Manual
[ ] :zap: Unit test
[x] :green_heart: E2E

are there locations in Exchange where we need to do the same?

are there locations in Exchange where we need to do the same?

Potentially - haven't got there yet but will follow up


[experimental]: minor fix to open assistants code

@bengladwell Do you have time to add the test? I can do later if not.

Thanks @isahers1 - I'm in the weeds on some things at the moment. I was hoping to get to this late in the week. If it would be better to get to this sooner, then yeah, that would be great if you would take it.

@bengladwell Later in the week is fine, am busy with some other stuff rn so will take a look again start of next week.


Attentively verify the runtime config generated by HF

Runtime config generated by the script convert_fork_config.sh does an invasive manipulation with fork config.
In particular it:

Omits certain fields from the ledger entries
Includes proof and genesis sections as they are

Before using it in HF, we need to review fields of the generated runtime config to ensure that we include all of the fields that need to be taken and don't have any fields that shouldn't have been taken.

Targeted by PR #15082