ZohoQEngine Jenkins Plugin

Repository URL
https://github.com/zohoqengine/jenkins-plugin
New Repository Name
zohoqengine-plugin
Description
The Jenkins integration with Zoho QEngine automates testing within a CI/CD pipeline. By leveraging Jenkins' orchestration capabilities alongside Zoho QEngine's testing expertise, users can seamlessly integrate automated test plans into their continuous integration process. This ensures that every test case change is validated through rigorous testing, enabling early detection of defects and accelerating the delivery of efficient applications or services. Zoho QEngine offers a plugin to automate test execution within the Jenkins Pipeline.
GitHub users to have commit permission
zohoqengine
Jenkins project users to have release permission
zohoqengine
Issue tracker
Jira

Security audit, information and commands
The security team is auditing all the hosting requests, to ensure a better security by default.
This message informs you that a Jenkins Security Scan was triggered on your repository.
It takes ~10 minutes to complete.
Commands
The bot will parse all comments, and it will check if any line start with a command.
Security team only:

/audit-ok => the audit is complete, the hosting can continue :tada:.
/audit-skip => the audit is not necessary, the hosting can continue :tada:.
/audit-findings => the audit reveals some issues that require corrections :pencil2:.

Anyone:

/request-security-scan => the findings from the Jenkins Security Scan were corrected, this command will re-scan your repository :mag:.
/audit-review => the findings from the audit were corrected, this command will ping the security team to review the findings :eyes:.
	It's only applicable when the previous audit required changes.

Only one command can be requested per comment.

(automatically generated message, version: 1.32.7)

The Jenkins Security Scan discovered 3 finding(s) :mag:.
For every identified issue, please do one of the following:

Implement the recommended fix to address the issue.
If you think it's a false positive, suppress the warning directly within the code.
Alternative, you write an explanation here about why you think it's irrelevant. That will require a manual review, leading to a slower process.

After addressing the findings through one of the above methods:

If all modifications have been made to the code, please initiate a new security scan by triggering the /request-security-scan command.
If there are any unresolved findings (those not corrected or suppressed), request a review from the Jenkins security team by using the /audit-review command.

Stapler: Missing permission check
You can find detailed information about this finding here.
QEnginePluginBuilder.java#66
Potential missing permission check in Descriptor#doCheckApiKey

QEnginePluginBuilder.java#51
Potential missing permission check in Descriptor#doCheckTestPlanUrl

Jenkins: Plaintext password storage
You can find detailed information about this finding here.
QEnginePluginBuilder.java#20
Field should be reviewed whether it stores a password and is serialized to disk: apiKey

please move your classes in a dedicated package io.jenkins.plugins.zohoqengine and not directly under io.jenkins.plugins
your builder should implement SimpleBuildStep so it is usable in pipeline jobs, currently it is limited to freestyle jobs. When you do this replace the perform(AbstractBuild...) with perform(Run ...) defined in SimpleBuildStep
add an annotation @Symbol("zohoQEngineTestPlanExecution") (or choose a shorter name) to your Descriptor, this will be the step name you can use in pipeline jobs
https://github.com/zohoqengine/jenkins-plugin/blob/0a7796fac188a76444407a984197b75d53078f56/src/main/java/io/jenkins/plugins/QEnginePluginBuilder.java#L26 Do not store the PrintStream in the class. You must only use it locally. Pass it as parameter to the CommonUtils class. Otherwise you will get wrong output in the logs of the same freestyle  job when it runs in parallel
You should not store the values that you extract from the testPlanUrl into class fields. Better use a temporary class that takes the values and pass it around

You're doing http requests, you should add support for proxies, you can use ProxyConfiguration to get ready to use httpclient (without the apache classes)

The way you check the url here is a bit strange. I assume that only http urls will works. but something like foo//bar/baz/.../  would be valid as well. Maybe using URIis more reliable to check for valid urls As you extract certain things from the url likeportalName, projectIdandtestPlanID` I wonder if it's not better to make those things configurable and construct the testPlanURL on the fly from those values if possible.

The way you check the url here is a bit strange. I assume that only http urls will works. but something like foo//bar/baz/.../ would be valid as well. Maybe using URIis more reliable to check for valid urls As you extract certain things from the url likeportalName, projectIdandtestPlanID` I wonder if it's not better to make those things configurable and construct the testPlanURL on the fly from those values if possible.

Yes, you are correct. We can make this configurable; however, we believe that providing the test plan URL from the product side will make it easier for the end user to configure. Additionally, we have multiple data centers (DC) across the globe, which means the domain name will vary for each DC.

please move your classes in a dedicated package io.jenkins.plugins.zohoqengine and not directly under io.jenkins.plugins
your builder should implement SimpleBuildStep so it is usable in pipeline jobs, currently it is limited to freestyle jobs. When you do this replace the perform(AbstractBuild...) with perform(Run ...) defined in SimpleBuildStep
add an annotation @Symbol("zohoQEngineTestPlanExecution") (or choose a shorter name) to your Descriptor, this will be the step name you can use in pipeline jobs
https://github.com/zohoqengine/jenkins-plugin/blob/0a7796fac188a76444407a984197b75d53078f56/src/main/java/io/jenkins/plugins/QEnginePluginBuilder.java#L26 Do not store the PrintStream in the class. You must only use it locally. Pass it as parameter to the CommonUtils class. Otherwise you will get wrong output in the logs of the same freestyle  job when it runs in parallel
You should not store the values that you extract from the testPlanUrl into class fields. Better use a temporary class that takes the values and pass it around

Thank you for pointing out the problem. I will change it as you suggested and will let you know.

You're doing http requests, you should add support for proxies, you can use ProxyConfiguration to get ready to use httpclient (without the apache classes)

Certainly, @mawinter69, I will make this change as well.

@mawinter69 I have made all the changes you suggested earlier. Please review and let me know.

/hosting re-check

The bom is not in sync with the jenkins version. You need to use bom-2.452.x https://github.com/zohoqengine/jenkins-plugin/blob/5852e60a5f37f364f8fef735fbe468e938c523f2/pom.xml#L45
Once the bom is aligned you can remove the version for the dependency to json https://github.com/zohoqengine/jenkins-plugin/blob/5852e60a5f37f364f8fef735fbe468e938c523f2/pom.xml#L56 as you get it from the bom
your builder should implement SimpleBuildStep so it is usable in pipeline jobs, currently it is limited to freestyle jobs. When you do this replace the perform(AbstractBuild...) with perform(Run ...) defined in SimpleBuildStep
add an annotation @Symbol("zohoQEngineTestPlanExecution") (or choose a shorter name) to your Descriptor, this will be the step name you can use in pipeline jobs
the method parseAndVerifyParams can be removed https://github.com/zohoqengine/jenkins-plugin/blob/5852e60a5f37f364f8fef735fbe468e938c523f2/src/main/java/io/jenkins/plugins/zohoqengine/QEnginePluginBuilder.java#L141C18-L141C38

your builder should implement SimpleBuildStep so it is usable in pipeline jobs, currently it is limited to freestyle jobs. When you do this replace the perform(AbstractBuild...) with perform(Run ...) defined in SimpleBuildStep
add an annotation @symbol("zohoQEngineTestPlanExecution") (or choose a shorter name) to your Descriptor, this will be the step name you can use in pipeline jobs

Regarding Freestyle jobs:  We developed this plugin for freestyle jobs and configured the build steps itself. Is it necessary to implement SimpleBuildStep? Please excuse me if I am wrong.
Regarding Annotation:  We have already implemented the "getDisplayName" method in the Builder class. Can you please explain why we need to add an annotation?
@mawinter69 I will make the other changes and inform you once they are done.
Once again thank you so much for your quick reply.

@mawinter69 I have made the other two changes. I updated the BOM version and removed the method "parseAndVerifyParams." Please verify it.

/request-security-scan

The Jenkins Security Scan discovered 1 finding(s) :mag:.
For every identified issue, please do one of the following:

Implement the recommended fix to address the issue.
If you think it's a false positive, suppress the warning directly within the code.
Alternative, you write an explanation here about why you think it's irrelevant. That will require a manual review, leading to a slower process.

After addressing the findings through one of the above methods:

If all modifications have been made to the code, please initiate a new security scan by triggering the /request-security-scan command.
If there are any unresolved findings (those not corrected or suppressed), request a review from the Jenkins security team by using the /audit-review command.

Stapler: Missing permission check
You can find detailed information about this finding here.
QEnginePluginBuilder.java#47
Potential missing permission check in Descriptor#doCheckTestPlanUrl

The Jenkins Security Scan did not find anything dangerous with your plugin, congratulations! :tada:

:bulb: The Security team recommends that you are setting up the scan in your repository by following our guide.

https://github.com/zohoqengine/jenkins-plugin/blob/ae58eea6881f425bf0739209927d44d570ac1b41/src/main/resources/io/jenkins/plugins/zohoqengine/QEnginePluginBuilder/config.jelly#L12 make this <f:number>, that fits better for integers (see here)
https://github.com/zohoqengine/jenkins-plugin/blob/ae58eea6881f425bf0739209927d44d570ac1b41/src/main/java/io/jenkins/plugins/zohoqengine/QEnginePluginBuilder.java#L52 this will not work. You need to get the job by adding @AncestorInPath job and perform the permission check on the job (if it is not null). But I think at the moment it is safe to remove this and annotate the method to ignore the missing permission check with @SuppressWarnings("lgtm[jenkins/no-permission-check]"). The method has no side effects or returns sensitive data.

Yes please implement SimpleBuildStep as this will enable to use it in pipeline jobs. Freestyle jobs are old fashioned and you should expect that most of your customers will work with pipeline jobs. Afaik the getDisplayName is only used in Freestyle jobs, in pipeline jobs the @Symbol defines the name of the step that you can use in a Jenkinsfile.
The annotation is good (maybe start with lower case) it must not contain blanks.

@mawinter69 Thank you for your explanation. I will make the changes and let you know for the review.

https://github.com/zohoqengine/jenkins-plugin/blob/ae58eea6881f425bf0739209927d44d570ac1b41/src/main/resources/io/jenkins/plugins/zohoqengine/QEnginePluginBuilder/config.jelly#L12 make this <f:number>, that fits better for integers (see here)
https://github.com/zohoqengine/jenkins-plugin/blob/ae58eea6881f425bf0739209927d44d570ac1b41/src/main/java/io/jenkins/plugins/zohoqengine/QEnginePluginBuilder.java#L52 this will not work. You need to get the job by adding @AncestorInPath job and perform the permission check on the job (if it is not null). But I think at the moment it is safe to remove this and annotate the method to ignore the missing permission check with @SuppressWarnings("lgtm[jenkins/no-permission-check]"). The method has no side effects or returns sensitive data.

