Add back segment-by-segment undo while drawing with the Pen tool

Good first issue: this is likely a medium-difficulty item suitable for savvy new contributors who have likely already done a few other PRs, but probably isn't best as a first PR or for those with limited programming experience

We used to be able to draw with the Pen tool, and as you kept drawing more segments, you could use CtrlZ to undo each individual segment one at a time. This functionality was lost during a refactor PR from @adamgerhant as part of the limitations imposed by that refactor. This functionality will now need to be reimplemented within the current state of the code, and can be referenced in the build link below for its prior functionality.
It was removed between these two builds, which would be a helpful date range if it becomes necessary to bisect which commit this regression was introduced in.

2024-08-27: Pen tool undo worked as desired in this production deploy: https://110d2ce1.graphite-editor.pages.dev/
2024-09-15: The regression happened no later than this date, since that's when I wrote a comment about its removal

Here's a video showing the prior behavior from that build link when actively drawing segments with the Pen tool:
https://github.com/user-attachments/assets/da1bb6cc-dae9-4bda-963e-96bbaef5b157
The current behavior in master just ignores any attempts to undo while actively drawing segments.

Hey i want to work on this issue

Hey I am also checking this issue, here is what I found.
document_message_handler never executes further than this, because the Transaction is still in progress (Started).
It was introduced here
https://github.com/GraphiteEditor/Graphite/commit/9adc640f1958b7cafc3904284e7572e58cc6a489#diff-d0256cd9c455b2a08acd3c82b1646943bf7574fe77cdd0e85c2543c65ef7e2ddR1042-R1046
How should this be handled, in the current state, is there a reason for this to be checking if the transaction is Finished? If not, removing it will fix the issue.

@adamgerhant may be able to answer that for you.

@ayushpatil2122 @vrrashkov sounds good, thanks for both attempting this, it'll be nice to have fixed. Both of you are welcome and encouraged to continue on your own attempts and we'll land whichever offers the more suitable solution first (a bit of friendly competition to keep you both motivated), and as redundancy in case one of you doesn't figure it out (which is pretty common among new contributors). Good luck to both of you!

This is a remnant of an bug fix for https://github.com/GraphiteEditor/Graphite/issues/559. (relevant conversation). The issue is that if you can undo the creation of the layer you are currently working on then your next point will reference a layer that doesn't exist, which crashes. The ideal solution is a bit more nuanced, since it should only be possible to undo up to when the layer was created, but not past that. This could mean two different types of transactions, where the points added would be "sub-transactions", which can be undone while the entire drawing transaction is occurring.
I thought it was easiest to prevent the whole issue by just not allowing undo's while a transaction is happening, which I still think should be the case.