Yes please implement SimpleBuildStep as this will enable to use it in pipeline jobs. Freestyle jobs are old fashioned and you should expect that most of your customers will work with pipeline jobs. Afaik the getDisplayName is only used in Freestyle jobs, in pipeline jobs the @Symbol defines the name of the step that you can use in a Jenkinsfile. The annotation is good (maybe start with lower case) it must not contain blanks.

Hi @mawinter69 I have made all the necessary changes. Please review them and let me know your thoughts.

/request-security-scan

The Jenkins Security Scan did not find anything dangerous with your plugin, congratulations! :tada:

:bulb: The Security team recommends that you are setting up the scan in your repository by following our guide.

/hosting re-check

/hosting host

@balasankarJ
Please consider setting up security scans according to https://www.jenkins.io/redirect/jenkins-security-scan/

@mawinter69 Of course, I will take care of it. Thank you once again!

@mawinter69I deleted the old repository, but the Jenkins plugin repository still shows it as forked from another repository. How did this happen? What should I do now?

please contact GitHub support to make the jenkinsci repo the root of the fork network (mention that Jenkins approval was given in support request 569994)

ok @mawinter69


[eas-cli] Fix suggested application identifier to match owning account name

Checklist

[ ] I've added an entry to CHANGELOG.md if necessary. You can comment this pull request with /changelog-entry [breaking-change|new-feature|bug-fix|chore] [message] and CHANGELOG.md will be updated automatically.

Why
Noticed that when I have an application that belongs to an org it still suggests my logged-in username as the application identifier part. This changes it to use the owner account name.
Closes ENG-7475.
How
Update logic.
Test Plan
Before:
$ eas build -p android
✔ Generated eas.json

📝  Android application id Learn more
✖ What would you like your Android application id to be? … com.wschurman.pouidapoidaw

After:
$ ~/expo/eas-cli/packages/eas-cli/bin/run build -p android

📝  Android application id Learn more
✖ What would you like your Android application id to be? … com.myneworg.pouidapoidaw

/changelog-entry bug-fix Fix suggested application identifier to match owning account name

Test fixed in master.


Can you release the code about the evaluation codes of  FID and Sync metrics?

I noticed that there are only LMD, PSNR and LPIPS in the evaluation codes. Could you please release the evaluation codes of Sync and FID?

Hi @Fictionarry , can you explain for me why there is no value for offset in the SyncNet metric in your paper?


feat(spectacular)!: add required routes option and optional testing features for provideSpectacularFeatureTest

PR Checklist
Please check if your PR fulfills the following requirements:

[x] The commit message follows our guidelines: CONTRIBUTING.md#commit
[x] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

PR Type
What kind of change does this PR introduce?

[ ] Bugfix
[x] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] CI related changes
[ ] Documentation content changes
[ ] Other... Please describe:

What is the current behavior?
Features

provideSpectacularFeatureTest only supports the featurePath option
provideSpectacularFeatureTest returns Provider[]
SpectacularFeatureTestingModule is stable

Refactors

SpectacularFeatureTestingRootModule uses InjectFlags

Testing

A classic CapitalizePipe is tested

Documentation

The excludeComponentDeclaration option is specified for all Angular Testing Library example tests

Issue Number: N/A
What is the new behavior?
Features

provideSpectacularFeatureTest requires a routes option and optionally accepts the withInitialFeatureNavigation feature and Angular Router features
provideSpectacularFeatureTest returns (EnvironmentProviders | Provider)[]
SpectacularFeatureTestingModule is deprecated

Refactors

SpectacularFeatureTestingRootModule uses InjectOptions

Testing

A classic and a standalone CapitalizePipe are tested

Documentation

The excludeComponentDeclaration option is not mentioned in Angular Testing Library example tests

Does this PR introduce a breaking change?
[x] Yes
[ ] No

BREAKING CHANGES

A routes option must be passed to provideSpectacularFeatureTest.
provideSpectacularFeatureTest returns (EnvironmentProviders | Provider)[]

DEPRECATIONS
SpectacularFeatureTestingModule is to be removed in Spectacular version 16. Migrate to provideSpectacularFeatureTest.
Other information

It is looking great; I'm excited.


Use automatic code formatting

Although we are already using some linters to ensure a good code formatting, still a wide variance of formatting styles are accepted. At the same time it can be cumbersome to create code with an accepted format. I think that wastes too much time and energy. We should automate this task by using a code formatter. Black looks like a suitable option.

I'm very much in favor of that. I like the lack of option in black. We should also look into making it run automatically in a pre-commit hook.


history.php not show title

In your history.php file you not shows title like before.
Before:
http://pics.rs/i/Z08j2
now:
http://pics.rs/i/DACtQ

Very quickly, thx dude.


Version 1.2.0 not published on pip

The latest version (1.2.0) isn’t available via pip install. Could you please publish it?
Thanks!

Hello,
1.2.1 has been published.
I had left 1.2.0 unpublished for a while because of several downstream projects had relied on some function signatures that were changed. These functions have since been restored in the latest release.


Any closer to deleting contacts?

I know i have been banging on about this a lot but i was wondering if we're any closer to achieving it?
This is what i know works, the deleteContact method, i know because when you delete the contact, it does indeed get removed BUT it won't be gone from the list and when you restart the app, it will crash, the app will also crash when you click the contact after deleting. I think that is because of what @kykrueger told me about.
Now, i remember @kykrueger saying that this is because the contact has an open thread so it will keep the name of user in the list but not as a contact but a name related to an open thread, i was also told that i would need to search any open threads and delete the user from said thread before deleting the contact BUT that is where I'm struggling because i don't think i am quite getting how to do that at all!
So if possible, i either need to know exactly how to search current threads and then delete them or like before, post the code that i am currently using and wait to see if any of you (when you have the time of course) can use to the code and tweak it to get it to work!
Ryan

deleteContact method in BUser.class
   `@Override
    public void deleteContact(BUser user) {
    List contactLinkList = getContactLinks();

    ContactLink contactLink = new ContactLink();
    // Set link owner
    contactLink.setLinkOwnerBUser(this);

    contactLink.setLinkOwnerBUserDaoId(this.getId());

    contactLink.setBUserDaoId(user.getId());

    daoSession.delete(user);

    myDao.delete(user);

    contactLinkList.remove(user);

    this.update();
}`

Exactly how i use the method
       ` if (onItemLongClickListener != null) {
        listView.setOnItemLongClickListener(onItemLongClickListener);
         } else
        listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, final    long id) {
                final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                String[] items = {"Delete Contact"};
                builder.setItems(items, new DialogInterface.OnClickListener() {
                @Override
                 public void onClick(DialogInterface dialog, int which) {
                 final BUser currentUser =     BNetworkManager.sharedManager().getNetworkAdapter().currentUserModel();

                 final BUser clickedUser = DaoCore.fetchEntityWithEntityID(BUser.class,  adapter.getItem(position).getEntityID());

                        List<BThread> openThreadList = BNetworkManager.sharedManager().getNetworkAdapter().currentUserModel().getThreads(BThread.Type.Private);

                        if(openThreadList.contains(clickedUser)) {
                            openThreadList.remove(clickedUser);
                            currentUser.deleteContact(clickedUser);
                            loadSourceUsers();
                        }else{
                            currentUser.deleteContact(clickedUser);
                           loadSourceUsers();
                        }
                    }

                });
              builder.show();
                return false;
            }
        });`

Hi,
I think the problem is that you are deleting the user. The app stores a lot of users and these should never be deleted because they are needed in the threads. But it keeps track of the contacts using the ContactLink object.
You should remove these lines:
    daoSession.delete(user);
    myDao.delete(user);

And remove the contact links instead. Look at how contacts are displayed:
// BUser.java

    public List<BUser> getContacts() {
        List<BUser> contactList = new ArrayList<>();
        List<ContactLink> contactLinks;
        // For some reason the default ContactLinks do not persist, have to find in DB

        contactLinks = DaoCore.fetchEntitiesWithProperty(ContactLink.class,
                ContactLinkDao.Properties.LinkOwnerBUserDaoId, this.getId());
        for (ContactLink contactLink : contactLinks){
            contactList.add(contactLink.getBUser());
        }

        return contactList;
    }