@adamgerhant the desired behavior would allow for undoing past the point when the layer was initially created, all the way back until the creation of the document. But upon transitioning from segment-by-segment undoing to before the layer was created, the Pen tool would need to update its status so that it doesn't believe it's currently editing any layers. (That's the case whenever you decide to switch to the Pen tool without having any particular layers selected and without beginning to draw yet.)

Sure, that is another solution. But that is significantly more fragile since then it is the responsibility of all tools or other features that could possibly reference an invalid state to perform that check/action on every undo. Having a dedicated "sub-transaction" would enforce this and prevent a tool ever being in an invalid state, although the limitation being that you cannot undo all the way back to document creation while a transaction is occurring. I think restricting undoing to be limited to the context of your current operation is a reasonable restriction and greatly improves stability/prevents crashes.

I think I disagree about which approach is more fragile and simple. In my view, it's very definitely the responsibility of the tools to make sure they are working with valid state even if the document teleports itself into a totally different configuration/state like by loading a different point in history out from under the user. If the tools aren't robust to that happening, that's the fault of the tools. Basically, I don't think it's too much to ask of the Pen tool for it to guarantee its own robustness if the layer it's working on suddenly gets deleted and its layer reference stops existing. It should know how to handle that situation and switch itself back into its ready state.
I get where you're coming from with your idea of "sub-transactions" but I'm not convinced the current situation (or any other potential situation we haven't thought of yet) warrants the complexity involved in maintaining that concept which augments the current simple history system with additional facets of complexity.
From a product design and UX angle, I'm also not okay to compromise (long-term, at least) on the inconsistency of the undo history confusingly hitting a "dead end" until the user switches away from the Pen tool and then back to the Pen tool again so they can go further back in history. No tool should block undo from working, and it shouldn't ever be needed to switch away from a tool and go right back to it again to sidestep such a history blockage. That would be confusing and painful to users.
With these arguments in mind, would you be able to offer any hints for implementors of this issue about how to solve the root of the problem that the Pen tool encounters regarding the crash? Thanks :)

Hm so from what I understand while using the Pen Tool if we undo everything plus the layer we are working on it should produce some sort of an issue/crash? Here is a video me trying to reproduce this having removed the lines where it was preventing the Undo before Finished.
Also I see that #559 is mentioning the "Freehand tool" but this tool does not have the option to "Undo while drawing" so I could not reproduce the issue with that tool as well. How to reproduce the exact issue for that crash?
https://github.com/user-attachments/assets/c41bd4a5-709f-4be7-9b43-20872f963ae4

Also I see that https://github.com/GraphiteEditor/Graphite/issues/559 is mentioning the "Freehand tool" but this tool does not have the option to "Undo while drawing" so I could not reproduce the issue with that tool as well. How to reproduce the exact issue for that crash?

That should be unrelated because it should never be valid to undo while dragging (i.e. the user's mouse button is down and hasn't been released yet).

I think your take is reasonable. In that case all that is necessary is to remove the early return, and then remember to add special logic for tools/features when undoing to prevent the invalid state.

Should this be separate issues, this one only removing the early return and for missing undo handlings separate issue as well? Also are there any particular tools currently that would be causing problems?

@vrrashkov I don't think any parts described in this issue need to be split out into a separate issue.

Okay, just if you can let me know which  tools/features need to have the Undo added to them while that tool is not Finished, because not really sure which ones need that right now.

Just the Pen tool.

But the pen tool works from what i see, and if you check the video as well not sure what to fix there really

Do you mean it works with your fix applied?

No i mean i just removed the early return statement and it works, i dont see a crash. As you can see I can undo and even undo the layer I am working on and it does not crash. And based on what @adamgerhant mentioned (which is already done for the Pen tool) I think this is already implemented ?

The pen tool already has the custom logic when undoing to deselect the layer. In general it will be important to test cases when you have created something, start a transaction, undo to delete that thing, then finish the transaction. For example maybe creating a node, dragging it, undoing so that the node is deleted, then releasing the drag might reference the non existent node and crash. We essentially just introduced memory unsafety into the editor by allowing mutable references to be deleted while they are used/borrowed.

Ok @vrrashkov, it sounds like the PR will just be the removal of the early return paired with some extensive QA testing to find ways to break it, such as by the means Adam pointed out.


Fix incompatibility to new API v2

fixes #36

Be aware: this might require a fresh installation, since I had to change some of the model classes

Nice work! 🥳 But I would wait a little with merging because there is an open issue for the api to change the location codes.

The change works, @Draculente 🎉


fixing bad package update

PR #534 has broken our CI. Will do a hard reset on master back to the last passing PR #533 and this code change includes everything after the offending commit (i.e. #535 and #536).

Closing in favour of #539


OpenVPN

Does anyone have a guide for getting OpenVPN set up after root? Ive looked over the Gentoo guides for doing this, but none of the commands used are available inside of the Gentoo installed on the puck.  emerge doesn't exist, I can't scp files over to copy the OpenVPN files if I wanted to manually install.  No text editors show up for modifying the ssh_config.  Im still a bit of a noob with bash, so maybe Im missing something.  Would like to get a VPN client up and running on my main puck.  Any help would be appreciated.

I think I finally achieved root, but now I also need to know how to install a VPN.

Any update on a guide to install openvpn?


Failed to convert page to image

My Code :
var fs = require('fs');
var PDFImage = require("pdf-image").PDFImage;
var pdfImage = new PDFImage("test.pdf");
pdfImage.convertPage(0).then(function (imagePath) {
// 0-th page (first page) of the slide.pdf is available as slide-0.png
fs.existsSync("Public/slide-0.png") // => true
}).catch((err)=>{
console.log(err)
});
Error MSG :
{ message: 'Failed to convert page to image',
error:
{ Error: Command failed: convert "test.pdf[0]" "test-0.png"
Invalid Parameter - "test-0.png"
at ChildProcess.exithandler (child_process.js:275:12)
at emitTwo (events.js:126:13)
at ChildProcess.emit (events.js:214:7)
at maybeClose (internal/child_process.js:925:16)
at Socket.stream.socket.on (internal/child_process.js:346:11)
at emitOne (events.js:116:13)
at Socket.emit (events.js:211:7)
at Pipe._handle.close [as _onclose] (net.js:554:12)
 killed: false,
 code: 4,
 signal: null,
 cmd: 'convert "test.pdf[0]" "test-0.png"' },

stdout: '',
stderr: 'Invalid Parameter - "test-0.png"\r\n' }

Hey @siamraj,
You have this problem because the convert process didn't worked.
The error message might can be optimised here but primarily you have to fix the convert command.
Try this on your command line - this will fail:
convert "test.pdf[1]" "test-0.png"
You already found: #30
Try to install pdf-poppler or poppler with brew as described in readme


Database navigator - see table size

It would be great to have the table size in terms of number of rows inside the database navigator, similar to the table size in GB that we now have (see PR #8705) -

We can show both table size and number of rows or make it configurable.

thanks for the suggestion

I completely agree! I have been using pgAdmin III for a long time and just recently started using DBeaver.
With pgAdmin, you can right-click on a table and select "Count" to get the accurate number of rows in the rigtht-side panel. With DBeaver, you have to View Table, switch to [Properties] tab, go to "Statistics". Then, right-click and choose "Read row count...".
It would be great if the Database Navigator can display the number of rows (estimated first is OK but should provide "Count row" option in the right-click menu). Also, it seems there is a bug that does not display the table size when "Custom" view is selected (the table size is displayed when "Simple" view is selected).
DBeaver <IP_ADDRESS>104042040

I was researching exactly how to show the row count (instead of table size), in the database navigator, and I came across this open issue.
Would be great to see this feature in development.


Update minimal supported Node.js version [ Prisma 4 ]

Part of the Prisma 4 effort: Node.js 12.x support is dropped, minimal supported Node.js version is now 14.x
We need to update:

https://www.prisma.io/docs/reference/system-requirements

Thanks @aqrln !


Documentation Says Bot flag will always be "1" but when testing it is coming as '0.0'

Issue in ./help/datastreams/bot-detection.md
We are testing the bot detection feature in AEP, documentation says if it matches any bot rules it will return "1" but when testing it, it is returning "0.0" could you please confirm what is the right value?

Thank you for submitting this issue. We will review the documentation and make the necessary updates as quickly as possible. Tracking internally in PLAT-194350.

If the bot rules are matched, the scoring will be 1. If it returns 0, then the rules are not matched. We've validated this with the engineering team and the documentation is correct. If you need further assistance in investigating this issue, please contact the Adobe support team. Closing this issue.


Add optional publish step after analysis

This enhancement will be used to automatically send a Dependency-Check XML report to ThreadFix. A generic publishing framework should be created to support any number of systems to publish to, Sonar for example.

This is better handled by the ThreadFix CLI or ThreadFix Jenkins plugin. Closing.


slack recipe depends on stages

given common config
$ deployer.phar init -t Common
Successfully created: deploy.php
$ composer require --dev deployer/recipes

the slack notifier throws exception:

  [RuntimeException]
  Configuration parameter `stages` does not exists.

Yes, it's better to check if it is exists. I want to refactor slack recipe a long ago.

do you have design doc how you want to refactor it?

No, i think create more useful and readable messages. Maybe have a few different styles of alerts.


Improve resilience of secret file management. Fixes #2093

@alrod,
Thanks for having already signed the Contribution License Agreement. Your agreement was validated by .NET Foundation. We will now review your pull request.
Thanks,
.NET Foundation Pull Request Bot

@alrod , just wanted to make sure. This hasn't been iterated on since the last round of feedback. Do you have changes that have not yet been pushed?


support for atmega32u4

This pull requests adds support for atmega32u4 and uses Timer1 to time score waits.
Atmega32u4 timers:
Timer0 8-bit
Timer1 16-bit
Timer2 phased out
Timer3 16-bit
Timer4 10-bit high speed (unsupported in this pull request)

Good changes, thanks. I wish there were an easier way to deal with the various Arduino flavors.
Would you mind updating the internal change logs in those files?
Thanks,
Len

I updated the internal change logs. The code is already awesome considering I was able to understand it easily and make these modifications. One idea is to make the compiler ifdefs be timer oriented.

Thanks!


Catch up with upstream changes in netcdftime

Fix #165
PS: This fix  is already in cf_units :wink:

Fix #165

I guess you mean #1654?

PS: This fix is already in cf_units :wink:

As SciTools/cf_units#16

Does this work with old and new versions of netcdftime?

I guess you mean #1654?

Oops :flushed:

Does this work with old and new versions of netcdftime?

Yes: http://nbviewer.ipython.org/gist/ocefpaf/bb9c3d4b114c4033de10

Does this work with old and new versions of netcdftime?

Yes: http://nbviewer.ipython.org/gist/ocefpaf/bb9c3d4b114c4033de10

Super. :smile:
:+1:

Thank you @ocefpaf!


Create stcva.txt

https://www.stchristophers.com/
https://www.stchristophers.com/academics/technology/technology-department-staff

Our school sets up g-suite accounts for all of the students. The email address is<EMAIL_ADDRESS>even though the website is www.stchristophers.com
If you need any more information, just let me know. Thanks so much!

@slyon2 Pull request merged. Thank you!


Multiple copies of ScriptHolder and AssetBundleManager

The LoadAssets.cs script on the ScriptHolder gameobject and the AssetBundleManager script on the AssetBundlerManager game object both have DontDestroyOnLoad, so they're never destroyed, but a new one is created every time the scene is loaded..
There are a few ways to handle this.
One is the way the SoundManager does it
//Check if there is already an instance of SoundManager
		if (instance == null)
			//if not, set it to this.
			instance = this;
		//If instance already exists:
		else if (instance != this)
			//Destroy this, this enforces our singleton pattern so there can only be one instance of SoundManager.
			Destroy (gameObject);

The other way is to manually destroy the object upon leaving the scene.
The last, and what I propose we do is to simply remove "DontDestroyOnLoad" from both those scripts, but I don't know if there's any reason why we would want to keep them from being destroyed.
I know that the menu scripts on ScriptHolder would break using the first method, because their references would no longer exist.
@jctwood

What the heck is going on with line breaks in comments?  Do I need to add line breaks in markdown or something?

You need to leave two empty lines otherwise the Markdown renderer gobbles them up

Ah wow I did not realise this script had don't destroy on load. I see no
reason it would need it.
On Tue, 2 May 2017 at 07:08, Stewart Martin<EMAIL_ADDRESS>wrote:

The LoadAssets.cs script on the ScriptHolder gameobject and the
AssetBundleManager script on the AssetBundlerManager game object both have
DontDestroyOnLoad, so they're never destroyed, but a new one is created
every time the scene is loaded..
There are a few ways to handle this.
One is the way the SoundManager does it
//Check if there is already an instance of SoundManager if (instance ==
null) //if not, set it to this. instance = this; //If instance already
exists: else if (instance != this) //Destroy this, this enforces our
singleton pattern so there can only be one instance of SoundManager.
Destroy (gameObject);
The other way is to manually destroy the object upon leaving the scene.
The last, and what I propose we do is to simply remove "DontDestroyOnLoad"
from both those scripts, but I don't know if there's any reason why we
would want to keep them from being destroyed.
I know that the menu scripts on ScriptHolder would break using the first
method, because their references would no longer exist.
@jctwood https://github.com/jctwood
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Double-Fine-Game-Club/pongball/issues/180, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AHxweikjHGbbLNnfBglf7GxhATCG_D2Fks5r1shKgaJpZM4NNvt4
.


Mark draggable tile borders in UI

Spyder UI tiles are resizable by dragging the borders with the mouse.
But there's no way to find where the draggable borders are other than "probing" with the mouse and watching for the mouse cursor to change (on Windows, anyway).
I suggest adding lines to the UI (perhaps in some distinctive thickness or color or pattern), marking the draggable borders, making them quicker to find.

Spyder version:  3.3.6
Operating System name/version:  Windows 10 x64

Spyder version: 3.3.6

Spyder 3 is not supported anymore. These kind of borders are shown in our dark theme, available in Spyder 4:

Ah, thanks. Spyder 4 isn't in WinPython yet, I think.

Sorry to hear that.


Frequent SSL Errors after long times of inactivity

It seems that not using any API calls for about 10 minutes causes SSL Errors ("Could not establish SSL/TLS tunnel" or something similar to that)
Error occurs under Win10/Net4.5 reproducibly.
The program in question reduces activity by invoking Thread.Sleep with values between 2 and 60 minutes. Waiting times over 10 minutes seem to cause this issue. Waiting for up to 60 minutes and then reinitializing the Reddit Class does not solve this issue, only restarting the program completely does.
Disabling SSL/TLS Certificate Checks by overriding request.ServerCertificationValidationCallback or ServicePointManager.ServerCertificateValidationCallback does not solve the issue. This override is functional as returning always false for a certification check disabled API calls completely.
Issue is present in the newest 3 commits, though I didn't check if any earlier commits have the same issue.
A workaround is to regularly make calls to the API, though this is not 100% reliable.

Do the errors happen if you are not going over ssl?
How are you creating your ssl connection?
'de648' made some changes in this area. The interesting case seems to be https without an accesstoken.

I tested it on multiple computers, only few had this particular problem.
The issue seems to come when Reddit responds with a 401 Unauthorized
once the access token expires and SSL is enabled.
Not using SSL seems to solve that issue and I'm using aad8878, the
newest build available.

I doubt this is actually connected to the (fairly) recent commit. I'm using a build from over a year ago which worked fine but recently I've started getting this issue out of nowhere.


feat(games): added score display

In a hurry, I hadn't tested these changes, so I relied on your overview.

There were some fixes needed, I'm closing this PR and opening a new one: https://github.com/tf2pickup-org/client/pull/2415

Why did you have to open a new PR?

Why did you have to open a new PR?

Because I can't modify branch of PR that I didn't open.


python binding init engine need  arguments

Describe the bug
I followed the doc to build python binding from source .But when I use the follow code:
engine = f3d.engine()
and console print
 TypeError: __init__(): incompatible constructor arguments. The following argument types are supported:     1. f3d.engine(arg0: f3d.window.Type)
Additional context
Maybe the part about python binding of document need to be updated

Yes indeed, I forgot to add the default value.
Try engine = f3d.engine(f3d.window.NATIVE)

Let's keep this issue open. We should fix the doc now, and modify the bindings to have a default value before f3d 2.0

The doc is wrong indeed, this should be:
engine = f3d.engine(f3d.window.NATIVE)
unless there is a way to specify a a default val with pybind11 @Meakk

Thanks for replying.If I want to use f3d.window.EXTERNAL to embed f3d windows into other applications like a qt(pyqt) application,Are there any more detailed instructions on what I should do?

Take a look at this test: https://github.com/f3d-app/f3d/blob/master/library/testing/TestSDKExternalWindowQT.cxx
It's in C++ but the Python API is very similar.

You don't have to enable BUILD_TESTING.

Does it mean that I need to customize mouse and keyboard events to make it interatable?

Yes, there is no f3d::interactor with an external window. You need to react to mouse/keyboard in QT and modify f3d::camera accordingly.

You don't have to enable BUILD_TESTING.

Does it mean that I need to customize mouse and keyboard events to make it interatable?

Yes, there is no f3d::interactor with an external window. You need to react to mouse/keyboard in QT and modify f3d::camera accordingly.

Finally I use QWidget: : createWindowContainer to accommodate f3d window, let me to avoid the custom so many mouse and keyboard events, It's worked pretty well in my application so farbut I don't know if will have any side effects. Anyway, this seems to be beyond F3D's responsibility. Thank you for your patience

It may be a good idea to provide interaction for external window. Can you open an issue so we can track that ?


Bug59948 html formated render

Hi,
In "View Results Tree" we can check the HTML source code with Text render.
When the source code is not formated, it could be complex to read the source code.
I propose to use Jsoup (already use in JMeter)to format/sane the HTML source code in a new render called HTML formated
Antonio

Hello,
Thanks for PR.
Wouldn't it be more user friendly to add a checkbox on the existing HTML viewer to format or not the HTML ?
Regards
@ubikloadpack

Yes you're correct, I meant Text renderer but in that case formatting does not really make sense as it can be anything (not only html)

+1 for commiting it


Weston: no-input backported

Use upstream version of no-input patch that allows Weston to run without an input device.

please submit the backport to oe-core so we don't have to carry it at all

@mrchapp fwiw, OE-core doesn't use github pullrequests, you need to send the patch(es) to the mailinglist<EMAIL_ADDRESS>

@koenkooi, thanks for the heads up! I'll close this pull-request and will submit a new one for weston-init alone.


Complete snippet of working code

Hello,
have you got an - even small - snippet of working code for a classification ?
I have some problems understanding all the code, for example I do not see what "target" I should give to the model..
Thank you in advance !

Thanks for the comment @EzrielS and thanks for being interested in the code. I'm sorry that it isn't too clear. I'll try to put up a short working example to make it clearer.


Restrict Editing to Only Community Managers

In our ideal use case scenario, only a community manager would be able to edit the introduction page so a bunch of random, non-associated, people can't edit the page with whatever they want. In order to accomplish this, first there must be a login to Augur fully implemented in order to distinguish who is a community manager for the project.

So far we haven't made any progress on working on this issue as there are other pressing issues that need to be addressed first before we divert our attentions to this.

I put won't fix label, since we are going to insert markdown editor that users are able to use it.

something like this login page will need to implemented in the future if this issue is to be implemented. Currently we don't have the ability to sort out who is a community manager and who isn't because this part isn't done.


Add isSelectingDateOne to props and set isSelectingDate1 according to…

… it.
See #28
Add isSelectingDateOne to props and set isSelectingDate1 according to it.
No deprecate any API.
Second Commit: color days on hover in range already BEFORE the dateTwo is selected.
Third commit:
On allDatesSelected let the user change the dateOne and dateTwo like airbnb datepicker

Not sure about this one. I appreciate the effort, but I clearly write on the github page to please submit a discussion issue before starting doing any PRs. Just to avoid having people waste their time.
"But before you start hacking away, please first create an issue where you explain what it is that you think needs to be done and why, so we can agree that the changes makes sense."
Commit 1: Could you justify why you need this?
Commit 2: On Airbnb.com (and http://airbnb.io/react-dates), the days are not colored until you have selected both dates
Commit 3: Same here, on Airbnb.com, the user can't change the second date, only first date. And this is already the logic of the datepicker.

Hi,
Thank you for your reply
Commit 1,
In https://www.airbnb.com/a (this is their landing page from google adwords) when you select the check in, the check out is automatically open and when you click on
one date in the check out this is for the second date directly since you already choose the date on in the check in.
I need the same behavior.
Commit 2:

Regarding commit 2. This is how it looks for me (Windows, latest Chrome):

What browser/OS are you using?

OK weird..
I am using Chrome on Ubuntu


Plot benchmarks from multiple AI versions

It would be very useful to have plots that compare the AI of different version (i.e. Dummy AI, Basic AI, Advanced AI, etc.). My idea would be to use a bar chart to show the different categories (evaluation, best move gen, legal move gen, etc.) on the horizontal axis and the time used on the vertical axis. The categories would have all the bars from the different versions.

It would also be great to have line diagrams that show the time of certain categories across all versions, but that can be done later.

Added them in a manual way in #57.


Convert more transforms to the new API

More dogfooding!

@gradle/kotlin-dsl: Can you have a look at the converted transforms related to Kotlin? That would be the parameter names transform and the distribution sources transform.


API billing

If I use OpenAI's API, don't I have to pay for the API? If so, the limit shouldn't be relevant, but I'm wondering if I'm misunderstanding.

Yes, you have to pay for OpenAI API. "Limitless" in description is oppositely referred to free ChatGPT web chat, which has hourly/daily limits.


Add a cron job

This aims to exercise dogfooding regularly, as NVD results are always subject to change.

Just an FYI, scheduled jobs on github actions seem a bit sporadic .. for another project, this job is supposed to run every hour:

Good to know!
I hope it at least runs once in a while :)


Incorrect casing on change_users and full_users for windows_share causes access to be revoked and regranted every run.

Description
When using the windows_share resource, if the full_users, change_users or read_users differ only by case, Chef will revoke access for all users to the Windows share and then re-grant access.
The username casing returned by the underlying PowerShell (Get-SmbShareAccess) is dependent on the casing that a user signed into Windows server as, so Chef revoking and re-granting access does not change the casing of the username returned on the next run. As Windows is case insensitive for usernames, the casing of the usernames cannot be guaranteed.
In our case, this caused a Windows service to lose access to a share every 15 minutes, meaning that any process involving the share that took longer than 15 minutes would fail. To resolve this we ensured that the windows service was running with a user account in uppercase and ensured chef expected the username in uppercase. This necessitated a restart of Windows Server for the casing change to be reflected by Get-SmbShareAccess.
Chef Version
chef-client 14.2.0
Platform Version

Windows Server 2016
Windows Server 2019

Replication Case

Run a windows service as a user account in lowercase.
Create a chef recipe which includes a windows_share resource. Specify the windows service user in uppercase.
Run the cookbook multiple times. Access will be revoked then re-granted each time.

Client Output
DEBUG: Running 'Get-SmbShareAccess -Name "example" | Select-Object AccountName,AccessControlType,AccessRight | ConvertTo-Json' to determine share permissions state'
DEBUG: The Get-SmbShareAccess results were [{"AccountName":  "AD\\USERNAME","AccessControlType":  0,"AccessRight":  1}]
DEBUG: The current resource was not nil so we will update an existing share
DEBUG: Running 'Set-SmbShare -Name 'example' -Description 'Example Share' -Force' to update the share
DEBUG: Running 'Revoke-SmbShareAccess -Name 'example' -AccountName "AD\USERNAME"" -Force' to revoke share permissions
DEBUG: Running 'Grant-SmbShareAccess -Name 'example' -AccountName "AD\username"" -Force -AccessRight full' to update the share permissions

Stacktrace
No error is thrown.

Probably needs replication on Chef 16 since I know we've fixed idempotency issues in some resource due to incorrect casing.

Probably needs replication on Chef 16 since I know we've fixed idempotency issues in some resource due to incorrect casing.

Potentially this PR for username casing with Windows Services: https://github.com/chef/chef/pull/8981 ? Regardless will attempt to replicate in Chef 16.

Probably needs replication on Chef 16 since I know we've fixed idempotency issues in some resource due to incorrect casing.

I have recreated this in Chef 16.3.45, same issue as 14.2.0.


Runners not starting

I'm experiencing the same issue(s) as https://github.com/shapehq/tartelet/issues/63. I'm creating a new issue since that other issue is closed.
Problem:
Starting a runner (Virtual Machine --> Start) doesn't start a runner.
Debug logs:
The debug log from Tartelet mentions this error:
2024-02-29T12:44:16Z [VirtualMachineResourcesCopier] [Info] Failed removing resources at file:///Users/anne/Library/Application%20Support/dk.shape.Tartelet/runner-1/.Trashes: “.Trashes” couldn’t be removed because you don’t have permission to access it.
2024-02-29T12:44:16Z [VirtualMachineResourcesCopier] [Info] Failed copying resources from file:///Users/anne/Library/Application%20Support/dk.shape.Tartelet/Virtual%20Machine%20Resources/.Trashes/ to file:///Users/anne/Library/Application%20Support/dk.shape.Tartelet/runner-1/.Trashes: “.Trashes” couldn’t be copied because you don’t have permission to access “runner-1”.
2024-02-29T12:44:16Z [EphemeralVirtualMachineFactory] [Error] Failed making ephemeral virtual machine as resources could not be created: “.Trashes” couldn’t be copied because you don’t have permission to access “runner-1”.
2024-02-29T12:44:16Z [VirtualMachineFleetLive] [Error] Could not create virtual machine named runner-1: “.Trashes” couldn’t be copied because you don’t have permission to access “runner-1”.

When I delete this Trashes directory manually via sudo rm -rf ~/Library/Application\ Support/dk.shape.Tartelet/Virtual\ Machine\ Resources/.Trashes a runner is started, but exits immediately with the following error:

Steps to reproduce:
I was able to reproduce it with the normal installation steps as described in the wiki: https://github.com/shapehq/tartelet/wiki/Configuring-Tartelet.
Using a newer IPSW file did not make a difference.
# old
tart create runner --disk-size=120 --from-ipsw=https://updates.cdn-apple.com/2023WinterFCS/fullrestores/032-48346/EFF99C1E-C408-4E7A-A448-12E1468AF06C/UniversalMac_13.2.1_22D68_Restore.ipsw

# new
tart create runner --disk-size=120 --from-ipsw=https://updates.cdn-apple.com/2024WinterFCS/fullrestores/052-40770/72916BCC-D357-422D-A4A2-EF1DEDF6968C/UniversalMac_14.3.1_23D60_Restore.ipsw

Other details:
Tartelet shows an 'Unknown' VM

These files exist in my Virtual Machine Resources:

Used versions
Tartelet: Version 0.7.1 (1)
Tart: 2.6.1

Tartelet did work in the past without any issues! I'm not sure when it exactly broke, but I did upgrade MacOS (to 14.3.1 (23D60)) and maybe updated Tart via a brew upgrade.
Does somebody have an idea what is wrong?

+1 I'm getting the same error

@annuh can you try with this?:
sudo rm -rf ~/Library/Application Support/dk.shape.Tartelet/Virtual Machine Resources/.Trashes

@annuh can you try with this?:
sudo rm -rf ~/Library/Application Support/dk.shape.Tartelet/Virtual Machine Resources/.Trashes

Yes, running that command results in the 2nd issue where runners start but stop right away.

Me too, I've update the macOS to 14.4 and the error still exists

This might be due to underlying bug in VirtioFS support in macOS itself. See https://github.com/cirruslabs/tart/issues/567 for more details.
By mentions of "My Shared Files" I assume Tartlet mounts scripts and executes them. Maybe it's worth to change the logic to SSH in and execute the them directly. We use this technique in our managed GitHub Actions integration.

Just wanted to give everyone an update on this. I'm working on a version of Tartelet that addresses this issue by using SSH to transfer files between the host machine and the virtual machines, as recommended by @fkorotkov.
We've just started testing this internally at Shape and I hope we can release a version of Tartelet that uses this very soon.
You can find the changes on the feature/ssh branch. I'm also using this as an opportunity to heavily clean up the codebase to make Tartelet easier to maintain going forward.

@annuh Sorry for not responding in the other thread.
For me, the issue was that the files from Virtual Machine Resources were copied to the runner's root directory so I changed the directory in the start.command file like this.
I had to make a self-signed app to use on our machines for this.
I also had issues starting the runners when I had entered edit mode and then shutting it down. It seemed to be an issue with permissions (?) so I made the Virtual Machine Resources directory myself and copied the startup files there. Then the runners started automatically.

@antonnyman Normally, I'd very much love a PR for fixes like this, but I'm so close to having moved Tartelet away from using the resources folder altogether that I don't think it makes sense. I have good faith that copying the resources from the host machine to the virtual machine will be more reliable than what we've been using up until now 😊

Looking forward to the new changes! 🙂
I could provide the built app for those who are stuck in this thread, as a temporary workaround, but only if you think it is a good idea @simonbs.
Great work with Tartelet and thanks for open-sourcing it!

Maybe @simonbs could generate a version only with the @antonnyman workaround, while working on the final one

Tartelet 0.8.0 is now available and fixes this issue. Please consult the release notes for details on migrating from 0.7.1 to 0.8.0. Specifically, this involves:

Enabling Remote Login on the virtual machine.
Configuring Tartelet with the credentials needed to SSH into the virtual machine. If you've followed the guide on configuring Tartelet the username will be runner and the password will be runner too.

I consider this issue to be addressed now and will close it.
Admittedly, 0.8.0 brings some bigger changes to Tartelet. Please don't hesitate to open a new issue if you encounter any challenges with these changes 🙏

The loop keeps happening in my machine. I don't see anything unusual in the logs.

I found this:

I suppose I can make a build with the com.apple.security.automation.apple-events entitlement, but I'm unsure why not having it would be a problem on your machine and not on everyone else's 🤔

Thanks, if you want you can send me here the version to test, before releasing a new version.

@simonbs with the latest version 8.0.2 still happens 🙁

It is not attempting to connect to the vm over ssh. I just changed the password to nonsense and there are no failures in the logs (i was seeing them earlier when I had things misconfigured)

I've tracked my issue to not getting an IP address. At this point I am unsure if it is related to the original issue this was created for. Or even if the issue is with tartelet or tart.

My issue was due to running out of addresses. All were leased to old vms. Deleting /var/db/dhcpd_leases resolved my issue.

My issue was due to running out of addresses. All were leased to old vms. Deleting /var/db/dhcpd_leases resolved my issue.

This is a known limitation that's documented in Tart's FAQ. This can happen for several reasons, one of them being that your runner has had a lot of short jobs in a short amount of time or that Tartelet has failed to start the virtual machine for other reasons, causing it to be shut down, and restarted, ultimately exhausting the pool.

This is a known limitation that's documented in Tart's FAQ. This can happen for several reasons, one of them being that your runner has had a lot of short jobs in a short amount of time or that Tartelet has failed to start the virtual machine for other reasons, causing it to be shut down, and restarted, ultimately exhausting the pool.

Awesome. Thanks for the info.


Set default DISTRO, disable prelink

Setting the default DISTRO to include systemd means that the rvi-sota-client
starts by default, making it work 'out of the box'.  image-prelink seems to be
broken at the moment, so I've disabled it by default.

Since non-systemd boot isn't fully working, we'll remove support for it instead


Script don't download with and after lectures with /

Hey @r0oth3x49
I just noticed something.... There are a few courses, where has a / on lectures name, the script can't download the lecture with the /  neither any lecture after it, even if I use the flag '--lecture-start' to get the lecture after it..
It returns this error

Traceback (most recent call last):
File "udemy-dl.py", line 1441, in  main()
File "udemy-dl.py", line 1437, in main udemy.course_download(path=options.output, quality=options.quality, unsafe=options.unsafe)
File "udemy-dl.py", line 510, in course_download lecture.dump(filepath=filepath, unsafe=unsafe)
File "F:\Udemy\udemy-dl\udemy_shared.py", line 253, in dump with open(filename, 'wb') as f:
FileNotFoundError: [Errno 2] No such file or directory:

Cheers =)