I had a go but still can't get it too work!
BUser.class
@Override     public void deleteContact(BUser user) {         List<BUser> contactList = new ArrayList<>();         List<ContactLink> contactLinks;         List contactLinkList = getContactLinks();         // For some reason the default ContactLinks do not persist, have to find in DB         contactLinks = DaoCore.fetchEntitiesWithProperty(ContactLink.class,                 ContactLinkDao.Properties.BUserDaoId, this.getId());         resetContactLinks();         for (ContactLink contactLink : contactLinks){             user = contactLink.getBUser();             contactLinks.remove(user);             contactLinkList.remove(user);             contactList.remove(user);             contactLink.update();         }     }
It is highly likely that I've not understood again but i am also running on little sleep so it is to be expected lol

It looks to me like now you're deleting the user from the contact link. The database schema looks like this:
User 1
    - Contact Link (with User 2)
    - Contact Link (with User 3)

I think what you are doing will result in something like:
User 1
    - Contact Link (with null)
    - Contact Link (with User 3)

If you set the contact owner to null that would solve your problem but you would end up with an orphan link.
contactLink.setLinkOwnerBUser(null);

I think you need to do something like this:
    // Added to BUser.java
    @Override
    public void removeContact(BUser contactUser) {
        if (newContact.equals(this))
            return;

        // Retrieve contacts
        List contacts = getContacts();
        // Check if user is already in contact list
        if ( !contacts.contains(newContact)) return;

        // refresh contact list before updating
        resetContactLinks();
        List contactLinkList = getContactLinks();

        for (ContactLink contactLink : contacts){
            user = contactLink.getBUser();
            if(user.equals(contactUser)) {
                contactLink.setBUser(null);
                contactLink.setLinkOwnerBUser(null);
                myDao.delete(contactLink);
                break;
            }
       }
        this.update();
    }

I've not tested this code but it should be pretty much correct.

hey hi, please will you specify how you maintain the user messages when turning off network services if i try to send message when network services are unavailable the message will show on the UI fragment but how you maintained that data when i close the app and turn on network service the data will show on the Ui, any help will be appreciated.

I couldn't get it to work, there were problems with for (ContactLink contactLink : contactLinkList) along with myDao.delete(contactLink); because it needs to be a BUser to delete.
I have decided that i will have to give up for the time being to give up trying to do it because it is really holding back the release but i am very desperate to have this feature added so depending on how much it would cost and if you can guarantee that the work would be carried out quickly, i may have to pay for either you or one of the team to add it for me, even it's just for me.
I haven't got much money to spare as i was sacked from my job about a month or 2 ago and I'm still living on the holiday pay that i got so I'll only be able to go up to £50 but, I'd ideally want that to under that figure!
So yes, if it will be possible then please let me know because at the moment I'm worried that i will end up losing a lot of users or end up with loads of bad reviews because of it!
Also this isn't overly important right now but do you think you will ever add a function to block users from the contact list?
Thanks

Hi!
I think you are almost there, and I have another suggestion before we talk about making this a paid project (since it seems so close!).
There is a problem with the suggestion to use ´myDao.delete(contactLink)´ from the BUser class. This is because you want to delete the myDao variable for the ContactLink and not the BUser. Conveniently there is a method for this.
To use it, you should replace
myDao.delete(contactLink);

with
contactLink.delete();

Realistically we should never have to touch the myDao object since it is a byproduct of greenDAO that is meant to be abstracted away with these delete functions (which are generated for every greenDAO entity).
What is the other problem you are having with the list? If you clarify I could try to help!

Right this is what i have at the moment
  @Override
    public void deleteContact(BUser user) {
    List contacts = getContacts();
    List<BUser> contactList = new ArrayList<>();
    List<ContactLink> contactLinks;
    contactLinks = getContactLinks();

    for (ContactLink contactLink : contactLinks){
        user = contactLink.getBUser();
        contactLink.setBUser(null);
        contactLink.setLinkOwnerBUser(null);
        contactLink.delete();

       // I don't know if this is needed but i added it just so i could try to make the contact was removed
        contactLinks.remove(user);
        contactList.remove(user);
        contacts.remove(user);
        break;
    }
}

But still nothing!
I also have an idea of how we can let a user block a contact from the contacts list using followers
Thanks

So this is the closet I've gotten so far. Right now when you go to delete the contact, it will remove the whole list instead of the selected contact but when you close the app completely and start it again, all the contacts re-appear!
I feel like all i need right now is just a line or two more then it will work.
    @Override
    public void deleteContact(BUser user) {
    BUser currentUser = BNetworkManager.sharedManager().getNetworkAdapter().currentUserModel();
    List<BUser> contactList = currentUser.getContacts();
    List<ContactLink> contactLinks;

    contactLinks = DaoCore.fetchEntitiesWithProperty(ContactLink.class,
            ContactLinkDao.Properties.LinkOwnerBUserDaoId, this.getId());

    for (ContactLink contactLink : contactLinks){
        contactLink.setBUser(null);
        contactLink.setLinkOwnerBUser(null);
        contactLink.delete();
        contactList.remove(user);
    }
    this.update();
}

I tried to implement all of the suggestions that I've had so far and that it what i have come up with

Your deleteContact method looks good, but you dropped if(user.equals(contactUser)) you need to put this statement back to make sure you are only deleting your target user.
Furthermore, the users are still likely getting added back to the list due to open private chats. Are you still removing the threads like this,

        final BUser clickedUser = DaoCore.fetchEntityWithEntityID(BUser.class,  adapter.getItem(position).getEntityID());

        List<BThread> openThreadList = BNetworkManager.sharedManager().getNetworkAdapter().currentUserModel().getThreads(BThread.Type.Private);
        if(openThreadList.contains(clickedUser)) {
            openThreadList.remove(clickedUser);
            currentUser.deleteContact(clickedUser);
            loadSourceUsers();
        }else{
            currentUser.deleteContact(clickedUser);
            loadSourceUsers();
        }

Take a look at how the threads were being removed here. You retrieve your list of threads, and you are checking if the list contains a user. This will always enter the else portion of your if statement since the list of threads does not contain and user objects.
What you need to fix this to do is loop through each of the open threads, and check that object for the users instead. And when you find a thread containing that user, you need to make the active user leave the thread.
    for (BThread thread : openThreadList) {
        // Do nothing if the target user is not in the thread.
        if ( ! thread.hasUser(clickedUser) continue;

        // Leave the thread.
        BNetworkManager.sharedManager().getNetworkAdapter().deleteThread(thread);
        // Remove it from the current list for completeness.
        openThreadList.remove(thread);
    }

   // Finish deleting the contact like before.
   currentUser.deleteContact(clickedUser);
   loadSourceUsers();

However, with all of this working, there is still a bit of a user experience quirk. The other user will still see the thread, and might try sending messages. These messages will not be received by the user who deleted them. Maybe that is the desired experience, but if that user then deletes the chat, and opens a new one, it could start a new chat that does function, and re-adds the user.
Furthermore, private group chats that contain this user will be left instead of kicking the user!
Hope this helps,
-- Kyle

Still not working, i honestly don't know what else to try now!
ChatSDKAbstractContactsFragment.java
      BUser currentUser =    BNetworkManager.sharedManager().getNetworkAdapter().currentUserModel();
       BUser clickedUser = DaoCore.fetchEntityWithEntityID(BUser.class,  adapter.getItem(position).getEntityID());
                        List<BThread> openThreadList = BNetworkManager.sharedManager().getNetworkAdapter().currentUserModel().getThreads(BThread.Type.Private);
        for (BThread thread : openThreadList) {
        // Do nothing if the target user is not in the thread.
         if (!thread.hasUser(clickedUser)) continue;
         // Leave the thread.
         BNetworkManager.sharedManager().getNetworkAdapter().deleteThread(thread);
          // Remove it from the current list for completeness.
         openThreadList.remove(thread);
         }
          // Finish deleting the contact like before.
         currentUser.deleteContact(clickedUser);
         loadData();
                    }
                });
              builder.show();

BUser.java
   @Override
   public void deleteContact(BUser user) {
    // Retrieve contacts
    List contacts = getContacts();
    // refresh contact list before updating
    resetContactLinks();

    contactLinks = DaoCore.fetchEntitiesWithProperty(ContactLink.class,
            ContactLinkDao.Properties.LinkOwnerBUserDaoId, this.getId());

    for (ContactLink contactLink : contactLinks){
        if(user.equals(this)) {
            contactLink.setBUser(null);
            contactLink.setLinkOwnerBUser(null);
            contactLink.delete();
            contacts.remove(user);
        }
    }
    this.update();
}

I also run into this error when i try to delete the contact at the end of the list:
      E/AndroidRuntime: FATAL EXCEPTION: main
                                                                  Process: com.skintmedia.voice, PID: 11237
                                                                  java.util.ConcurrentModificationException
                                                                      at java.util.ArrayList$ArrayListIterator.next(ArrayList.java:573)
                                                                      at com.braunster.chatsdk.fragments.abstracted.ChatSDKAbstractContactsFragment$4$1.onClick(ChatSDKAbstractContactsFragment.java:444)

Ok,
First things first, can you clarify this error? Is it only happening when you try to delete the user at the end of the contact list, or do you mean it happens every time when you try to delete the user after it has went through the list of threads?
As for not working, is it still that the users are being added back after re-starting the app, or is the delete operation failing all together?
I don't think it will take much more time, and I am happy to continue providing support like this, but if you are working on a deadline I suggest we work out a quote for priority support hours. With that we could arrange a few hours to work together on the problem. Please follow through at our support email<EMAIL_ADDRESS>for a quote if you are interested.
-- Kyle

Every time i try to delete the user after it has went through the list of threads and it's failing all together unfortunately.
Right now i don't have a deadline, just a goal to get the app released but as it stands i will need to release the app even without the ability to delete contacts and then just add it as soon as possible afterwards

Hi Ryan,
You managed to delete all the contacts previously. I think that if you added in the conditional statement, you could just delete one contact. You probably need to delete this line:
// UserAddedListener.java
// Users that are members of threads are shown in contacts
currentUser.addContact(bUser);

It will automatically create a contact for each user the current user has a thread with.

Right 2 things, 1. you are an absolute legend! i didn't even know the file existed and what you suggested works! 2. I'm still unable to only delete the one contact, i have tried so far  if(this.equals(user)), if(user.equals(user), if(this == user) and i also tried if(user != null) but they haven't worked!
One thing i do need to know is if the code i am using to get the clicked user is in fact working correctly.
 `BUser currentUser = BNetworkManager.sharedManager().getNetworkAdapter().currentUserModel();
  BUser clickedUser = DaoCore.fetchEntityWithEntityID(BUser.class,    adapter.getItem(position).getEntityID());

 currentUser.deleteContact(clickedUser);`

Thanks
Ryan

Quick update! I can now successfully delete contacts!! I'd like to thank all of you for your help!
Here's the final code just in case you want to add it to the SDK:
 // ChatSDKAbstractContactsFragment.java

 BUser currentUser = BNetworkManager.sharedManager().getNetworkAdapter().currentUserModel();
 BUser clickedUser = DaoCore.fetchEntityWithEntityID(BUser.class, adapter.getItem(position).getEntityID());

 List<BThread> openThreadList = BNetworkManager.sharedManager().getNetworkAdapter().currentUserModel().getThreads(BThread.Type.Private);
  for (BThread thread : openThreadList) {
  if(!thread.hasUser(clickedUser)) continue;

   BNetworkManager.sharedManager().getNetworkAdapter().deleteThread(thread);

   openThreadList.remove(thread);
            }
   currentUser.deleteContact(clickedUser);
   loadDataOnBackground();
                    }

  // BUser.java

  @Override
public void deleteContact(BUser user) {
    // Retrieve contacts
    List contacts = getContacts();
    // refresh contact list before updating
    resetContactLinks();

    contactLinks = DaoCore.fetchEntitiesWithProperty(ContactLink.class,
            ContactLinkDao.Properties.BUserDaoId, user.getId());

    for (ContactLink contactLink : contactLinks){
        if(contactLinks != null) {
            contactLink.setBUser(null);
            contactLink.setLinkOwnerBUser(null);
            contactLink.delete();
            contacts.remove(user);
        }
        }
    resetContactLinks();
}

 // BUserEntity.java

 public abstract void deleteContact(BUser user);

Like Ben said, remove
 // UserAddedListener.java
// Users that are members of threads are shown in contacts
currentUser.addContact(bUser);

And that's it, done!
Thanks again
Ryan


Delete .devcontainer directory

Looks like this was created by accident, closing. If needed, feel free to reopen with more details, thank you!


Bug: no output from plotter when querying plotter help file

Please tell us what you were doing! You can include code and files by drag and dropping them into the text area.
When mousing (and clicking/dragging) over the plotter in the plotter help file, no coordinates are output.  This is using the most recent release, I haven't tried compiling the current source.
What was the expected result?
I expected the coordinates to show up in the list box at step (3).
What was the actual result?
Nothing appeared in the list box connected to the plotter.
What operating system were you using?
Mac
Operating system version
MacOS 12.7.3
FluCoMa Version
1.0.6

Hello!
have you tried the nightly builds? it is corrected now but please confirm:
https://github.com/flucoma/flucoma-pd/releases

Thanks, I tried the nightly build and it's the same - the "modified date" on everything in the help folder is still 29 March 2023.  I've tried the xy.pd file used in the plotter query help patch and I can't get coordinates out of it.

Ooops, hold on!  I'm downloading again and this time it really looks like the nightly build.  Not sure what happened last time.  Apologies!

The nightly build works!  Thanks so much.

it was a bug introduced by Pd update. I'm about to do the official merge for a release but the nightlies are a good up to date contender.


Transcribe on GPU

Idealy, log_mel_spectrogram() should use model.device when transcribing.

benchmarks ?

I am not sure that this is a valuable change.
While it is not a robust benchmark, I did do an experiment on my local machine.
10x log_mel_spectrogram() on a 177min audio file:
CPU:
  mean: 0.948
  std_dev: 0.208

GPU:
  mean: 2.67
  std_dev: 1.20

Machine specs:

CPU: i5-13500HX
GPU: GeForce RTX 4050 Laptop GPU

Note: The audio takes ~30s to load and ~330s to transcribe, so the difference of one or two seconds seems largely moot regardless.

What is important is that the device specified in load_model() should be used when transcribing, rather than the actual benchmark result.

@take0x, I was using my GPU to transcribe.

What is important is that the device specified in load_model() should be used when transcribing, rather than the actual benchmark result.
The device specified is used to transcribe. The log_mel_spectrogram() computation, which is a preprocessing step and NOT part of the NN model, defaults to using the CPU.

I think most consumers of the code would say "the fastest device available should be used to create the mel spectrogram." Given the nature of the computation, a CPU's almost always going to be the faster device (and should therefore be the default), despite the device on which the NN (a very different computation) runs.
You're more likely to get a PR approved if it included an optional mel_spectrogram_device parameter that allows that computation to be run on a specific device, but even then... I'm not sure this has much value compared to the noise of adding another parameter.

@kittsil
Thank you for your advice.
In my case, when transcribing large amounts of audio data, there have been cases where the process crashed on the CPU but could be processed normally on the GPU. I think it would be useful to be able to transcribe using devices other than a CPU.
I'll try adding the mel_spectrogram_device parameter based on your advice.


Unable to get messages from history

My code:
client.searchHistory({
<EMAIL_ADDRESS>   rsm: {
   max: 10,
   before: true
   }
 })

I get:

No message or body :confused: Even inside forwarded object.
But in log I can see raw xml:

In that raw log, there is:
<message xmlns="" ...

That missing namespace is what is causing the problem. Which server are you using for MAM?

openfire

I think it's a bug of MAM plugin of opefire.
@legastero I would appreciate toward a direction for workarounds to get going until they fix it.

Hi,
I'm currently facing the same issue, but I am not sure the problem comes from openfire and its plugin, since in the admin console, you can access the messages.
If you find a workaround or how to solve this, thank you in advance for letting me know!

Still haven't figured this out yet 😞
@Ghost-cruiser what is your openfire version?

Might be this igniterealtime/Openfire#544

I'm using Openfire 4.0.2 with Monitor service 1.5.1 (I think the fix was integrated in this release)

Can you paste you raw incoming here?

50urn:xmpp:mam:0

Erf, sorry : "50urn:xmpp:mam:0"

I think it's the search query.
Can you paste incoming? Like mine on the top?

Sorry, I'm a beginner (apprentice), is that what you're asking me? (intercepted with fiddler)

@Ghost-cruiser yes. Same issue. Namespace missing.

This is a bug in Openfire's Monitoring plugin. We're tracking it in https://igniterealtime.org/issues/browse/OF-1132
I've submitted a fix in https://github.com/igniterealtime/Openfire/pull/582 which should be available in the upcoming 1.5.4 release of the Monitoring plugin.

@guusdk thanks 🎅 !

Sure thing. Thanks for the debugging :)


Notebooks should be rerun in CI or periodically

This would help catch bugs like #273 when they are introduced.

Note: For a first pass, we can just run the tutorial notebook(s) using pytest --nbval-lax docs/source/tutorial_i.ipynb

@rfl-urbaniak , any update on this? I'm happy to take it on if you're busy.

Running into deadlines on other projects and so postponing all the time. Apologies. Will focus on this on Wednesday once a Tuesday deadline in another project is met.


Day48: Max Consecutive Ones III - SlidingWindow

Max Consecutive Ones III
https://leetcode.com/problems/max-consecutive-ones-iii/
Given a binary array nums and an integer k, return the maximum number of consecutive 1's in the array if you can flip at most k 0's.

Example 1:
Input: nums = [1,1,1,0,0,0,1,1,1,1,0], k = 2
Output: 6
Explanation: [1,1,1,0,0,1,1,1,1,1,1]
Bolded numbers were flipped from 0 to 1. The longest subarray is underlined.
Example 2:
Input: nums = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], k = 3
Output: 10
Explanation: [0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1]
Bolded numbers were flipped from 0 to 1. The longest subarray is underlined.


[Crash]: Failed to load

Mod Loader (Required)
NeoForge
Minecraft Version(s) (Required)
1.21.1
Mod Version(s) (Required)
21.1.1
Minimal Setup
Yes
Notes (Required)
1 I just open up the Game
2 I get

I have restarted, cleared logs and cash and config, I also tried making a new profile with just the mods and it still crashes
Crash Report (Required)
https://gist.github.com/DannyDraconis/12b65494490ba86e39e45404daee64f6
latest.log (Optional)
No response

Fixed in v21.1.2 thanks!


remove api call and just use data from window.instagrid

https://github.com/BlueBiteLLC/system-experiences/issues/74


Update storage location to use the New Theme

Resolves #887

Description

Made changes to the app/views/storage_locations/show.html.erb
Type of change

Layout

How Has This Been Tested?

Manually

Screenshots

Hey @felipelovato looks great but it doesn't look like you are using hte full page. Can you look through your divs to make sure oyu didn't miss one (or have one too many?)

Hey @felipelovato looks great but it doesn't look like you are using hte full page. Can you look through your divs to make sure oyu didn't miss one (or have one too many?)

Hi! I'll look for that.

Awesome! Looks great, thank you so much!


Move the bucket var in the docs

This will show what values can be put (specifically gs://) in the name at https://astro-sdk-python.readthedocs.io/en/stable/astro/sql/operators/export.html

@feluelle Pre-commit hook locally and on CI have a different opinion on isort -- do you know why?

@feluelle Pre-commit hook locally and on CI have a different opinion on isort -- do you know why?

I can see an open issue https://github.com/PyCQA/isort/issues/1889 in isort repo

It seems you based your branch on an old commit. The changes made by pre-commit.ci are already in main.


PR: Resize dataframeeditor header to contents

Description of Changes

[ ] Wrote at least one-line docstrings (for any new functions)
[ ] Added unit test(s) covering the changes (if testable)

[x] Included a screenshot or animation (if affecting the UI, see Licecap)

Issue(s) Resolved

Fixes #9996
Affirmation
By submitting this Pull Request or typing my (user)name below,
I affirm the Developer Certificate of Origin
with respect to all commits and content included in this PR,
and understand I am releasing the same under Spyder's MIT (Expat) license.

I certify the above statement is true and correct: dalthviz

Hello @dalthviz! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file spyder/app/tests/test_mainwindow.py:

Line 1825:1: E302 expected 2 blank lines, found 1
Line 1888:1: E302 expected 2 blank lines, found 1


Fix flaky test cases in keyspace_test.go

We expired a key with 1 second which is too short for testing the expiration time,
because Metadata::ExpireMsToS function will use rounding to get a closer time value if
METADATA_64BIT_ENCODING_MASK was disabled.
We simply fix this by increasing the expiration time to 2 seconds.
Refer: https://github.com/apache/kvrocks/blob/unstable/src/storage/redis_metadata.cc#L248
This closes #2091

Metadata::ExpireMsToS function will use rounding to get a closer time value if
METADATA_64BIT_ENCODING_MASK was enabled.

I think this function will not be used in the 64bit encoding mode?

Metadata::ExpireMsToS function will use rounding to get a closer time value if
METADATA_64BIT_ENCODING_MASK was enabled.

I think this function will not be used in the 64bit encoding mode?

Yes, it's a typo in the comments. Should be disabled instead of the enabled.


Update to uhub 3.0.0

Unfortunately, I get an error while running the tests with both 3.0.0 and 3.1.0 version of uhub.
API tests LocalUtils .status should return list of changed files:
     Error: Error 404: 404 page not found

cc @AaronO

My bad, the breaking change for 3.0.0 is exactly that. /status becomes /local/status


fix: ClrAccordionModule and ClrStepperModule missing from default exports

PR Checklist
Please check if your PR fulfills the following requirements:

[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)
[ ] If applicable, have a visual design approval

There doesn't appear to be tests for barrel exports.
PR Type
What kind of change does this PR introduce?

[x] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] CI related changes
[ ] Documentation content changes
[ ] clarity.design website / infrastructure changes
[ ] Other... Please describe:

What is the current behavior?

Currently we cannot import the ClrAccordionModule independently (import { ClrAccordionModule } from '@clr/angular'). We have to import the entire clarity package. I've added the module as an export to keep consistency with other features.
Issue Number: N/A
What is the new behavior?
import { ClrAccordionModule } from '@clr/angular'
import { ClrStepperModule } from '@clr/angular'
Does this PR introduce a breaking change?

[ ] Yes
[x] No

Other information

Thanks @ashpr for the fix! Can you squash your commits so we can get it merged soon?

No problem at all. Squashed :)


It's not possible to run with not the .NET 8.0.100

I installed the latest version of .net and tried to run this application, but it requires a preview version of .NET 8
To solve this, I changed global.json and chose version 8.0.100
Here's the global.json file
{
  "sdk": {
    "version": "8.0.100",
    "rollForward": "latestPatch",
    "allowPrerelease": false
  }
}

Closed via referenced PR.


Can I use local images? and videos?

I am configuring a gallery that will receive an object with the location of images saved locally in my application, how can I call these?
and how i can add videos in the gallery?
 const images = [
    {
      id: 1,
      url: 'https://www.boredpanda.com/blog/wp-content/uploads/2018/05/cute-bumblebee-butts-2-5af05f96ce9fb__700.jpg',
    },
    {
      id: 2,
      url: 'https://www.boredpanda.com/blog/wp-content/uploads/2018/05/cute-bumblebee-butts-1-5af05f9474219__700.jpg',
    },
    {
      id: 3,
      url: 'https://i.imgur.com/u9eZ3Ws.gif',
    },
    {
      id: 4,
      url: 'https://www.youtube.com/watch?v=dsFpUW48Tnc&list=RDdsFpUW48Tnc&start_radio=1',
    },
    {
      id: 5,
      source: require('../../public/images/Mojito.jpg'),
    },
  ];

As i know, you can use renderCustomImage and return custom


[Q] allow renovate

I want to allow renovate bot to skip CLA but not using the bot* which I think is too board.
I have tried allowlist: renovate and allowlist: renovate[bot] both doesn't work.
What is the right value?

Hi @unional,
allowlist: renovate[bot] should work for you.
@laurent22, I have noticed that you have added renovate[bot] in your project. Could you please confirm if it works for you?

Yes. I think it is working now. That was a while back so I am can't remember what or when it starts working.

I confirm it works for me too