@tofanelli please do follow Issue Reporting guideline i cannot fix the issue until unless i don't understand what the root cause is and what is the url etc...

@r0oth3x49 do you have an email address where I can send you more data?

@tofanelli yeah. you can email me


Resolution for @types/react for checkout ui ext

Fixes #290.
Problem
When creating a new typescript react checkout extension, all react components show typescript errors.
Solution
Added a specific resolution to the package.json template for "@types/react": "17.0.2". This will only be added if the extension being created is Typescript + React.

Bonus: added a test for this as well.

🎩Tophatting

Clone both this repo and shopify-cli.
In shopify-cli-extensions checkout this patch.
In shopify-cli-extensions run make boostrap.
In shopify-cli run bundle install followed by rake extensions:symlink (this will link your local shopify-cli-extensions build.
Run alias shopifyls="SHOPIFY_CLI_DEVELOPMENT=1 SSL_VERIFY_NONE=1 $HOME/src/github.com/Shopify/shopify-cli/bin/shopify"
Run shopifyls extension create and select typescript-react as the option for a checkout extension.
Open the code and verify you have no typescript errors.

Worth noting this may not be a critical priority for editions if we do not ship with Typescript template support.

Yeah we can close this now (😢)


[Re-genesis] Prepare a migration plan for the on-chain Morse state

Objective
Prepare a migration strategy from Morse to Shannon related to on-chain state.
Origin Document

As an example, here is the Morse mainnet genesis file
During re-genesis, we will need a genesis.json file that reflects all the on-chain in Morse at some specified block height

Goals

Finding a stakeholder that can extra and provide all the on-chain data we need (e.g. POKTscan)
Beginning to build out the utilities needed to automatically generate this file in the future

Deliverables

[ ] Identify an owner (via a proposal or other) who can build a tool to extract on-chain data
[ ] Deliver a prototype (e.g. a script) that provides genesis.json file for Shannon reflecting the on-chain for Morse

Non-goals / Non-deliverables

Figuring out a plan for the wPOKT migration
Selecting the exact block height at which we migrate the data
Providing the exact .json file that'll be used for the migration
Deciding which key schemes will be used for Shannon (use placeholders)
Deciding which address schemes/mappings will be used for Shannon (use the best approximation)

General deliverables

[ ] Comments: Add/update TODOs and comments alongside the source code so it is easier to follow.
[ ] Testing: Add new tests (unit and/or E2E) to the test suite.
[ ] Makefile: Add new targets to the Makefile to make the new functionality easier to use.
[ ] Documentation: Update architectural or development READMEs; use mermaid diagrams where appropriate.

Creator: @Olshansk
Co-Owners: @RossiNYC

I have created a discussion [1] related to the different types of keys we could use in Shannon.
[1] https://github.com/pokt-network/poktroll/discussions/215

Will work on publishing this publically: https://www.notion.so/buildwithgrove/Morse-Shannon-Migration-89d45a8acbaf4f4dbed607f6a8d40609?pvs=4


Client joining position

Clients joining the game are placed at 0,0,0. They should be placed in the same position as the host player instead.

Fixed as of e23ea43a67fcf767659999bc7a61ec061b5d1f68


Add a flatMapPublisher method/s to Traversables

This should allow a Traversable to be flatMapped into a series of reactive-streams publishers.
There should be a default flatMapPublisher and an overloaded equivalent.
For the default
  <R> Traversable<R> flatMapPublisher(Function<? super T, ? extends Publisher<? extends R>> mapper);

A subscriber that generates a new Traversable should subscribe to the returned publishers (up to a predetermined max concurrent publishers at any given time).
The subscriber will synchronously request elements, but will support asynchronous publication by the publishers (as well as synchronous arrival)..
Overloaded
signature
     <R> Traversable<R> flatMapPublisher(Function<? super T, ? extends Publisher<? extends R>> mapper, FlatMapConfig config);

A subscriber that generates a new Traversable should subscribe to the returned publishers (up to a configured max concurrent publishers at any given time).
The subscriber may synchronously request elements, but will support asynchronous publication by the publishers (as well as synchronous arrival). Or the subscriber may asynchronously request elements, and will support asynchronous publication by the publishers (as well as synchronous arrival).
FlatMapConfig should contain static configuration methods such as
   FlatMapConfig.asyncSubcribe(int max)
   FlatMapConfig.syncSubcribe(int max)

A similar flatMap function could be added to Value where the first (or nth / last value) emitted is used to populate the returned value.

Implemented in https://github.com/aol/cyclops-react/pull/141


Suggestion

Hi, thanks for this, really helpful.
What might be a good idea is to add another variable to set the address range for the network.
I re-created everything because the next step I use to create my clusters in Rancher, where on a different network. It seems that the cloud controller only works if you do it in the same project as where the rancher network is defined.
In module-cluster-init/resources_hetzner.tf
I changed <IP_ADDRESS>/12 -> <IP_ADDRESS>/16 and <IP_ADDRESS>/24 -> <IP_ADDRESS>/24

Hi, thanks for your reply. I have marked this as a good first issue. Maybe i find the time to add this. It is not a lot of work.

Hi, thanks for your reply. I have marked this as a good first issue. Maybe i find the time to add this. It is not a lot of work.

Thx!
Note that there is also an update of the node driver: https://github.com/JonasProgrammer/docker-machine-driver-hetzner/releases/download/3.2.0/docker-machine-driver-hetzner_3.2.0_linux_amd64.tar.gz

Thx!
Note that there is also an update of the node driver: https://github.com/JonasProgrammer/docker-machine-driver-hetzner/releases/download/3.2.0/docker-machine-driver-hetzner_3.2.0_linux_amd64.tar.gz


Fix lint errors.  Update grunt test task to do lint on test.

This is a maintenance PR.

Fix all outstanding "errors" jshint was finding.
Update Gruntfile.js to make jshint task a prerequisite when doing test.
Remove unused global options object from Gruntfile.js jshint task.

Looks good -- I'm just waiting for the tests to pass before merging.


train_setr_evp_cod.yaml

Hello, first of all, thank you very much for your work. I would like to ask about train_setr_evp_cod.yaml, where is this file？I can't find it

Hello! The yaml file is used for defining the datasets and other relavent settings, please change to your own yaml file or change to the dict /demo.yaml we provided for training.


Questions about using TikTok Research API

I encountered some weird things when using the TikTok Research API (note: I wrote the python code myself, not using your repo). I would like to ask if you have also encountered these problems to make sure that these problems are not due to possible bugs of my code.

I can’t collect liked videos (regardless of whether the user has set it to private or not).
I can only collect reposted videos of some users (I’m not sure if the reason for this is because some users have set it to private).
For user followers, I only seem to be able to get no more than 5,000 followers of one user using API, even though some users actually has tens of thousands of followers (as seen on the user profile).

Looking forward to your answer, thank you!

I've developed code similar to this repository for use with the TikTok Research API and have encountered issues akin to those mentioned by @scn0901, particularly with point 3. Despite being able to view all followers on the TikTok platform, the API only returns data for followers with public accounts. Additionally, I am unable to retrieve more than approximately 4,000 to 5,000 followers for accounts that have millions of followers. I have attempted to contact the TikTok developer team for clarification but have not yet received a response.
Any assistance or further information on this matter would be greatly appreciated.

Hi there! Sorry for taking so much time to respond.

Collecting liked videos: I tested the function again, and it works in my library. I used data from accounts that appear in this list: https://www.tiktok.com/discover/best-accounts-for-liked-videos?lang=de-DE.

It's hard to help you without code snippets, but my guess is that this might be due to an error in your code, or perhaps because the person you are trying to collect data from is outside the US or EU?

Irregularities in search queries: I also discovered irregularities regarding the complete collection of all videos of one user, or for example, when collecting videos by hashtag. The FAQ of TikTok states: The User info API only retrieves data for an individual user, so we use online data. However, the video query API searches for the full dataset, so we use archived data instead of the current online data. New videos take up to 48 hours to be added to the search engine, and statistics such as view count and follower count can take up to 10 days to update.

This might be one reason for the issue, but I agree with you that there might also be different problems on the API side.

Only 5000 followers: That's also true for me, and I will add that to the documentation of ResearchTikPy. I don't know the reason behind this, but you actually only get the same amount of followers if you try to scrape the followers. If you scroll through the followers list of one account, you will encounter that the pagination stops at approximately 5000 followers. Apparently, TikTok currently only lists up to 5000 followers in their endpoint. I will open a ticket on this matter on the TikTok Support site.

Sorry if this was not that helpful, but I could try to help you if you send me your code regarding 1..

That's okay, your answer was very detailed and helpful! Especially 3 "Only 5000 followers", which helped me determine that the problem was not due to my code.
Regarding my problem 1, this is the main function I wrote. Some of the global variables mentioned in this function have been initialized before use. If you need any more details, please let me know and I'll be happy to provide them.
def get_liked_videos_of_a_user(username: str, cursor: int = int(time.time())) -> Tuple[List, int]:
    '''
    Given a username and its start cursor, retrieve all liked videos of that user, as well as -1 (means completed) or last_cursor (means the last cursor for recovery).

    Parameters:
    username: str, the name of the user.
    cursor: int = int(time.time()), start cursor.

    Return:
    result: Tuple[List, int], containing (liked_videos_all, -1 / last_cursor).
                liked_videos_all: List, all data collected, ['forbidden'] if API access is forbidden.
                -1 / last_cursor: int, -1 means completed, last_cursor means the last cursor for recovery.
    '''

    global ACCESS_TOKEN  # set global variable ACCESS_TOKEN, as we may need to refresh it if it is invalid

    global CURRENT_REQUESTS_COUNT, CURRENT_TRIALS_COUNT  # set global variable CURRENT_REQUESTS_COUNT, CURRENT_TRIALS_COUNT, we need them to count current requests and trials

    CURRENT_TRIALS_COUNT = 0  # CURRENT_TRIALS_COUNT reset to 0 at the beginning

    liked_videos_all = []  # use liked_videos_all to store all data collected

    last_cursor = cursor  # set the initial value of last_cursor

    url = 'https://open.tiktokapis.com/v2/research/user/liked_videos/?fields=id,create_time,username,region_code,video_description,music_id,like_count,comment_count,share_count,view_count,hashtag_names'

    headers = {
        'Authorization': f'Bearer {ACCESS_TOKEN}',
    }

    request_body = {
        'username': username,
        'max_count': 100,
        'cursor': last_cursor,
    }

    while True:  # continue sending request to retrieve all liked videos of that user

        # if CURRENT_REQUESTS_COUNT reach MAX_REQUESTS_COUNT, return liked_videos_all with last_cursor
        if CURRENT_REQUESTS_COUNT == MAX_REQUESTS_COUNT:
            return (liked_videos_all, last_cursor)

        # if CURRENT_TRIALS_COUNT reach MAX_TRIALS_COUNT, return liked_videos_all with -1
        if CURRENT_TRIALS_COUNT == MAX_TRIALS_COUNT:
            return (liked_videos_all, -1)

        try:  # try to get json response
            CURRENT_REQUESTS_COUNT += 1  # CURRENT_REQUESTS_COUNT add 1
            CURRENT_TRIALS_COUNT += 1  # CURRENT_TRIALS_COUNT add 1
            response = requests.post(url, headers=headers, json=request_body)  # send request and get response
            response_json = response.json()  # change response into json format
        except:  # if fails, sleep 60 seconds, then continue
            time.sleep(60)
            continue

        # process json response according to different situations

        # situation 1 (ok): CURRENT_TRIALS_COUNT reset to 0, collect current data (if fails, return liked_videos_all with -1), update last cursor
        if response_json['error']['code'] == 'ok':
            CURRENT_TRIALS_COUNT = 0
            try:
                liked_videos_all.extend(response_json['data']['user_liked_videos'])
            except:
                return (liked_videos_all, -1)
            last_cursor = response_json['data']['cursor']
            # situation 1-1 (has more data): set new cursor in request_body
            if response_json['data']['has_more']:
                request_body['cursor'] = last_cursor
            # situation 1-2 (has no more data): return liked_videos_all with -1
            else:
                return (liked_videos_all, -1)

        # situation 2 (access_token_invalid): refresh access token and headers
        elif response_json['error']['code'] == 'access_token_invalid':
            ACCESS_TOKEN = get_client_access_token(CLIENT_KEY, CLIENT_SECRET)
            headers['Authorization'] = f'Bearer {ACCESS_TOKEN}'

        # situation 3 (daily_quota_limit_exceeded): return liked_videos_all with last_cursor
        elif response_json['error']['code'] == 'daily_quota_limit_exceeded':
            return (liked_videos_all, last_cursor)

        # situation 4 (forbidden): return ['forbidden'] with -1
        elif response_json['error']['code'] == 'forbidden':
            return (['forbidden'], -1)

        # situation 5 (other errors): sleep 60 seconds
        else:
            time.sleep(60)

Regarding my problem 2, I would like to ask if you have used API to collect user reposted videos (although ResearchTikPy doesn't have this feature now)? If so, have you found that when you use the API to query user reposted videos, no data is returned for many users (I have observed that this situation accounts for more than 80% of my total users)? And do you know the reason for this situation (for example: users have not actually reposted, users set it to private, API restriction, etc.)?
What I know is: When I checked the homepages of some users, I found that for most of the users whose reposted videos were not returned by the API, their homepages (in mobile APP) did not even have a "repost" tab, and a small number of users had a "repost" tab but no reposted videos in it. "repost" seems to be a new feature of TikTok, and some users on TikTok have discussed inconsistency in their use (such as the comments of https://www.tiktok.com/@metricoolapp/video/7197228299922263302), but I cannot find anything related to "repost" in TikTok help center.
Thank you for your help.


⚠ Node - us-a6008253.yalaso.top has degraded performance

In eb80053, Node - us-a6008253.yalaso.top (http://us-a6008253.yalaso.top/api/v1/ping) experienced degraded performance:

HTTP code: 200
Response time: 10535 ms

Resolved: Node - us-a6008253.yalaso.top performance has improved in 6e47d8f.


location object not passed to loadProps

Should this be available in loadProps as a parameter to access things like query params?  Currently I don't see how to do so.

soon, I think

I'm happy to help if you would like to direct me on the API you desire.

I'm looking forward to this feature

1 for this, really needed.


Logs break on binary data

When a value that contains content such as binary is provided as the output for a log, these are no longer visible in stdout.
Additionally, after that log, all other logs are affected, with no further output to stdout. This was used in a Middleware processing requests, and not even on subsequent requests were logs visible.
This was using version 1.1.5 of the framework, and version 1.1.8 of the SDK, with system info below:
Linux work 4.2.0-42-generic #49~14.04.1-Ubuntu SMP Wed Jun 29 20:22:11 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Have you tried without the framework?
Here is the output for a test I just did with the 1.1.10 version of the SDK, with no relevant changes about logging since the 1.1.8. For this I generated a random binary file like this:
dd if=/dev/urandom of=binary bs=1 count=1024

Then I added a log in the startup of an action:
$service->startup(function(Service $service) {
    $service->log("Setting things up");
    $service->log(file_get_contents(__DIR__ . '/binary'));

After launching the SDK alone I get this:

While using the framework I get this:

Note there is no startup logs from the SDK, but there are logs for the shutdown. I suppose the framework can't handle the binary and skips the whole log stack from the SDK. In this case the startup logs.
I can't see a bug in the SDK here.

Fixed in katana 1.2.


"integration" test for approximate histogram aggregation

interesting, test passes here in the travis build and in ide as well,
but failed on another machine with the error that
java.io.FileNotFoundException: File 'file:/home/himanshu/.m2/repository/io/druid/druid-processing/0.8.1-SNAPSHOT/druid-processing-0.8.1-SNAPSHOT-tests.jar!/druid.sample.tsv' does not exist
it seems, in certain cases druid.sample.tsv (present in a different, druid-processing-[version]-tests.jar) might not be readable.

need to figure out and fix why druid.sample.tsv reading failed in one case.


fix(config): fix config reloader panic

reloading config from one without extensions
to one with extensions caused a panic

What type of PR is this?

Which issue does this PR fix:
What does this PR do / Why do we need it:
If an issue # is not available please add repro steps and logs showing the issue:
Testing done on this change:

Automation added to e2e:

Will this break upgrades or downgrades?
Does this PR introduce any user-facing change?:

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

@adodon2go pls review.


Updating conda environment + fixed deprecated commands + resampling with multiprocessing

Please

update the docstrings with asteroid schedulers being cited (in the sed_trainer of the different versions)
Update desed_task to 0.1.1
In the README, add - desed_task 0.1.0 to run 2022 and 2021 baseline (maybe give a way to install it (pip install with the right @ pointing to the right commit), or give the commit to use since we don't have it in pypi)
Other comments with the review

Thank you so much for your work !! 😁

Ok will do !

As you suggested, I put each recipe a specific requirements.txt and updated accordingly each conda_create_environment.sh. I didn't mention in the README for now that the two previous baselines are using desed_task 0.1.0 but there is now a pip install pointing to the latest commit of the 2022 edition in each sh script.

Thank you @turpaultn for the review ! I think we can close this PR now. I'll submit a later one to provide a stricter dcase2023 environment install.


Apollo Client still fetching even though store already contains the dataIdFromObject

If I query an index, followed by a query of a specific record, Apollo Client does not recognize that the specific record is already present in my state.apollo.data. Instead of using the cached data, a full GraphQL request is made.
Is this expected behavior? If so, is there a different way to configure Apollo Client to recognize that the data is already fetched, and to use that data instead of requesting new data?
Here is the specific JSON from my store state.
state.apollo.data
{
  "Artist70":{
    "id":"70",
    "name":"Doctor Piano",
    "__typename":"Artist"
  },
  "ROOT_QUERY":{
    "artist({\"id\":\"70\"})":{
      "type":"id",
      "id":"Artist70",
      "generated":false
    },
    "artists":[
      "Artist71",
      "Artist70"
    ]
  },
  "Artist71":{
    "id":"71",
    "name":"Mr Keyboad",
    "__typename":"Artist"
  }
}

state.apollo.queries
{
  "0":{
    "queryString":"query ($id: ID!) {\n  artist(id: $id) {\n    id\n    name\n    __typename\n  }\n}\n",
    "variables":{
      "id":"70"
    },
    "previousVariables":null,
    "stopped":true,
    "loading":false,
    "networkError":null,
    "graphQLErrors":null,
    "networkStatus":7,
    "forceFetch":false,
    "returnPartialData":false,
    "lastRequestId":1
  },
  "2":{
    "queryString":"{\n  artists {\n    id\n    name\n    __typename\n  }\n}\n",
    "previousVariables":null,
    "stopped":false,
    "loading":false,
    "networkError":null,
    "graphQLErrors":null,
    "networkStatus":7,
    "forceFetch":false,
    "returnPartialData":false,
    "lastRequestId":3
  }
}

Thank you!

This is the expected behavior, what you're trying to do will be supported once this PR is merged and published: https://github.com/apollostack/apollo-client/pull/809

Perfect, thank you.


TimeOut While waiting for element with locator

I am trying to test below code:
`

`

By Using Below E2E Test Case:
`
it('should delete a user', () => {
    page.navigateToUserComponent();
    let selectUserElem = element(by.id('user-0')).click();   //this event is fired as I can see user getting selected.
    let deleteUserElem = element(by.id('delete-user-0'));
    browser.wait(function() {
        return browser.isElementPresent(by.id('delete-user-0'));
    }, 5000);
    expect(deleteUserElem.isPresent()).toBeTruthy();  // if element is present I want to click that element .i.e. delete the first user in array
  });

`
But So Far Not Getting Any Success.
I tried Multiple Approaches as discussed in this link:
StackOverflow Post
But Couldn't make it work.
any help?
Thanks

Please direct general support questions like this one to an appropriate support channel, see https://github.com/angular/protractor/blob/master/CONTRIBUTING.md#questions
Thank you!
Without information on which step is timing out it's hard to debug. Please open up a new SO post!


[meta] Issue Labels

I have created a lot of labels here: https://github.com/substrate-developer-hub/substrate-docs/labels
What are your thoughts on them? How should we use them?

[ ] Add a PR to close this issue with style guide notes on lables

Went through all our labels, cleaned things up, went from 38 to 19. 🥳


Mixing in DiagnosticableMixin doesn't mean you implement Diagnosticable

The docs say "A mixin class that provides the implementation for Diagnosticable.", which makes it sound like if you mix it in to your class, you now implement Diagnosticable. However, this doesn't seem to be the case. Maybe we should say it's a mixin "on Diagnosticable"?
cc @jacob314

The mixin was removed in https://github.com/flutter/flutter/pull/58635. Closing.


edctf: allow admin option for challengeboard to be public

This would not only allow for challenges to be publicly accessible (not solvable), but also for the current scoreboard graph to display publicly.  We should display this note near this button option in the admin panel.
Default would still be private.

Closed due to duplicate of #13


rtl_433: change dependency rtl-sdr -> rtl-sdr-osmocom

Description of changes
This new driver supports rtl-sdr blog hardware version 4, https://www.rtl-sdr.com/v4/
Additionally, this is the rtl-sdr driver the rtl_433 project says to use, https://github.com/merbanan/rtl_433/blob/683e145f5dc9cc1b087a44bd185ecbe84dcfb261/docs/LINKS.md?plain=1#L5
Tested to work on aarch64-darwin and x86_64-linux
Things done

Built on platform(s)

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

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

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

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

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

[ ] Fits CONTRIBUTING.md.

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

I think that https://github.com/NixOS/nixpkgs/pull/304063#pullrequestreview-2001819003 makes this unnecessary, as it changes the default version of rtl-sdr to a version almost indentical to the osmocom sources.

Closed via https://github.com/NixOS/nixpkgs/pull/304063


Closes https://github.com/knurling-rs/defmt/issues/306.

bors r+

bors r+


The readme is not easy for beginners to configure in Vim + Unite part

I have followed this guide and check
Vim + Unite.vim
You can use pt with Unite.vim.
nnoremap  ,g :Unite grep:. -buffer-name=search-buffer
if executable('pt')
let g:unite_source_grep_command = 'pt'
let g:unite_source_grep_default_opts = '--nogroup --nocolor'
let g:unite_source_grep_recursive_opt = ''
let g:unite_source_grep_encoding = 'utf-8'
endif
Unite is easy to install with bundle.
After that, I tried the install the https://github.com/monochromegane/the_platinum_searcher/releases
and tar -zxvf **, and configure pt in $PATH,
But I add following:
nnoremap  ,g :Unite grep:. -buffer-name=search-buffer
if executable('pt')
let g:unite_source_grep_command = 'pt'
let g:unite_source_grep_default_opts = '--nogroup --nocolor'
let g:unite_source_grep_recursive_opt = ''
let g:unite_source_grep_encoding = 'utf-8'
endif
to .vimrc,  and I use Ctrl+u, or :Unite grep cli
both can not work,  I did not quite undestand how to configure it work with Unite

I think you must get vimproc.vim that is interactive command execution in Vim.
Add the line in you .vimrc, and :BundleInstall
Bundle "git://github.com/Shougo/vimproc"

And compile vimproc.
$ cd ~/.vim/bundle/vimproc
$ make_mac.mak # If you use OSX. You must select file for your platform.

Thank you for reporting.

hi @monochromegane thanks, yes it was because of that.

:smiley:


Update contact of account

Please, consider to merge this functionality from my fork. Thanks.

This has been implemented in ec1599e3b66582da471a70e0fb02fecdeaae4b31


[Feature]: Support SSL connections for sending email

Is there an existing issue for this?

[X] I have searched the existing issues

Summary
To send emails from Appsmith, user needs to configure their email server in the environment variables of Appsmith and also they can configure this from UI. Currently Appsmith only support SMTP emails through port 587 over TLS. However SMTP also supports SSL protocol over port 465. Appsmith currently does not have any option to configure that.
For this feature, there should be an option to set whether user is using TLS or SSL. If it's SSL, then additional properties required for SSL (if any) should be available for the user to configure.
Why should this be worked on?
This feature will allow users to send email through Appsmith who have or prefer SSL connection to their email server.

@sharat87 please look at adding this to the roadmap

The two ways of doing encrypted connections with SMTP, are both powered by TLS. SSL, is a now-obsolete protocol, so much so that people use SSL and TLS interchangeably, to mean TLS always.
So then, what's the two different ways of doing TLS with SMTP? One is TLS connections, and the other it StartTLS command. Roughly, a TLS connection exchange looks like this:

Establish TCP connection.
Perform TLS Handshake, and establish a shared session key.
Start sending SMTP commands, encrypted with the shared TLS session key.

Whereas a StartTLS command method looks like:

Establish TCP connection.
Send the HELO SMTP command, and get response.
Send the STARTTLS command, assuming the server supports it.
If server gives an ack to the STARTTLS command, then perform a TLS handshake, and establish a shared session key.
Continue with other SMTP commands, now encrypted with the shared TLS session key.

As can be seen, the TLS connection method is more secure, since the StartTLS method leaks some commands before encryption starts.


3 word site Lighthouse performance of 33

I came to the CMS because it advertised a PWA as output.
Not only is it not a PWA but a score of 33 on a static site with only 3 words is scary bad. Lighthouse says it is most definitely not a PWA.
I'm not so sure about fixing it, but you definitely need to fix the advertising because i would never have come here and wasted time setting it up if I had known this was going to be the result.
Great ideas, but if you bring people in with different expectations you're not helping your street cred. My 2c

The (no CDN) local published copy will generate these scores. Perhaps the setting for PWA needs the box checked. Website's being rebuilt. This seems less an offer to help improve the scores and there's a setting to leverage the service worker locally so it should be fine. Thanks for trying it out


Add unit tests for ActivityMapper

Adds unit tests with ~99% test coverage.
@casaout it might make sense to generate some input combinations and check if the result is actually correct.
For example ("snagiteditor", "Snagit Editor") => DevVc (instead of ReadWriteDocument) because it contains "git" which is checked before.
@RaphaelRo would you mind reviewing as well?

Thank you for your work on this! I've updated our issue with your suggestion, which I agree very much on: https://github.com/sealuzh/ApplicationToActivityMapper/issues/3

Probably too late now, but I finally had a look and it looks fine 👍


Run make with -r option (remove default rules).

Need to test this more & fully understand it before merging.

Out of curiosity, why do this? It adds a layer of recursive make, and I assumed Automake handles all of the default rules correctly anyway.


[Bug] When locating the game on MacOS can't select executable. Only .exe extension is available - Valkyrie

Describe the bug
I've installed Mansions of Madness into a non default Disk drive.
When I run Valkyirie. the MoM executable is not autofound. Then I try to locate the game. I found the location but I'm unable to select the file as is not an .exe extension file. In MacOS, applications are .app files.

Scenario
MacOS Catalina 10.15.7
Valkyrie for MacOS 2.5.1

Steps to reproduce the behavior:

Run Valkyrie (Executable of MoM not found)
Click on 'Locate the Game'
Find the MoM folder on non default filesystem
The MoM executable can't be selected.

Expected behavior

Select MoM executable and run Valkyrie

LogFile

Screenshots

Valkyrie Version
2.5.1

Desktop

OS: [e.g. iOS] MacOS Catalina 10.15.7

Additional context
Only exe is available to select file.

Workaround:
Copy "Mansions of Madnnes.app" into desktop. The Valkyrie App will find it automatically when ran, and you can then import the content.


Botania fall damage

Botania fall damage protection in form of Soujourners sash and globetrotters sash is broken. Seems like no protection at all. Expect my death counter to skyrocket ;) (as I do the opposite)

Was this corrected in the last update?

haven't had time to get on until now due to work. No, its not corrected.. using a BM sigil of elemental affinity instead :/

Ive been informed the mod changed and that they now need mana to function.

Well I always have mana on me since I use Botania armor...


Implemented ListUsers (paginate, sort, filter), GetUserById, CreateUser, UpdateById

Hi as I wrote yesterday that I found some missing API calls
So today I implemented

ListUsers (paginate, sort, filter)
GetUserById
CreateUser
UpdateById

All of these API calls require aServiceRoleKey.
These API call are useful for example in an admin application.
Also the Readme and Tests were extended.
Let me know if you miss anything.

Got that done quick! SORT_ORDER needs to renamed to SortOrder to match the enums on the other libraries, but I can do that after the merge. Thanks so much @TheOnlyBeardedBeast!
Fixes #13

@acupofjose sorry for the naming issue, I am glad to help.

No worries! Just maintaining consistency. Everything looks great man! Happy Saturday.


Disabled Category still shows on menu

Expected behavior:
I disabled a Category that is one of two assigned to items yet the Category still shows on the menu listing for the location assigned to the Item. The Category location does not include the location I am viewing.
Version:
3.0.4-beta.27

Duplicate of: https://github.com/tastyigniter/TastyIgniter/issues/718

Ok, cool. So both issues are resolved or this one is just a byproduct of what I raised in #718 ..... Thank you!

Both should be resolved.

On 8 Mar 2021, at 16:17, roydeanjr<EMAIL_ADDRESS>wrote:

Ok, cool. So both issues are resolved or this one is just a byproduct of what I raised in #718 ..... Thank you!
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.


openverse-ingestion_server-1  | {'tags': 0, 'url': 0, 'creator_url': 0, 'foreign_landing_url': 0}
openverse-ingestion_server-1  | [2023-07-12 22:41:17,683 - root - 274][INFO] Saving cleaned data...
openverse-ingestion_server-1  | [2023-07-12 22:41:17,684 - root - 289][INFO] Finished saving cleaned data in 4.5299530029296875e-06,
openverse-ingestion_server-1  | {'tags': 0, 'url': 0, 'creator_url': 0, 'foreign_landing_url': 0}
openverse-ingestion_server-1  | [2023-07-12 22:41:17,684 - root - 274][INFO] Saving cleaned data...
openverse-ingestion_server-1  | [2023-07-12 22:41:17,684 - root - 289][INFO] Finished saving cleaned data in 4.76837158203125e-06,
openverse-ingestion_server-1  | {'tags': 0, 'url': 0, 'creator_url': 0, 'foreign_landing_url': 0}
openverse-ingestion_server-1  | [2023-07-12 22:41:17,684 - root - 274][INFO] Saving cleaned data...
openverse-ingestion_server-1  | [2023-07-12 22:41:17,684 - root - 289][INFO] Finished saving cleaned data in 4.291534423828125e-06,
openverse-ingestion_server-1  | {'tags': 0, 'url': 0, 'creator_url': 0, 'foreign_landing_url': 0}
openverse-ingestion_server-1  | [2023-07-12 22:41:17,684 - root - 274][INFO] Saving cleaned data...
openverse-ingestion_server-1  | [2023-07-12 22:41:17,684 - root - 289][INFO] Finished saving cleaned data in 3.337860107421875e-06,
openverse-ingestion_server-1  | {'tags': 0, 'url': 0, 'creator_url': 0, 'foreign_landing_url': 0}
openverse-ingestion_server-1  | [2023-07-12 22:41:17,684 - root - 274][INFO] Saving cleaned data...
openverse-ingestion_server-1  | [2023-07-12 22:41:17,684 - root - 289][INFO] Finished saving cleaned data in 5.0067901611328125e-06,
openverse-ingestion_server-1  | {'tags': 0, 'url': 0, 'creator_url': 0, 'foreign_landing_url': 0}
openverse-ingestion_server-1  | [2023-07-12 22:41:17,684 - root - 274][INFO] Saving cleaned data...
openverse-ingestion_server-1  | [2023-07-12 22:41:17,684 - root - 289][INFO] Finished saving cleaned data in 3.337860107421875e-06,
openverse-ingestion_server-1  | {'tags': 0, 'url': 0, 'creator_url': 0, 'foreign_landing_url': 0}
openverse-ingestion_server-1  | [2023-07-12 22:41:17,684 - root - 274][INFO] Saving cleaned data...
openverse-ingestion_server-1  | [2023-07-12 22:41:17,684 - root - 289][INFO] Finished saving cleaned data in 3.814697265625e-06,
openverse-ingestion_server-1  | {'tags': 0, 'url': 0, 'creator_url': 0, 'foreign_landing_url': 0}
openverse-ingestion_server-1  | [2023-07-12 22:41:17,700 - root - 374][INFO] Batch finished, records/s: cleanup_rate=11918.683754369014, items cleaned: {'tags': 0, 'url': 0, 'creator_url': 0, 'foreign_landing_url': 0}.
openverse-ingestion_server-1  | Fetching next batch.
openverse-ingestion_server-1  | [2023-07-12 22:41:17,706 - elasticsearch - 265][INFO] POST http://es:9200/audio-init-filtered/_refresh [status:200 request:0.340s]
openverse-ingestion_server-1  | [2023-07-12 22:41:17,719 - root - 386][INFO] Cleaned all records in 0.7373456954956055 seconds,counts: {'creator_url': 0, 'tags': 0, 'url': 0, 'foreign_landing_url': 0}
openverse-ingestion_server-1  | [2023-07-12 22:41:17,720 - root - 335][INFO] Cleaning completed!
openverse-ingestion_server-1  | [2023-07-12 22:41:17,720 - ingestion_server.slack - 336][INFO] `image`: Data cleaning complete | _Next: Elasticsearch reindex_
openverse-ingestion_server-1  | [2023-07-12 22:41:17,720 - root - 339][INFO] Finished refreshing table 'image'.
openverse-ingestion_server-1  | [2023-07-12 22:41:17,721 - root - 298][INFO] Creating index image-init for model image from table temp_import_image.
openverse-ingestion_server-1  | [2023-07-12 22:41:17,742 - elasticsearch - 265][INFO] PUT http://es:9200/audio-init-filtered/_settings [status:200 request:0.036s]
openverse-ingestion_server-1  | [2023-07-12 22:41:17,743 - root - 268][INFO] Task a1ea3a85beda4846b5dd9dbb55fb0c53 completed.
openverse-ingestion_server-1  | [2023-07-12 22:41:18,150 - elasticsearch - 265][INFO] PUT http://es:9200/image-init [status:200 request:0.429s]
openverse-ingestion_server-1  | [2023-07-12 22:41:18,151 - root - 307][INFO] Running distributed index using indexer workers.
openverse-ingestion_server-1  | [2023-07-12 22:41:18,156 - root - 107][INFO] Checking http://<IP_ADDRESS>:8002/healthcheck. . .
openverse-ingestion_server-1  | [2023-07-12 22:41:18,160 - root - 120][INFO] http://<IP_ADDRESS>:8002/healthcheck passed healthcheck
openverse-ingestion_server-1  | [2023-07-12 22:41:18,160 - root -  60][INFO] Assigning job {'model_name': 'image', 'table_name': 'temp_import_image', 'start_id': 0, 'end_id': 5000, 'target_index': 'image-init'} to http://<IP_ADDRESS>:8002
openverse-ingestion_server-1  | [2023-07-12 22:41:18,170 - root - 268][INFO] Task a027e0e4b09a4088ba50954ade43e1d2 completed.
openverse-ingestion_server-1  | [2023-07-12 22:41:19,362 - gunicorn.error - 267][DEBUG] POST /worker_finished
openverse-ingestion_server-1  | [2023-07-12 22:41:19,363 - root -  88][INFO] Received worker_finished signal from <IP_ADDRESS>
openverse-ingestion_server-1  | [2023-07-12 22:41:19,364 - root - 284][INFO] All indexer workers succeeded! New index: image-init
openverse-ingestion_server-1  | [2023-07-12 22:41:19,364 - root -  58][INFO] Connecting to es:9200 with AWS auth
openverse-ingestion_server-1  | [2023-07-12 22:41:19,370 - elasticsearch - 265][INFO] GET http://es:9200/ [status:200 request:0.005s]
openverse-ingestion_server-1  | [2023-07-12 22:41:19,373 - elasticsearch - 265][INFO] GET http://es:9200/ [status:200 request:0.003s]
openverse-ingestion_server-1  | [2023-07-12 22:41:19,377 - gunicorn.access - 349][INFO] <IP_ADDRESS> - - [12/Jul/2023:22:41:19 +0000] "POST /worker_finished HTTP/1.1" 200 0 "-" "python-requests/2.31.0"
openverse-ingestion_server-1  | [2023-07-12 22:41:19,607 - elasticsearch - 265][INFO] POST http://es:9200/image-init/_refresh [status:200 request:0.230s]
openverse-ingestion_server-1  | [2023-07-12 22:41:19,645 - elasticsearch - 265][INFO] PUT http://es:9200/image-init/_settings [status:200 request:0.037s]
openverse-ingestion_server-1  | [2023-07-12 22:41:21,953 - gunicorn.error - 267][DEBUG] POST /task
openverse-ingestion_server-1  | [2023-07-12 22:41:21,964 - root -  58][INFO] Connecting to es:9200 with AWS auth
openverse-ingestion_server-1  | [2023-07-12 22:41:21,970 - elasticsearch - 265][INFO] GET http://es:9200/ [status:200 request:0.005s]
openverse-ingestion_server-1  | [2023-07-12 22:41:21,972 - elasticsearch - 265][INFO] GET http://es:9200/ [status:200 request:0.003s]
openverse-ingestion_server-1  | [2023-07-12 22:41:21,973 - root - 360][INFO] `image`: Starting table promotion | _Next: recreate-indices_
openverse-ingestion_server-1  | [2023-07-12 22:41:21,976 - root - 365][INFO] Recreating database indices...
openverse-ingestion_server-1  | [2023-07-12 22:41:21,981 - root - 370][INFO] Running: CREATE UNIQUE INDEX temp_import_image_url_key ON public.temp_import_image USING btree (url)
openverse-ingestion_server-1  | [2023-07-12 22:41:22,003 - root - 370][INFO] Running: CREATE INDEX temp_import_image_provider_7d11f847 ON public.temp_import_image USING btree (provider)
openverse-ingestion_server-1  | [2023-07-12 22:41:22,008 - root - 370][INFO] Running: CREATE INDEX temp_import_image_provider_7d11f847_like ON public.temp_import_image USING btree (provider varchar_pattern_ops)
openverse-ingestion_server-1  | [2023-07-12 22:41:22,013 - root - 370][INFO] Running: CREATE INDEX temp_import_image_source_d5a89e97 ON public.temp_import_image USING btree (source)
openverse-ingestion_server-1  | [2023-07-12 22:41:22,017 - root - 370][INFO] Running: CREATE INDEX temp_import_image_source_d5a89e97_like ON public.temp_import_image USING btree (source varchar_pattern_ops)
openverse-ingestion_server-1  | [2023-07-12 22:41:22,022 - root - 370][INFO] Running: CREATE INDEX temp_import_image_url_c6aabda2_like ON public.temp_import_image USING btree (url varchar_pattern_ops)
openverse-ingestion_server-1  | [2023-07-12 22:41:22,028 - root - 370][INFO] Running: CREATE INDEX temp_import_image_last_synced_with_source_187adf09 ON public.temp_import_image USING btree (last_synced_with_source)
openverse-ingestion_server-1  | [2023-07-12 22:41:22,032 - root - 370][INFO] Running: CREATE INDEX temp_import_image_foreign_identifier_4c72d3ee_like ON public.temp_import_image USING btree (foreign_identifier varchar_pattern_ops)
openverse-ingestion_server-1  | [2023-07-12 22:41:22,046 - root - 370][INFO] Running: CREATE UNIQUE INDEX temp_import_image_identifier_key ON public.temp_import_image USING btree (identifier)
openverse-ingestion_server-1  | [2023-07-12 22:41:22,050 - root - 370][INFO] Running: CREATE INDEX temp_import_image_foreign_identifier_4c72d3ee ON public.temp_import_image USING btree (foreign_identifier)
openverse-ingestion_server-1  | [2023-07-12 22:41:22,056 - root - 370][INFO] Running: CREATE UNIQUE INDEX temp_import_unique_provider_image ON public.temp_import_image USING btree (foreign_identifier, provider)
openverse-ingestion_server-1  | [2023-07-12 22:41:22,064 - gunicorn.access - 349][INFO] <IP_ADDRESS> - - [12/Jul/2023:22:41:22 +0000] "POST /task HTTP/1.1" 202 169 "-" "curl/7.81.0"
openverse-ingestion_server-1  | [2023-07-12 22:41:22,065 - root - 370][INFO] Running: CREATE INDEX temp_import_image_category_daa5d91c ON public.temp_import_image USING btree (category)
openverse-ingestion_server-1  | [2023-07-12 22:41:22,070 - root - 370][INFO] Running: CREATE INDEX temp_import_image_category_daa5d91c_like ON public.temp_import_image USING btree (category varchar_pattern_ops)
openverse-ingestion_server-1  | [2023-07-12 22:41:22,075 - root - 372][INFO] Done creating indices! Remapping constraints...
openverse-ingestion_server-1  | [2023-07-12 22:41:22,082 - root - 379][INFO] Running: DELETE FROM "imagelist_images" AS fk_table WHERE NOT EXISTS(SELECT 1 FROM "temp_import_image" AS r WHERE "r"."id" = "fk_table"."image_id");
openverse-ingestion_server-1  | [2023-07-12 22:41:22,083 - root - 379][INFO] Running: ALTER TABLE "image" DROP CONSTRAINT "unique_provider_image"
openverse-ingestion_server-1  | [2023-07-12 22:41:22,084 - root - 379][INFO] Running: ALTER TABLE "image" ADD UNIQUE (foreign_identifier, provider)
openverse-ingestion_server-1  | [2023-07-12 22:41:22,086 - root - 379][INFO] Running: ALTER TABLE "image" DROP CONSTRAINT "image_identifier_key"
openverse-ingestion_server-1  | [2023-07-12 22:41:22,087 - root - 379][INFO] Running: ALTER TABLE "image" ADD UNIQUE (identifier)
openverse-ingestion_server-1  | [2023-07-12 22:41:22,088 - root - 379][INFO] Running: ALTER TABLE "image" DROP CONSTRAINT "image_url_key"
openverse-ingestion_server-1  | [2023-07-12 22:41:22,089 - root - 379][INFO] Running: ALTER TABLE "image" ADD UNIQUE (url)
openverse-ingestion_server-1  | [2023-07-12 22:41:22,091 - root - 379][INFO] Running: ALTER TABLE "imagelist_images" DROP CONSTRAINT "imagelist_images_image_id_efcd124c_fk_image_id"
openverse-ingestion_server-1  | [2023-07-12 22:41:22,092 - root - 379][INFO] Running: ALTER TABLE "imagelist_images" ADD FOREIGN KEY (image_id) REFERENCES temp_import_image(id) DEFERRABLE INITIALLY DEFERRED
openverse-ingestion_server-1  | [2023-07-12 22:41:22,094 - root - 381][INFO] Done remapping constraints! Going live with new table...
openverse-ingestion_server-1  | [2023-07-12 22:41:22,095 - ingestion_server.slack - 383][INFO] `image`: Indices & constraints applied | _Next: table promotion_
openverse-ingestion_server-1  | [2023-07-12 22:41:22,095 - root - 387][INFO] Running go-live:
openverse-ingestion_server-1  |
openverse-ingestion_server-1  |         DROP TABLE "image";
openverse-ingestion_server-1  |         ALTER INDEX "temp_import_image_pkey" RENAME TO "image_pkey";
openverse-ingestion_server-1  |         ALTER INDEX "temp_import_image_url_key" RENAME TO "image_url_key";
openverse-ingestion_server-1  |         ALTER INDEX "temp_import_image_provider_7d11f847" RENAME TO "image_provider_7d11f847";
openverse-ingestion_server-1  |         ALTER INDEX "temp_import_image_provider_7d11f847_like" RENAME TO "image_provider_7d11f847_like";
openverse-ingestion_server-1  |         ALTER INDEX "temp_import_image_source_d5a89e97" RENAME TO "image_source_d5a89e97";
openverse-ingestion_server-1  |         ALTER INDEX "temp_import_image_source_d5a89e97_like" RENAME TO "image_source_d5a89e97_like";
openverse-ingestion_server-1  |         ALTER INDEX "temp_import_image_url_c6aabda2_like" RENAME TO "image_url_c6aabda2_like";
openverse-ingestion_server-1  |         ALTER INDEX "temp_import_image_last_synced_with_source_187adf09" RENAME TO "image_last_synced_with_source_187adf09";
openverse-ingestion_server-1  |         ALTER INDEX "temp_import_image_foreign_identifier_4c72d3ee_like" RENAME TO "image_foreign_identifier_4c72d3ee_like";
openverse-ingestion_server-1  |         ALTER INDEX "temp_import_image_identifier_key" RENAME TO "image_identifier_key";
openverse-ingestion_server-1  |         ALTER INDEX "temp_import_image_foreign_identifier_4c72d3ee" RENAME TO "image_foreign_identifier_4c72d3ee";
openverse-ingestion_server-1  |         ALTER INDEX "temp_import_unique_provider_image" RENAME TO "unique_provider_image";
openverse-ingestion_server-1  |         ALTER INDEX "temp_import_image_category_daa5d91c" RENAME TO "image_category_daa5d91c";
openverse-ingestion_server-1  |         ALTER INDEX "temp_import_image_category_daa5d91c_like" RENAME TO "image_category_daa5d91c_like";
openverse-ingestion_server-1  |         ALTER TABLE "temp_import_image" RENAME TO "image";
openverse-ingestion_server-1  |
openverse-ingestion_server-1  | [2023-07-12 22:41:22,100 - ingestion_server.slack - 389][INFO] `image`: Finished table promotion | _Next: Elasticsearch promotion_
openverse-ingestion_server-1  | [2023-07-12 22:41:22,104 - root - 394][INFO] Finished promoting table image
openverse-ingestion_server-1  | [2023-07-12 22:41:22,107 - elasticsearch - 288][WARNING] GET http://es:9200/image [status:404 request:0.003s]
openverse-ingestion_server-1  | [2023-07-12 22:41:22,132 - elasticsearch - 265][INFO] PUT http://es:9200/image-init/_alias/image [status:200 request:0.025s]
openverse-ingestion_server-1  | [2023-07-12 22:41:22,133 - ingestion_server.slack - 399][INFO] `image`: Created alias `image` pointing to index `image-init`.
openverse-ingestion_server-1  | [2023-07-12 22:41:22,133 - root - 268][INFO] Task ec1c8dd4dc394d97bf88d6687e4efe49 completed.
openverse-ingestion_server-1  | [2023-07-12 22:41:27,234 - gunicorn.error - 267][DEBUG] POST /task
openverse-ingestion_server-1  | [2023-07-12 22:41:27,243 - root -  58][INFO] Connecting to es:9200 with AWS auth
openverse-ingestion_server-1  | [2023-07-12 22:41:27,249 - elasticsearch - 265][INFO] GET http://es:9200/ [status:200 request:0.005s]
openverse-ingestion_server-1  | [2023-07-12 22:41:27,252 - elasticsearch - 265][INFO] GET http://es:9200/ [status:200 request:0.003s]
openverse-ingestion_server-1  | [2023-07-12 22:41:27,343 - gunicorn.access - 349][INFO] <IP_ADDRESS> - - [12/Jul/2023:22:41:27 +0000] "POST /task HTTP/1.1" 202 169 "-" "curl/7.81.0"
openverse-ingestion_server-1  | [2023-07-12 22:41:27,423 - gunicorn.error - 267][DEBUG] POST /task
openverse-ingestion_server-1  | [2023-07-12 22:41:27,433 - root -  58][INFO] Connecting to es:9200 with AWS auth
openverse-ingestion_server-1  | [2023-07-12 22:41:27,441 - elasticsearch - 265][INFO] GET http://es:9200/ [status:200 request:0.007s]
openverse-ingestion_server-1  | [2023-07-12 22:41:27,444 - elasticsearch - 265][INFO] GET http://es:9200/ [status:200 request:0.003s]
openverse-ingestion_server-1  | [2023-07-12 22:41:27,448 - elasticsearch - 288][WARNING] GET http://es:9200/image-filtered [status:404 request:0.003s]
openverse-ingestion_server-1  | [2023-07-12 22:41:27,490 - elasticsearch - 265][INFO] PUT http://es:9200/image-init-filtered/_alias/image-filtered [status:200 request:0.042s]
openverse-ingestion_server-1  | [2023-07-12 22:41:27,491 - ingestion_server.slack - 399][INFO] `image`: Created alias `image-filtered` pointing to index `image-init-filtered`.
openverse-ingestion_server-1  | [2023-07-12 22:41:27,491 - root - 268][INFO] Task bf53ed02d94f4124892e4e103a1bc8cf completed.
openverse-ingestion_server-1  | [2023-07-12 22:41:27,532 - gunicorn.access - 349][INFO] <IP_ADDRESS> - - [12/Jul/2023:22:41:27 +0000] "POST /task HTTP/1.1" 202 169 "-" "curl/7.81.0"
openverse-ingestion_server-1  | [2023-07-12 22:41:27,630 - elasticsearch - 265][INFO] PUT http://es:9200/image-init-filtered [status:200 request:0.378s]
openverse-ingestion_server-1  | [2023-07-12 22:41:27,632 - gunicorn.error - 267][DEBUG] GET /static/mock_sensitive_terms.txt
openverse-ingestion_server-1  | [2023-07-12 22:41:27,633 - gunicorn.access - 349][INFO] <IP_ADDRESS> - - [12/Jul/2023:22:41:27 +0000] "GET /static/mock_sensitive_terms.txt HTTP/1.1" 200 19 "-" "Python-urllib/3.11"
openverse-ingestion_server-1  | [2023-07-12 22:41:27,859 - elasticsearch - 265][INFO] POST http://es:9200/_reindex?slices=auto&wait_for_completion=true [status:200 request:0.226s]
openverse-ingestion_server-1  | [2023-07-12 22:41:28,009 - elasticsearch - 265][INFO] POST http://es:9200/image-init-filtered/_refresh [status:200 request:0.150s]
openverse-ingestion_server-1  | [2023-07-12 22:41:28,049 - elasticsearch - 265][INFO] PUT http://es:9200/image-init-filtered/_settings [status:200 request:0.039s]
openverse-ingestion_server-1  | [2023-07-12 22:41:28,049 - root - 268][INFO] Task 5767d22927324f839145d872435384ec completed.

Testing Instructions

Run just build && just down -v then just api/init, followed with just logs ingestion_server. You should see the new log format in the produced logs!
Checklist

[x] My pull request has a descriptive title (not a vague title likeUpdate index.md).
[x] My pull request targets the default branch of the repository (main) or a parent feature branch.
[x] My commit messages follow best practices.
[x] My code follows the established code style of the repository.
[ ] I added or updated tests for the changes I made (if applicable).
[x] I added or updated documentation (if applicable).
[x] I tried running the project locally and verified that there are no visible errors.
[ ] I ran the DAG documentation generator (if applicable).

Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

@obulat I think that's just the logger that's delegated to log those specifics 🤷🏼♀ Seems like a gunicorn internal thing, since the logging config is copied almost wholesale with only a few modifications. In short, no I'm not sure why! But it seems fine 🙂


Add List to service endpoint types and update black

@frostyfrog I think this line needs an update as well to get that black formatting check fixed: https://github.com/Indicio-tech/pydid/blob/main/.github/workflows/code-quality-check.yml#L31

There we go! We're going to want to push out another release for upstream to get via pip. I don't believe that I can do that, nor do I know how to.