New maintainer

Are you still looking for a new mainteiner? I would like to keep the project up.

Yes I am! What would you like to contribute to the project?

The point is I need a software like this, instead of make one I prefer to
use yours and contribute to development. What are your needs now?
Em Qui, 11 de fev de 2016 17:05, contra<EMAIL_ADDRESS>escreveu:

Yes I am! What would you like to contribute to the project?
—
Reply to this email directly or view it on GitHub
https://github.com/contra/smog/issues/42#issuecomment-183012635.

Do you feel capable enough to fix some of these? https://github.com/contra/smog/issues


review and finalize metarepo

Hi @zacharyhirsch1, nice work on this! I understand you're close to publication. Can you take a moment to finish up this metarepo and make sure it is referenced in your paper (we can get a DOI for this too)? If there is an output dataset that isn't included here already, we should mint it on msdlive.org.
Let me know how I can help!

Hi @zacharyhirsch1, nice work on this! I understand you're close to publication. Can you take a moment to finish up this metarepo and make sure it is referenced in your paper (we can get a DOI for this too)? If there is an output dataset that isn't included here already, we should mint it on msdlive.org.
Let me know how I can help!

@thurber if we could meet on an upcoming Tuesday/Friday, I would love to refresh my memory on some of these final tasks here.. feel free to reach out<EMAIL_ADDRESS>thanks!


Card links in the cards' alignment inconsistent

In each card(Wish list, In process, Applied and completed) we have two links: Add new and view more.
The alignment of the links in all the cards are not consistent.

I am working on this issue.

Fixed this issue please check and close @niveditalodha

Issue fixed


Bump package_info_plus to 4.0.0

After upgrading flutter to 3.10 and device_info_plus to 9.0.0;
It started showing an error when running flutter pub get.
Error:
Because package_info_plus >=1.4.1 <1.4.3 depends on package_info_plus_windows ^1.0.5 which depends on win32 ^2.0.0, package_info_plus >=1.4.1 <1.4.3 requires win32 ^2.0.0.

And because package_info_plus ^1.4.3 depends on package_info_plus_windows ^2.0.0, package_info_plus ^1.4.1 requires win32 ^2.0.0 or package_info_plus_windows ^2.0.0.

Because package_info_plus_windows >=2.1.0 depends on win32 >=2.7.0 <4.0.0 and package_info_plus_windows >=2.0.0 <2.1.0 depends on win32 ^2.7.0, package_info_plus_windows >=2.0.0 requires win32 >=2.7.0 <4.0.0.

Thus, package_info_plus ^1.4.1 requires win32 >=2.0.0 <4.0.0.
And because flutter_app_version_checker >=0.3.1 depends on package_info_plus ^1.4.2, flutter_app_version_checker >=0.3.1 requires win32 >=2.0.0 <4.0.0.

And because device_info_plus 9.0.0 depends on win32 ^4.1.4 and no versions of device_info_plus match >9.0.0 <10.0.0, flutter_app_version_checker >=0.3.1 is incompatible with device_info_plus ^9.0.0.
So, because s1mobile depends on both device_info_plus ^9.0.0 and flutter_app_version_checker ^0.3.2, version solving failed.

The latest version of package_info_plus is currently 8.0.0... same issue again


Can I Use An AWS Event-Bridge As My Callback_url In My FulfillmentService?

Overview
As we'll be getting all our order notifications via this callback_url now, I'd like to move to EventBridge.
However, when trying to update the callback_url to my arn, I'm getting the following error:
ShopifyAPI::Errors::HttpResponseError ({"callback_url"=>["is invalid"]}) If you report this error, please include this id: b48ee742-7127-48c6-9edb-767849427fe4
I know my arn is right, because I'm using a similar one in production, BUT for a webhook and not inside my FulfillmentService.
For some details, my arn looks like this:
"arn:aws:events:us-east-1::event-source/aws.partner/shopify.com/XXXXX/ship-dev"
So can we use EventBridge inside a FulfillmentService?

Sounds like the answer is no.. I got a reply in the Shopify forums.


Action to restrict merging to the base branch from a head branch

This PR adds an action to do the following:

Accept as inputs the base branch name and the head branch name
If the event is a pull request, check the specified base and the head branch names to the actual ones and deny the PR if they don't match

Hey Sanchit, the code looks good .. just wondering, what was the usecase for this again? I remember you mentioned something regarding amplify


[SPARK-46462][PS][TESTS] Reorganize OpsOnDiffFramesGroupByRollingTests

What changes were proposed in this pull request?
Reorganize OpsOnDiffFramesGroupByRollingTests
Why are the changes needed?
for parallelism
Does this PR introduce any user-facing change?
no, test-only
How was this patch tested?
ci
Was this patch authored or co-authored using generative AI tooling?
no

Merged to master.
The tests already passed, and I just resolve the minor conflict.


Onboarding checklist after creating questionnaire

People are still struggling in transitioning from creating a questionnaire to creating a record. Use the onboarding checklist within the questionnaire page to attempt to improve the transition.

 Onboarding 2.0


enable smtp tls sending encryption

This enables postfix smtp tls send which allows it pass the check found at http://www.checktls.com/perl/TestSender.pl

Better, there should be a parameter, instead of hard-coding mtp_tls_security_level to encrypt.
A general solution would be setting postconf -e key:value pairs as in PR #40


How to select the Entity endpoints generated by Spring Data Rest?

Using v2.6.1 and following these instructions, I am able to get the search endpoints to show up, but not the entity endpoints, such as viewing a single value.
Using the following class to configure springfox:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfig {

  @Bean
  public Docket api() {

    return new Docket(DocumentationType.SWAGGER_2)
       .select()
       .apis(RequestHandlerSelectors.any())
       .paths(PathSelectors.any())
       .build()
       .apiInfo(buildMetadata());
  }

  private ApiInfo buildMetadata() {
    return new ApiInfoBuilder()
        .title("....")
        .description(".....")
        .version("1.0")
        .contact(new Contact("John Smith", null, "jsmith@example.com"))
        .build();
  }

}

I can see a ton of endpoints in Swagger, including really the only two that I want:

{My Type} Entity: Repository Entity Controller
{My Type} Entity Search: {My Type} Repository

I know that I can trim it down to just the Entity Search endpoints, by specifying the following to the Docket construction: .apis(RequestHandlerSelectors.basePackage({my-repository-class}.class.getPackage().getName())), where {my-repository-class} is the interface where I've defined my Repository, which is annotated with @RepositoryRestResource.
How do I select/specify the Entity Controller calls themselves, which is auto generated by Spring Data Rest?

By using the RequestHandlerSelectors#basePackage("org.springframework.data.rest.webmvc") predicate. If u want to combine the two you need to use the Predicates#or

Many thanks. That might be a good thing for the docs ;)

@pluttrell yr welcome. Would really appreciate if you be able to contribute to improving it via a PR!

I think to create a PR to integrate it in the docu. I'm just not sure on which section this shoud be. @dilipkrish what do you think?

@florianrusch where-ever you think it will be most helpful if you were to read through the documentation.


DESIGN.md :  clarification of exponents v base-dimensions

I believe that zero "exponents are elided" rule concerns exponent not base-dimension, so have modified parts where I think exponent rather than base dimension should apply

Also it is the base dimensions of the exponents that require to be totally ordered, rather than the exponents, so still room for improvement!


Difference to calamine?

Hey, this crate just popped up in my github explore page and it seems pretty similar to calamine. What does this crate do differently?
Info about this would be nice to have in the README too

Hi, kangalioo.
calamine is a read-only library.
umya-spreadsheet can be read, edited, and saved.
We will update the README in the next version update.

@kangalioo Calamine also only supports reading data as data and functions.
This crate also allows you to style it and draw graphs.

README has been updated.


Removed wrong check on null. Closes #128.

Removed wrong check as discussed in #128

Thanks @havenchyk
I'll merge it.


bug: Update swayfmt::Config & remove partial implementations

Closes #3472
What this does:

Removes use of Config options that were partially implemented
Fixes the default implementations for Config. This removes the match arms in the implementations of the CurlyBrace trait and just handles the default, eg ItemBraceStyle::SameLineWhere
Adds tests for items with where clauses, ie ItemImpl, ItemStruct, ItemTrait, which weren't being tested thoroughly enough
Updates to code quality in the Config, and documentation for the default config's options

Thanks @eureka-cpu. I feel like adding a doc comment specifying what each field defaults too is a little over kill, especially in places where the default impl is already specified by hand.
Are we able to remove these lines?

Nice simplification! I think there are some failing CI tests, but otherwise looks good!


Add Value::Struct variant and preserve struct names and formatting

This change adds a ~dreadful hack~creative workaround that allows us to distinguish between structs and maps during parsing and preserve struct names. It does so by abusing the size_hint method of the MapAccessor as a side channel that exposes information about the struct name and whether we are visiting a struct or a map. I am somewhat confident that, within the context of the current implementation, this is sound and won't unexpectedly blow up in our face. The CommaSeparated struct with the unusual size_hint method is passed directly to the ValueVisitor and drained before we return control flow to any serde code, so anything else that might call the size_hint method will just receive None values. I haven't confirmed this, but with some luck, size_hint will also get inlined after monomorphization and optimized into something efficient.
This makes progress towards https://github.com/ron-rs/ron/issues/122, fixes https://github.com/ron-rs/ron/issues/189, and fixes https://github.com/ron-rs/ron/issues/264.
This change has been arrived at by sheer power of will rather than any kind of understanding of serde so there may be a better solution. There are still some smaller issues with the PR, before fixing those I first wanted to check whether this has any hope of getting merged.

Sorry, I've been punting on reviewing this.
@torkleyy is this something you'd be comfortable reviewing?

So I did get this to work and am using it in https://github.com/cswinter/pyron to (de)serialize Python dataclasses as ron, but there are still some issues with this that I'm not sure yet if they can be fixed. Both the ValueVisitor used in the Deserialize implementation of Value, and the Deserializer fail to conform to the expected serde interface and are public which might cause some issues if you use them in combination with a different Deserialize/Deserializer.
Particularly, if you try to deserialize something else (e.g. yaml) into a ron::Value, the ValueVisitor won't behave correctly and do weird things if it receives size hints. We could possibly fix this by further changing the ron Deserializer to emit a sentinel value of usize::MAX as the first size_hint (which would never be emitted by a valid Deserializer) and allows the ValueVisitor to work normally if it doesn't see this sentinel. However, this would now break the Deserializer, and actually, my current implementation might already be broken for deserializing into structs. There could still be some way around this but I'm not sure yet if that's the way to go. It might be better to just write a new parser from scratch that is not tied to serde, which I'm considering anyway since it enables some other features that are not currently possible.
The serialization implementation that allows preserving struct names/tuples is in better shape. It requires some amount of code duplication, and unfortunately needs an explicit call to a new Value::to_string/to_pretty_string method so we can call our custom serialize method that doesn't quite work like the serde one, but I'm not away of any glaring soundness issues. It's a lot less useful with the corresponding deserialization code of course.

For now, my main use case for this is https://github.com/cswinter/pyron, which doesn't use ron in a way that would run into the remaining issues. I would like to fix this properly at some point but still need to decide on the right approach and exactly what features I want so I'm planning to just let this stew for a while. The main approaches I'm considering:

come up with one more clever idea to make this hack work
implement custom deserializer (and maybe also pretty printer) which isn't tied to serde
get serde to add some new methods for us that allow an implementation without hacks (I think this could be done in a way that doesn't break existing methods by adding alternative variants with dynamic lifetime etc. which have a default implementation that returns a specific error. Existing serializer would just never call these, and our serializer could call these to use the extra functionality when available, or revert to the current behavior for Deserializer/Deserialize implementations that don't support this functionality.)

If anyone has any other good ideas or opinions on how this should be approached I'd be glad to hear about them.

Sorry, I've been punting on reviewing this. @torkleyy is this something you'd be comfortable reviewing?

I might be able to next week, feel free to ping me if I forget.

@torkleyy ping

I've been thinking about a more AST-like Value type again and this is a sketch of what a NewValue might look like:
pub enum NewValue<S: std::borrow::Borrow<str>> {
    Unit,
    Bool(bool),
    Number(Number),
    Char(char),
    String(String),
    Bytes(Vec<u8>),
    List(Vec<NewValue<S>>),
    Map(NewMap<S>),
    NamedUnit {
        name: S,
    },
    Newtype(Box<NewValue<S>>),
    NamedNewtype {
        name: S,
        inner: Box<NewValue<S>>,
    },
    Tuple(Vec<NewValue<S>>),
    NamedTuple {
        name: S,
        elems: Vec<NewValue<S>>,
    },
    Struct {
        fields: FieldMap<S>,
    },
    NamedStruct {
        name: S,
        fields: FieldMap<S>,
    }
}

#[cfg(not(feature = "indexmap"))]
type NewMap<S> = std::collections::BTreeMap<NewValue<S>, NewValue<S>>;
#[cfg(feature = "indexmap")]
type NewMap<S> = indexmap::IndexMap<NewValue<S>, NewValue<S>>;

#[cfg(not(feature = "indexmap"))]
type FieldMap<S> = std::collections::BTreeMap<S, NewValue<S>>;
#[cfg(feature = "indexmap")]
type FieldMap<S> = indexmap::IndexMap<S, NewValue<S>>;

I think the biggest questions are:

how to represent Option, since the unwrap newtype variants feature includes Some and thus all of the following are allowed: None, Some(val), Some() = Some(()), Some(a, b) = Some((a, b)), and Some(a: a, b: b) = Some((a: a, b: b)). On a syntactic level, None is just a named ident and Some is just a named newtype / tuple / struct with special handling on serde's side
how to handle extensions - maybe we could support attributes more generally around every value subtree?
how to handle newtypes, since ron sometimes erases them

I've been thinking about a more AST-like Value type again

Is there any progress made on this?
I'd like to have lossless Value, which I can have multiple attempts at trying to deserialize from for untagged enums. Trying to make something like this work:
#[derive(Debug, serde::Serialize, serde::Deserialize)]
enum A {
    A1(String),
    A2(String),
}

#[derive(Debug, serde::Serialize, serde::Deserialize)]
enum B {
    B1(String),
    B2(String),
}

#[derive(Debug, serde::Serialize, serde::Deserialize)]
#[serde(untagged)]
enum MyEnum {
    A(A),
    B(B),
}

let value = MyEnum::A(A::A1("Hello, world!".to_string()));

// valid RON serializations are:
// A1("")
// A2("")
// B1("")
// B2("")

// works fine with serde_json
let json = serde_json::to_string_pretty(&value).unwrap();
dbg!(serde_json::from_str::<MyEnum>(&json).unwrap());

// but doesn't work with ron
let ron = ron::ser::to_string_pretty(&value, ron::ser::PrettyConfig::default()).unwrap();
dbg!(ron::de::from_str::<MyEnum>(&ron).unwrap());

Is there any progress made on this?

Not yet, unfortunately. Once I am back from parental leave, I will first tackle finally publishing v0.9, which includes a list of all the weird serde attribute cases that we currently cannot support because serde treats every format like JSON. If serde were to ever change that (and e.g. impl Trait in type aliases in traits makes that technically possible), an improved version of Ron’s Value type (as outlined above) would be used to fix most of these cases.
While it will take me a few more months to get back to this PR, feel free to implement something similar to my idea sketched out above (essentially an AST-like Value type that allows round trips of RON [without serde attributes] but is more an AST than a Value enum since e.g. named structs and enum variants are ambiguous in RON when we are not given type information by the user).


Add Obliterate Design Doc

Description
This adds a design doc for "obliterate" in merge-tree, an alternative to the removeRange API which has different merge semantics.
TODO: More fleshed out description, maybe move doc to "docs" folder.

@anthony-murphy I'm opening this up as a draft as I think I've thought through most of the really pressing problems (eventual consistency, reasonable asymptotics) of the obliterate feature request and want some sanity-checking on the scheme and claims that lie herein. Would appreciate any early feedback, any merge cases you think need more care, or areas that would be valuable to spend time in. (I called out some candidates myself)
@connorskees FYI for context, @jzaffiro to keep you in the loop in case you end up ramping up more on merge-tree (it's complex: I wouldn't expect to understand much at a cursory glance, so don't feel too intimidated if there's a lot of jargon in here)


Don't overwrite fields

This should fix a bug where a user uses codec => json and has
a field named "host" in this json. The bug is that logstash-forwarder
will send a "host" field along with every event, and the lumberjack
input would previously ignore any previous value for the "host" field.
This is also fixed for "file" and "offset" fields.
Fixes #24

Rebased against master. It still needs tests, though.


[doc] Fix tutorial configuration

Codecov Report

Merging #1306 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #1306   +/-   ##
=======================================
  Coverage   91.62%   91.62%
=======================================
  Files          83       83
  Lines       12498    12498
=======================================
  Hits        11451    11451
  Misses       1047     1047

Continue to review full report at Codecov.

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


Setup basic project with IDE + Github

Looking at Joda time: https://github.com/JodaOrg/joda-time/tree/main/src

src

main classes which will be accessed by public
/service
/dao
/dto
/Sql
/conf
/docs


Integrate Globalize with Angular

Hi folks
I'm trying to get Globalize running on Angular and it seems to me that it's not so easy. I haven't found any full examples on how to do that and only some incomplete samples.
Basically, I have the following component, but I always get the following error currencyFormatter is not a function:
import { Component } from "@angular/core";
import { AuthenticationService } from "../services/AuthenticationService";
import { Router } from "@angular/router";
import likelySubtags from "cldr-data/supplemental/likelySubtags.json";
import * as cldr from "cldrjs";
import * as Globalize from "globalize";

@Component({
  selector: "app-index",
  templateUrl: "./index.component.html",
  styleUrls: ["./index.component.css"],
})
export class IndexComponent {
  currency = 123;
  formattedCurrency = "";

  constructor(
    private router: Router,
    private authService: AuthenticationService
  ) {
    Globalize.load(likelySubtags);
    const formatter = new Globalize("de").currencyFormatter("USD");
    this.formattedCurrency = formatter(Math.PI);
  }

}

@eluchsinger Did you find a solution to this?


APT whitelist request for qtlocation5-dev

Needed for testing software using Qt5 and the QtLocation module.
The package is available by default on the Ubuntu Trusty bot.
http://doc.qt.io/qt-5/qtlocation-index.html

Duplicate of #2899.

Duplicate of #2899.

They are not the same package.

If you look at the PRs involved, you will see that they end up adding the same ones.

If you look at the PRs involved, you will see that they end up adding the same ones.

Indeed, missed that. My apologies.


Typo soucreRect to sourceRect

https://github.com/fluttercandies/extended_image/blob/f65ce8f5dd37b3d54d14422adf31e40a98c435f0/lib/src/image/extended_raw_image.dart#L35
https://github.com/fluttercandies/extended_image/blob/f65ce8f5dd37b3d54d14422adf31e40a98c435f0/lib/src/image/extended_raw_image.dart#L172
https://github.com/fluttercandies/extended_image/blob/45491e5e1f0dea8a9b105c23b05a9f4de7824e45/lib/src/image/extended_render_image.dart#L32
and other places

thanks, i will correct it.


[Bug]: Duckdb - If you send it a Date some kind of setTimestamp() prepared function fails.

Apache Hop version?
2.7
Java version?
17
Operating system
Windows
What happened?
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - Prepared statement : INSERT INTO main.book_data (author, publisher, genre, title, publish_date) VALUES ( ?,  ?,  ?,  ?,  ?)
2023/12/21 17:51:47 - duckdb - Rollback on database connection [duckdb]
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - ERROR: Because of an error, this transform can't continue:
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - ERROR: org.apache.hop.core.exception.HopException:
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - Error inserting row into table [book_data] with values: [Ms. Damion Feest], [Carlton Books], [Biography/Autobiography], [From Here to Eternity], [1981-03-23 12:26:15]
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 -
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - offending row : [author String(150)], [publisher String(150)], [genre String(150)], [title String(150)], [publish_date Date]
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 -
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - Error setting value #5 [Date] on prepared statement
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - setTimestamp
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 -
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 -
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 -
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - 	at org.apache.hop.pipeline.transforms.tableoutput.TableOutput.writeToTable(TableOutput.java:383)
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - 	at org.apache.hop.pipeline.transforms.tableoutput.TableOutput.processRow(TableOutput.java:117)
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - 	at org.apache.hop.pipeline.transform.RunThread.run(RunThread.java:55)
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - 	at java.base/java.lang.Thread.run(Thread.java:840)
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - Caused by: org.apache.hop.core.exception.HopDatabaseException:
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - offending row : [author String(150)], [publisher String(150)], [genre String(150)], [title String(150)], [publish_date Date]
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 -
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - Error setting value #5 [Date] on prepared statement
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - setTimestamp
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 -
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 -
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - 	at org.apache.hop.core.database.Database.setValues(Database.java:922)
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - 	at org.apache.hop.pipeline.transforms.tableoutput.TableOutput.writeToTable(TableOutput.java:250)
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - 	... 3 more
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - Caused by: org.apache.hop.core.exception.HopDatabaseException:
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - Error setting value #5 [Date] on prepared statement
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - setTimestamp
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 -
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - 	at org.apache.hop.core.row.value.ValueMetaBase.setPreparedStatementValue(ValueMetaBase.java:5693)
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - 	at org.apache.hop.core.database.Database.setValue(Database.java:905)
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - 	at org.apache.hop.core.database.Database.setValues(Database.java:920)
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - 	... 4 more
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - Caused by: java.sql.SQLFeatureNotSupportedException: setTimestamp
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - 	at org.duckdb.DuckDBPreparedStatement.setTimestamp(DuckDBPreparedStatement.java:770)
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - 	at org.apache.hop.core.row.value.ValueMetaBase.setPreparedStatementValue(ValueMetaBase.java:5644)
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - 	... 6 more
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - Signaling 'output done' to 0 output rowsets.
2023/12/21 17:51:47 - write book data - prepared statement setTimedate() for duckdb fails.0 - Signaling 'output done' to 0 output rowsets.
2023/12/21 17:51:47 - duckdb - Rollback on database connection [duckdb]
2023/12/21 17:51:47 - duckdb - Commit on database connection [duckdb]
2023/12/21 17:51:47 - duckdb - Connection to database closed!
The outgoing data would have looked like this.

Issue Priority
Priority: 1
Issue Component
Component: Transforms

inserting_dates_for_duckdb_fail.zip
Reproduction pipeline attached


bugfix: fix process id not found in kill command

Signed-off-by: xiechengsheng<EMAIL_ADDRESS>
Ⅰ. Describe what this PR did
Fix process id not found in kill command
Ⅱ. Does this pull request fix one issue?

none
Ⅲ. Describe how you did it
add "not found error" in err, and we can know that this "process id not found error" occurs because the container task has been stopped by client signal
Ⅳ. Describe how to verify it
Ⅴ. Special notes for reviews

Without this pull request, there is a bug in code, however the integration test has not detected this. So we could have a conclusion we miss a test case for this bug.
WDYT? @xiechengsheng
How about adding one?

Emmm, it seems difficult to reproduce this "process id not found error......". But I'll have a try.

Emmm, this error occurs because the container task is released but at the same time we want to get the container task status. IMO, this error will occur randomly without this pr. So the basic tests in PouchKillSuite.TestKillWorks and APIContainerKillSuite.TestKillOk do this thing for us. And from your screenshot we could see this error occurs just after client creates a busybox container. So my opinion is that this bug will occur randomly, but int the CI test, this bug not occurs luckily. WDYT?

Codecov Report

Merging #1526 into master will increase coverage by 0.07%.
The diff coverage is 60%.

@@            Coverage Diff             @@
##           master    #1526      +/-   ##
==========================================
+ Coverage   40.75%   40.82%   +0.07%
==========================================
  Files         256      256
  Lines       16756    16759       +3
==========================================
+ Hits         6829     6842      +13
+ Misses       9048     9040       -8
+ Partials      879      877       -2

Impacted Files
Coverage Δ

ctrd/container.go
52.32% <60%> (+2%)
:arrow_up:

daemon/mgr/container.go
49.14% <0%> (+0.08%)
:arrow_up:

daemon/mgr/network.go
69.43% <0%> (+0.48%)
:arrow_up:

ctrd/watch.go
78.12% <0%> (+3.12%)
:arrow_up:

Yes, you are right. If the container task is killed by kill command, we could get exit status immediately, but if the container task is still alive after receiving kill command(eg, some signal which won't kill container, SIGWINCH...), in ProbeContainer we should wait timeout error occurs. WDYT?

Yes, how about at a timeout for Kill API, if timeout, we just return a timeout error

No, I think we should just catch this timeout error and do nothing, the timeout error occurs just because this client signal doean't kill container(task).


CI: add a job with address sanitizer enabled

this enables additional job which runs unittests with address sanitizer
I think the most interesting thing found
2024-05-04T22:10:46.1544435Z ==59390==ERROR: AddressSanitizer: global-buffer-overflow on address 0x55b0c8c8a7cb at pc 0x55b0c8c1ed97 bp 0x7ffdb5f65bb0 sp 0x7ffdb5f65380
2024-05-04T22:10:46.1545346Z READ of size 1000 at 0x55b0c8c8a7cb thread T0
2024-05-04T22:10:46.1546236Z     #0 0x55b0c8c1ed96 in __asan_memcpy (/home/runner/work/xrdp/xrdp/tests/common/.libs/test_common+0xc9d96) (BuildId: 9f39a5cdc888caba15ef79957b3f1e399b300649)
2024-05-04T22:10:46.1547615Z     #1 0x7f4d874bff8a in split_string_append_fragment /home/runner/work/xrdp/xrdp/common/list.c:355:5
2024-05-04T22:10:46.1548568Z     #2 0x55b0c8c5d112 in test_list__append_fragment_fn /home/runner/work/xrdp/xrdp/tests/common/test_list_calls.c:162:20
2024-05-04T22:10:46.1549742Z     #3 0x55b0c8c75a88 in srunner_run_tagged (/home/runner/work/xrdp/xrdp/tests/common/.libs/test_common+0x120a88) (BuildId: 9f39a5cdc888caba15ef79957b3f1e399b300649)
2024-05-04T22:10:46.1550808Z     #4 0x55b0c8c5aa80 in main /home/runner/work/xrdp/xrdp/tests/common/test_common_main.c:73:5
2024-05-04T22:10:46.1551781Z     #5 0x7f4d87029d8f  (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f) (BuildId: 962015aa9d133c6cbcfb31ec300596d7f44d3348)
2024-05-04T22:10:46.1552842Z     #6 0x7f4d87029e3f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e3f) (BuildId: 962015aa9d133c6cbcfb31ec300596d7f44d3348)
2024-05-04T22:10:46.1553990Z     #7 0x55b0c8b9cc24 in _start (/home/runner/work/xrdp/xrdp/tests/common/.libs/test_common+0x47c24) (BuildId: 9f39a5cdc888caba15ef79957b3f1e399b300649)
2024-05-04T22:10:46.1554681Z
2024-05-04T22:10:46.1558649Z 0x55b0c8c8a7cb is located 21 bytes to the left of global variable '<string literal>' defined in 'test_list_calls.c:159:5' (0x55b0c8c8a7e0) of size 18
2024-05-04T22:10:46.1559605Z   '<string literal>' is ascii string 'fragment_ret == 1'
2024-05-04T22:10:46.1560588Z 0x55b0c8c8a7cb is located 0 bytes to the right of global variable '<string literal>' defined in 'test_list_calls.c:155:31' (0x55b0c8c8a7c0) of size 11
2024-05-04T22:10:46.1561432Z   '<string literal>' is ascii string 'split this'
2024-05-04T22:10:46.1562602Z SUMMARY: AddressSanitizer: global-buffer-overflow (/home/runner/work/xrdp/xrdp/tests/common/.libs/test_common+0xc9d96) (BuildId: 9f39a5cdc888caba15ef79957b3f1e399b300649) in __asan_memcpy
2024-05-04T22:10:46.1563615Z Shadow bytes around the buggy address:
2024-05-04T22:10:46.1564040Z   0x0ab6991894a0: f9 f9 f9 f9 00 01 f9 f9 00 00 00 06 f9 f9 f9 f9
2024-05-04T22:10:46.1564529Z   0x0ab6991894b0: 02 f9 f9 f9 02 f9 f9 f9 02 f9 f9 f9 02 f9 f9 f9
2024-05-04T22:10:46.1565009Z   0x0ab6991894c0: 02 f9 f9 f9 02 f9 f9 f9 02 f9 f9 f9 02 f9 f9 f9
2024-05-04T22:10:46.1565474Z   0x0ab6991894d0: 00 00 01 f9 f9 f9 f9 f9 00 03 f9 f9 03 f9 f9 f9
2024-05-04T22:10:46.1565928Z   0x0ab6991894e0: 00 00 00 07 f9 f9 f9 f9 00 00 01 f9 f9 f9 f9 f9
2024-05-04T22:10:46.1566384Z =>0x0ab6991894f0: 00 00 00 03 f9 f9 f9 f9 00[03]f9 f9 00 00 02 f9
2024-05-04T22:10:46.1566855Z   0x0ab699189500: f9 f9 f9 f9 00 05 f9 f9 06 f9 f9 f9 02 f9 f9 f9
2024-05-04T22:10:46.1567616Z   0x0ab699189510: 01 f9 f9 f9 07 f9 f9 f9 00 00 00 00 00 00 00 00
2024-05-04T22:10:46.1568074Z   0x0ab699189520: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2024-05-04T22:10:46.1568529Z   0x0ab699189530: 07 f9 f9 f9 f9 f9 f9 f9 00 00 00 00 00 00 02 f9
2024-05-04T22:10:46.1568983Z   0x0ab699189540: f9 f9 f9 f9 00 00 00 00 05 f9 f9 f9 f9 f9 f9 f9
2024-05-04T22:10:46.1569514Z Shadow byte legend (one shadow byte represents 8 application bytes):
2024-05-04T22:10:46.1569957Z   Addressable:           00
2024-05-04T22:10:46.1570269Z   Partially addressable: 01 02 03 04 05 06 07
2024-05-04T22:10:46.1570625Z   Heap left redzone:       fa
2024-05-04T22:10:46.1571207Z   Freed heap region:       fd
2024-05-04T22:10:46.1571494Z   Stack left redzone:      f1
2024-05-04T22:10:46.1571774Z   Stack mid redzone:       f2
2024-05-04T22:10:46.1572046Z   Stack right redzone:     f3
2024-05-04T22:10:46.1572316Z   Stack after return:      f5
2024-05-04T22:10:46.1572594Z   Stack use after scope:   f8
2024-05-04T22:10:46.1572872Z   Global redzone:          f9
2024-05-04T22:10:46.1573136Z   Global init order:       f6
2024-05-04T22:10:46.1573407Z   Poisoned by user:        f7
2024-05-04T22:10:46.1573676Z   Container overflow:      fc
2024-05-04T22:10:46.1574092Z   Array cookie:            ac
2024-05-04T22:10:46.1574366Z   Intra object redzone:    bb
2024-05-04T22:10:46.1574629Z   ASan internal:           fe
2024-05-04T22:10:46.1574906Z   Left alloca redzone:     ca
2024-05-04T22:10:46.1575180Z   Right alloca redzone:    cb

That looks very interesting @chipitsine - thank you.
Are you happy for me to push a fix to your branch for the detected errors?

Sure, please push
On Tue, May 7, 2024, 13:18 matt335672 @.***> wrote:

That looks very interesting @chipitsine https://github.com/chipitsine -
thank you.
Are you happy for me to push a fix to your branch for the detected errors?
—
Reply to this email directly, view it on GitHub
https://github.com/neutrinolabs/xrdp/pull/3057#issuecomment-2098167060,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAQ5KUEMHBHBRTT4V6Z57GDZBCZ7RAVCNFSM6AAAAABHHE47GOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAOJYGE3DOMBWGA
.
You are receiving this because you were mentioned.Message ID:
@.***>

in theory, we can split code fix to separate PR (and test locally with CFLAGS/LDFLAGS), after that I can rebase
up to you

That's fine - I'll push a fix anyway.

also, I'm not familiar with test automation used. maybe it allows to display errors when running, i.e. without
make check -j $(nproc) || (cat tests/common/test-suite.log && exit 1)

I was just going to suggest replacing tests/common/test-suite.log with tests/*/test-suite.log

I was just going to suggest replacing tests/common/test-suite.log with tests/*/test-suite.log

I tried to upload it as artifact, but file was really small and I considered that it would be better to display in build log.
feel free to push change

there were two finding in log.
one with explicit SEGV. it might be marked for skipping when sanitizer enabled

Should be OK to rebase now.

I replaced the artificial SEGV with USR2 as the sanitiser doesn't do anything clever with that.

Thanks @chipitsine
Having at least some sort of dynamic analysis for the code is a step in the right direction.

your welcome)


included raphaela, small changes

It would be nice if flowchart.js could detect if it's raphael or svg and handle both libs...

please see the example. some things I did not know how to adapt. yes. I can do this hackish solution in raphaela:
Raphael.prototype.type = function(){
	return "svg.js";
}

while Raphael would return the string "SVG", Raphaela would "svg.js".

something in this direction: https://github.com/oro8oro/flowchart.js/issues/1

hello!
could you insert  iteration like:
iter=>iteration: for i in [0, 1, 2, 3]
op1=>operation: My Operation1
op2=>operation: My Operation2
iter(yes)-> op1(bottom)->op2(right) ->iter
iter(no)->

it would be nice!
many thanks


prevent a case where tryOps endsup called recursivley when persisted data exists but has empty data

Fixes #3067

I guess the fact that we can call persistRing from loadPersistedData could explain why the data was empty in #3067.   E.g. if the IPAM range changed.
So, this PR would avoid the crash, but perhaps we should also put in a check to avoid writing an empty ring?

I guess it doesn't matter a lot if we persist an empty ring in cases like peer-name or IP range changed.  Only if you failed to achieve consensus, then changed it back again, would it be useful.


Action giving 422 error

Suddenly, all the occurrences of this action started failing and returning a 422 error from Github.
I trued giving permissions to my GH_ACTION key but still that did not solve the error.

Same case here


Running cosmwasm example

Hello,
I have downloaded atomkraft (dev branch). I succeeded to install python3.10 alongside with python3.8 (default version on my ubuntu 20). I compiled project with poetry, following instructions in CONTRIBUTING.md.
I have a problem to run cosmwasm example, which is placed inside the project. I tried first step
pip install -U atomkraft
but it fails with
Defaulting to user installation because normal site-packages is not writeable
Collecting atomkraft
Using cached atomkraft-0.0.10-py3-none-any.whl (38 kB)
Collecting case-converter<2.0.0,>=1.1.0
Using cached case_converter-1.1.0-py3-none-any.whl (14 kB)
Collecting terra-sdk<4.0.0,>=3.0.1
Using cached terra_sdk-3.0.1-py3-none-any.whl (124 kB)
Collecting terra-proto<3.0.0,>=2.1.0
Using cached terra_proto-2.1.0-py3-none-any.whl (132 kB)
Collecting tomlkit<0.12.0,>=0.11.1
Using cached tomlkit-0.11.4-py3-none-any.whl (35 kB)
Collecting modelator<0.7.0,>=0.6.2
Using cached modelator-0.6.2-py3-none-any.whl (51 kB)
Collecting tabulate<0.9.0,>=0.8.9
Using cached tabulate-0.8.10-py3-none-any.whl (29 kB)
Collecting websockets<11.0,>=10.3
Using cached websockets-10.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (111 kB)
Collecting pytest-reportlog<0.2.0,>=0.1.2
Using cached pytest_reportlog-0.1.2-py3-none-any.whl (5.6 kB)
Collecting hdwallet<3.0.0,>=2.1.1
Using cached hdwallet-2.1.1-py3-none-any.whl (68 kB)
Collecting copier<7.0.0,>=6.1.0
Using cached copier-6.1.0-py3-none-any.whl (34 kB)
Collecting GitPython<4.0.0,>=3.1.27
Using cached GitPython-3.1.27-py3-none-any.whl (181 kB)
Collecting typer[all]<0.7.0,>=0.6.1
Using cached typer-0.6.1-py3-none-any.whl (38 kB)
Collecting bip-utils<3.0.0,>=2.3.0
Using cached bip_utils-2.6.1.tar.gz (329 kB)
Preparing metadata (setup.py) ... error
error: subprocess-exited-with-error
× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [1 lines of output]
ERROR: Can not execute setup.py since setuptools is not available in the build environment.
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
× Encountered error while generating package metadata.
╰─> See above for output.
note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
I don't know how to run an example, using my local compiled version.

Hey @djordjepesic-ethernal, first of all, thanks for trying it out :+1: Atomkraft's first external issue on the repo :pray: :tada:
Can you provide me the outputs of the following commands,

pip -V
python -c "import setuptools; print(setuptools.__version__)"

pip -V
Output: pip 22.2.2 from /home/djordjepesic/.local/lib/python3.10/site-packages/pip (python 3.10)
python -c "import setuptools; print(setuptools.version)"
Traceback (most recent call last):
File "", line 1, in
File "/usr/lib/python3/dist-packages/setuptools/init.py", line 5, in
import distutils.core
ModuleNotFoundError: No module named 'distutils.core'

Solution:
pip uninstall setuptools and call apt update && apt upgrade && apt install python-setuptools
Uninstal setuptools version tied to python3.8 (default for ubuntu) and install new setuptools version


Process repositories locally by cloning

OAuth token rate limits are set in stone and it's probably not a good idea to request each commit individually, so we should look at this if we care about large or private repositories.

Let's go with a threshold for now, and save the issue so we can take care of this down the road sometime.

Now using a threshold in 5ae1702aa1a481d458d7ca031d340c8584b2bbd0.

instead of ripping out octokit we could just get the clone URL from each repo and process using some other process in the background

We definitely can do that, but we would have to figure out some way to parse it ourselves. libgit2sharp can do that fo us. We should pass the clone URL into that while still using Octokit to communicate with the API.

As of https://github.com/vcu-swim-lab/KnowHows/commit/f08b76b3d749a0b61299067184b43404f8f83fb8, local parsing is fully working. I'll merge after I do some more thorough testing.
Libgit2.NativeBinaries does not currently support distros that are not Ubuntu-derived (see https://github.com/libgit2/libgit2sharp.nativebinaries/pull/51), so follow these instructions to build the needed library for CentOS:

git clone --recursive https://github.com/libgit2/libgit2sharp.nativebinaries
cd libgit2sharp.nativebinaries
Make sure you have the necessary OpenSSL version with yum install openssl-devel
./build.libgit2.sh
Copy libgit2-2d2a602.so or similar to the package install using cp libgit2-2d2a602.so ~/.nuget/packages/libgit2sharp.nativebinaries/1.0.2xx/runtimes/linux-x64/native


Is hyperion supporting SPI shortcut?

I got a question,
Having hyperion on a rpi2 is great but its sooooo slow (rpi with kodi) so i i tooked a core2 pc and installed kodibuntu on it, muchhh faster. Im using the tool XBMC addon (not for RPi) and send it to the rpi2 hyperion deamon its woring, cant cap the normal screen use only video, but its ok. I do see little lags sometimes cause its going over network. so i went to google and found this little chip:
https://github.com/sparkfun/SPI_Shortcut/tree/V_1.6
Does hyperion will work with this or is it hardcoded to something in the rpi2 spi controller?
If so, is ther any developer that wanne work with me for this, you can script, i can test.
this would be a cheap solution for those using a htcp and wanne use spi connection to usb.
Thanks!

I don't think r will work without changes to Hyperion.
It will probably need a ew driver written - pretty easy to do as it already support serial and SPI.
But I its not worth it as it seems an expensive adaptor for what appears less equipped than a regular arduino board ($3 from China )
I'd either hang a cheap arduino nano off USB and use some existing code

Arduino has clock and mosi? so correcet me if im wrongm
buy a arduino, connect to htpc, install hyperion to htpc, then install arduino driver on kodibuntu? maybe not needit and then it works? thanks for the great advice, i wanne get rid of rpi2 its to slow to many freezes when OC to 1Ghz.

Yes, arduino has SPI.
That's the most common way to program bare chips with no bootloader.
Get a cheap arduino nano
Find a sketch that implements something like the adaloght protocol
Find a library that supports your led strip (which do you have ?)
Arduino looks like a serial port to the PC
Configure Hyperion to use that "aerial" port

Nice thanks for the explaination, wich arduine is fit to do the job? is suppose the Uno R3.
Anyway im usung ws2801
	"name"       : "MyPi",
	"type"       : "ws2801",
	"output"     : "/dev/spidev0.0",
	"rate"       : 1000000,
	"colorOrder" : "rgb"

I got it working today, thank you very much!

Great to head !
What did you settle on for a setup ?

Arduino Nano with a sketch founded online, that together with hyperion and hyperion xmbc addon


[bug]:

Is there an existing issue for this?

[X] I have searched the existing issues

OS
Windows
GPU
cuda
VRAM
12Gb
What version did you experience this issue on?
xx.xx.xx
What happened?
When Invoke starts it does not give version. Nor can I find it anywhere. I've running Invoke inside Stability Matrix.
First version I had ran fine, but subsequent updates ( I lose count, but at least 5 Update notices) which I ran crash. Here is what latest update gave me:
Traceback (most recent call last):
File "", line 2, in
File "D:\STABLEDIFF\Data\Packages\InvokeAI\venv\lib\site-packages\invokeai\app\api_app.py", line 1, in
from .services.config import InvokeAIAppConfig
File "D:\STABLEDIFF\Data\Packages\InvokeAI\venv\lib\site-packages\invokeai\app\services\config_init_.py", line 5, in
from .config_base import PagingArgumentParser  # noqa F401
File "D:\STABLEDIFF\Data\Packages\InvokeAI\venv\lib\site-packages\invokeai\app\services\config\config_base.py", line 21, in
from pydantic import BaseSettings
File "D:\STABLEDIFF\Data\Packages\InvokeAI\venv\lib\site-packages\pydantic_init_.py", line 218, in getattr
return _getattr_migration(attr_name)
File "D:\STABLEDIFF\Data\Packages\InvokeAI\venv\lib\site-packages\pydantic_migration.py", line 294, in wrapper
raise PydanticImportError(
pydantic.errors.PydanticImportError: BaseSettings has been moved to the pydantic-settings package. See https://docs.pydantic.dev/2.4/migration/#basesettings-has-moved-to-pydantic-settings for more details.
For further information visit https://errors.pydantic.dev/2.4/u/import-error
Process finished with exit code 1
Screenshots
see above
Additional context
Inside Stability Matrix. Haven't searched for existing issue because I'm not sure how to describe the problem.
Contact Details
<EMAIL_ADDRESS>

We've seen this a couple times with users using InvokeAI with Stability Matrix - you'll need to downgrade your version of pydantic