Add Liam Newman to Declarative

Description
Adding @bitwiseman to https://github.com/jenkinsci/pipeline-model-definition-plugin/
Submitter checklist for changing permissions
Always

[x] Add link to plugin/component Git repository in description above

For a newly hosted plugin only

[ ] Add link to resolved HOSTING issue in description above

For a new permissions file only

[ ] Make sure the file is created in permissions/ directory
[ ] artifactId (pom.xml) is used for name (permissions YAML file).
[ ] groupId / artifactId (pom.xml) are correctly represented in path (permissions YAML file)
[ ] Check that the file is named plugin-${artifactId}.yml for plugins

When adding new uploaders (this includes newly created permissions files)

[x] Make sure to @mention an existing maintainer to confirm the permissions request, if applicable
[x] Use the Jenkins community (LDAP) account name in the YAML file, not the GitHub account name
[ ] All newly added users have logged in to Artifactory at least once

Merge permission to GitHub repository

[x] Check this if newly added person also needs to be given merge permission to the GitHub repo.

And as maintainer, I approve.

Build failed; the context from the latest run is:
Expand to view
[2019-08-06T15:05:59.786Z] 	at groovy.json.JsonBuilder$toPrettyString$0.call(Unknown Source)
[2019-08-06T15:05:59.786Z] 	at io.jenkins.infra.repository_permissions_updater.ArtifactoryPermissionsUpdater$_generateApiPayloads_closure1.doCall(ArtifactoryPermissionsUpdater.groovy:194)
[2019-08-06T15:05:59.786Z] 	at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
[2019-08-06T15:05:59.786Z] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[2019-08-06T15:05:59.786Z] 	at java.lang.reflect.Method.invoke(Method.java:498)
[2019-08-06T15:05:59.786Z] 	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
[2019-08-06T15:05:59.786Z] 	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
[2019-08-06T15:05:59.786Z] 	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294)
[2019-08-06T15:05:59.786Z] 	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024)
[2019-08-06T15:05:59.786Z] 	at groovy.lang.Closure.call(Closure.java:414)
[2019-08-06T15:05:59.786Z] 	at groovy.lang.Closure.call(Closure.java:430)
[2019-08-06T15:05:59.786Z] 	at org.codehaus.groovy.runtime.ResourceGroovyMethods.eachFile(ResourceGroovyMethods.java:1070)
[2019-08-06T15:05:59.786Z] 	at org.codehaus.groovy.runtime.ResourceGroovyMethods.eachFile(ResourceGroovyMethods.java:1088)
[2019-08-06T15:05:59.786Z] 	at org.codehaus.groovy.runtime.dgm$936.invoke(Unknown Source)
[2019-08-06T15:05:59.786Z] 	at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:274)
[2019-08-06T15:05:59.786Z] 	at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:56)
[2019-08-06T15:05:59.786Z] 	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
[2019-08-06T15:05:59.786Z] 	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
[2019-08-06T15:05:59.786Z] 	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
[2019-08-06T15:05:59.786Z] 	at io.jenkins.infra.repository_permissions_updater.ArtifactoryPermissionsUpdater.generateApiPayloads(ArtifactoryPermissionsUpdater.groovy:135)
[2019-08-06T15:05:59.786Z] 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[2019-08-06T15:05:59.786Z] 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[2019-08-06T15:05:59.786Z] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[2019-08-06T15:05:59.786Z] 	at java.lang.reflect.Method.invoke(Method.java:498)
[2019-08-06T15:05:59.786Z] 	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
[2019-08-06T15:05:59.786Z] 	at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite$StaticMetaMethodSiteNoUnwrapNoCoerce.invoke(StaticMetaMethodSite.java:151)
[2019-08-06T15:05:59.786Z] 	at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:102)
[2019-08-06T15:05:59.786Z] 	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:56)
[2019-08-06T15:05:59.786Z] 	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:194)
[2019-08-06T15:05:59.786Z] 	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:214)
[2019-08-06T15:05:59.786Z] 	at io.jenkins.infra.repository_permissions_updater.ArtifactoryPermissionsUpdater.main(ArtifactoryPermissionsUpdater.groovy:318)
[2019-08-06T15:05:59.825Z] [Pipeline] }
[2019-08-06T15:05:59.870Z] [Pipeline] // stage
[2019-08-06T15:05:59.938Z] [Pipeline] stage
[2019-08-06T15:05:59.950Z] [Pipeline] { (Archive)
[2019-08-06T15:06:00.027Z] [Pipeline] archiveArtifacts
[2019-08-06T15:06:00.090Z] Archiving artifacts
[2019-08-06T15:06:00.852Z] [Pipeline] archiveArtifacts
[2019-08-06T15:06:00.871Z] Archiving artifacts
[2019-08-06T15:06:00.986Z] [Pipeline] }
[2019-08-06T15:06:01.044Z] [Pipeline] // stage
[2019-08-06T15:06:01.074Z] [Pipeline] }
[2019-08-06T15:06:01.134Z] [Pipeline] // node
[2019-08-06T15:06:01.209Z] [Pipeline] End of Pipeline
[2019-08-06T15:06:01.826Z]
[2019-08-06T15:06:01.826Z] GitHub has been notified of this commit’s build result
[2019-08-06T15:06:01.826Z]
[2019-08-06T15:06:01.826Z] ERROR: script returned exit code 1
[2019-08-06T15:06:01.826Z] Finished: FAILURE

Powered by the Comment Logger


release metabolomics fails - R 3.5.3  Bioc 3.8

https://cloud.docker.com/u/bioconductor/repository/registry-1.docker.io/bioconductor/release_metabolomics2/builds/11e230ee-b72c-4576-95c9-f2305e8b0924
Looks like a system dependencies needs to be added.

Indeed, trying to fix by adding libudunits2-dev
 Configuration failed because libudunits2.so was not found. Try installing:
* deb: libudunits2-dev (Debian, Ubuntu, ...)


Asset cleaner failures

In a unit testcase, intermittent failures occur when cleaning up a package containing an action.
error: Package delete failed: Package not empty (contains 1 entity) (code 2972066)
exit code: 153 was not equal to 0
exception :
org.scalatest.exceptions.TestFailedException: deletedAll was false some assets were not deleted
at org.scalatest.Assertions$class.newAssertionFailedException(Assertions.scala:500)
at org.scalatest.FlatSpec.newAssertionFailedException(FlatSpec.scala:1683)
at org.scalatest.Assertions$AssertionsHelper.macroAssert(Assertions.scala:466)
at common.WskTestHelpers$class.withAssetCleaner(WskTestHelpers.scala:105)
at system.basic.WskBasicTests.withAssetCleaner(WskBasicTests.scala:38)
at system.basic.WskBasicTests$$anonfun$7.apply$mcV$sp(WskBasicTests.scala:115)
In the file WskTestHelpers.scala the function withAssetCleaner should also include a retry ...
            val deletedAll = assetsToDeleteAfterTest.reverse map {
                case ((cli, n, delete)) => n -> Try {
                    if (delete) {
                        cli.delete(n)(wskprops)
                    } else {
                        cli.sanitize(n)(wskprops)
                    }
                }

similar like in class AssetCleaner :
                            // operation that requires a retry for eventual consistency
                            whisk.utils.retry({
                                cli.sanitize(name)(wskprops)
                            }, 5, Some(1 second))

going to close https://github.com/openwhisk/openwhisk/issues/1588 as duplicate.

Fixed with https://github.com/openwhisk/openwhisk/pull/1943.

This issue appears to be happening again.
Earlier today the YPHealth build failed multiple times (not successively) due to seemingly this error, where it tried to delete a package but the package deletion failed because it still contained an action within it.
The last failure was in the test
"system.basic.WskConsoleTests.Wsk Activation Console should show an activation log message for hello world"
where it failed due to:
ERROR: deleting asset failed for samples: org.scalatest.exceptions.TestFailedException: /home/jenkins/.local/bin/wsk -i --apihost bluemix.net --apiversion v1 package delete --auth ... /_/samples error: Unable to delete package 'samples': Package not empty (contains 1 entity) (code 350922) exit code: 153 was not equal to 0
A couple builds before the above failure the test
"system.basic.WskPackageTests.Wsk Package should perform package binds so parameters are inherited"
failed due to:
Starting test Wsk Package should perform package binds so parameters are inherited at 2017-04-21 16:27:03.146 ERROR: deleting asset failed for package1: org.scalatest.exceptions.TestFailedException: /home/jenkins/.local/bin/wsk -i --apihost bluemix.net --apiversion v1 package delete --auth ... /_/package1 error: Unable to delete package 'package1': Package not empty (contains 1 entity) (code 324970) exit code: 153 was not equal to 0


Remove fcayre from individual CLA section

@fcayre was added to both the individual and corporate CLA sections in #5782
He should only be under the Corporate CLA section, right?

@hpinkos, thanks for the pull request! Maintainers, we have a signed CLA from @hpinkos, so you can review this at any time.
I noticed that CHANGES.md has not been updated. If this change updates the public API in any way, fixes a bug, or makes any non-trivial update, please add a bullet point to CHANGES.md and comment on this pull request so we know it was updated. For more info, see the Pull Request Guidelines.
I am a bot who helps you make Cesium awesome! Thanks again.

He should only be under the Corporate CLA section, right?

Yes, thanks!


MSID: 94231 Version: 1 DOI: 10.31234/osf.io/gtxam

MSID: 94231
Version: 1
Preprint DOI: https://doi.org/10.31234/osf.io/gtxam
Step 1. Awaiting reviews
Editorial to post reviews via hypothesis
Useful links:

DocMap: https://data-hub-api.elifesciences.org/enhanced-preprints/docmaps/v2/by-publisher/elife/get-by-manuscript-id?manuscript_id=94231
New model tracking: https://docs.google.com/spreadsheets/d/1_fHaoOy7hjyocptKtVJRijeNpUY4hBS7Ck_aVmx6ZJk/
Reviews on sciety: https://sciety.org/articles/activity/10.31234/osf.io/gtxam

For trouble shooting (e.g. no Docmaps available):

DocMap issue addressing: https://miro.com/app/board/uXjVNCwK6EI=/
Explore DataHub DocMaps API: https://lookerstudio.google.com/reporting/4c2f0368-babb-4beb-b5b3-497e7e7b0f08/page/ejphD
Unmatched submissions and preprints: https://lookerstudio.google.com/u/0/reporting/9f86204f-3bf7-477c-9b18-5c5ef141bf69/page/p_gxi57ha93c
Unmatched manuscripts spreadsheet: https://docs.google.com/spreadsheets/d/15QcK8w-ssB7109RQEDtFpJPZ0J5HTGxoHa_2TtpMBbg/edit#gid=1336081641

Step 2. Preview reviewed preprint
Production QC content ahead of publication
Instructions:

QC preview: https://prod--epp.elifesciences.org/previews/94231v1
Update ticket with any problems (add blocked label)
When QC OK, add QC OK label to ticket and add publication date and time to https://docs.google.com/spreadsheets/d/1amAlKvdLcaDp5W8Z8g77NmkwbMF5n_u89ArSqPMO8jg
Move card to next column
(At end of the day post link in #enhanced-preprint and ask for PDF to be generated)

Useful links:

Preprint DOI :  https://doi.org/10.31234/osf.io/gtxam
Confirm reviews returned by EPP: https://prod--epp.elifesciences.org/api/reviewed-preprints/94231/v1/reviews
To update the MECA path in the docmap: https://docs.google.com/spreadsheets/d/1mctCQuNFBjSn97Lihy7_vBO6z7-N-oqyLv4clyi6zHg

Step 3: Awaiting search reindex
This step adds the reviewed preprint to the homepage: https://elifesciences.org
The search reindex is triggered once an hour. We need the reviewed preprint to be indexed as the search application serves the journal homepage.
Useful links:

Jenkins pipeline to reindex search can be triggered sooner or monitored here: https://alfred.elifesciences.org/job/process/job/process-reindex-reviewed-preprints/

Step 4: Published! PDF requested
Waiting for PDF to be generated
Useful links:

PDF tracking: https://docs.google.com/spreadsheets/d/106_XeDjmuBae7gexOTNzg60lapeqjl2aRn9DzupGyS8/

Step 5: Introduce PDF to data folder and git repo
Upload PDF to relevent folder in git repo https://github.com/elifesciences/enhanced-preprints-data/
Step 6: Done!

[ ] Kettle is on!

page not found on preview

Thanks for flagging @rkcook312.
I expect this hasn't loaded because there's no preprint date in the docmap. I have added the details into the Unmatched manuscripts spreadsheet: https://docs.google.com/spreadsheets/d/15QcK8w-ssB7109RQEDtFpJPZ0J5HTGxoHa_2TtpMBbg/edit#gid=1336081641. So when this is next picked up by datahub, the package should hopefully load.

@JGilbert-eLife, do you know where the meca package for this one is? The Docmap expects one at  s3://prod-elife-epp-meca/94231-v1-meca.zip, but there's no package.
The following command returns nothing
aws s3 ls s3://prod-elife-epp-meca/ | grep '94231'

Weird. Looks like I never uploaded the package - sorry about that!
Should be in the bucket now.

Thanks! @rkcook312, this should be ready to check now.


PostgreSQL text[] support.

Is there a way to handle text[] or varchar[] columns? I tried to work around with varius ways but could not figure out.
If there isn't a way to handle text[] can you add such a feature?

The next time the support

Looking forward to this feature. Thank you.

`  [SqlSugar.SugarColumn(IsArray = true, ColumnDataType = "text[]")]
public string[] colums { get; set; }
db.Insertable(new TestA() { colums = new string[] { "a" } }).ExecuteCommand();
var xx = db.Queryable().ToList();
`
Like I did before

This doesn't work. I created a column like you did
[SugarColumn(ColumnName = "test",  IsArray = true, ColumnDataType = "text[]")]
public string[] Test { get; set; }
And I used insertable like below
dbt.Insertable(new LectureEntity
{
ProductId = productId,
LanguageCode = languageCode,
Title = title,
Slug = slug,
CategoryId = categoryId,
Test = new[] {"asdfasdf"},
LevelId = levelId,
IsActive = false,
}).IgnoreColumns(l => new {l.Acquirements, l.Requirements})
.EnableDiffLogEvent(user)
.ExecuteReturnIdentity();
From what I gather below error message column named Test doesn't have Postgresql array literal value.
Npgsql error message:
Exception data:
Severity: ERROR
SqlState: 22P02
MessageText: malformed array literal: "asdfasdf"
Detail: Detail redacted as it may contain sensitive data. Specify 'Include Error Detail' in the connection string to include this information.
Position: 290
File: arrayfuncs.c
Line: 314
Routine: array_in


HttpClient timeout exceptions if there is delay in response handler

package vx.app.test;

import io.vertx.core.*;
import io.vertx.core.eventbus.Message;
import io.vertx.core.http.*;

import java.util.concurrent.atomic.AtomicInteger;

public class RequestHandler extends AbstractVerticle {
    private HttpClient httpClient;
    private AtomicInteger successCount = new AtomicInteger(0);
    private AtomicInteger failureCount = new AtomicInteger(0);

    @Override
    public void start() throws Exception {
        HttpClientOptions options = new HttpClientOptions();
        options.setMaxWaitQueueSize(1000);
        options.setKeepAlive(true);
        options.setMaxPoolSize(500);
        httpClient = vertx.createHttpClient(options);
        vertx.eventBus().consumer("request", (Message<Integer> message) -> {
            sendData(response -> {
//                System.out.println(Thread.currentThread().getName());
                if (response.succeeded()) {
                    successCount.incrementAndGet();
                } else {
                    failureCount.incrementAndGet();
                }
                if ((successCount.intValue() + failureCount.intValue()) % 20 == 0) {
                    int totalResponses = successCount.intValue() + failureCount.intValue();
                    System.out.println("total = " + totalResponses + " (success = " + successCount.intValue() + ", failure = " + failureCount.intValue() + ")");

                    if (totalResponses == 200) {
                        System.out.println("done");
                        vertx.eventBus().send("shutdown", "");
                    }
                }
                delay(20);
            });
        });
    }

    private void sendData(Handler<AsyncResult<String>> handler) {
        HttpClientRequest request = httpClient.postAbs("http://localhost:7777", response -> {
            response.bodyHandler(buffer -> {
                handler.handle(Future.succeededFuture(buffer.toString()));
            });
        });
        request.exceptionHandler(e -> {
            handler.handle(Future.failedFuture(e));
        });
        request.setTimeout(2000);

        String data = "data";
        request.putHeader(HttpHeaders.CONTENT_LENGTH, Integer.toString(data.length()));
        request.putHeader(HttpHeaders.CONTENT_TYPE, "text/plain");
        request.write(data).end();
    }

    private void delay(long time) {
        try {
            Thread.sleep(time);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

class Main {
    private Vertx vertx;
    private HttpServer httpServer;

    public Main() {
        vertx = Vertx.vertx();
        startWebServer();
        vertx.deployVerticle(RequestHandler.class.getName(), new DeploymentOptions().setWorker(true), future -> {
            if (future.succeeded()) {
                for (int i = 0; i < 200; i++) {
                    vertx.eventBus().send("request", 1);
                }
            }
        });

        vertx.eventBus().consumer("shutdown", e -> {
            httpServer.close();
            vertx.close();
        });
    }

    public static void main(String[] args) {
        new Main();
    }

    private void startWebServer() {
        String webServiceResponse = "<response><hello></hello></response>";
        HttpServerOptions options = new HttpServerOptions();
        httpServer = vertx.createHttpServer(options).requestHandler(request -> {
            vertx.setTimer(1000, event -> {
                request.response().headers().set(HttpHeaders.CONTENT_LENGTH, String.valueOf(webServiceResponse.length()));
                request.response().headers().set(HttpHeaders.CONTENT_TYPE, "application/xml");
                request.response().end(webServiceResponse);
            });
        }).listen(7777);
    }
}

If there is some delay in httpclient's(pool) response handler then it starts getting timeout exceptions. I am not blocking event loop i am handling responses on worker threads.  Please run program 2 or 3 times if you won't get any timeout exceptions.
What i am doing wrong here? If i create new thread to handle response in response handler then i will not get any timeout exceptions.

this happens because you are using worker and Thread.sleep in your verticle.
In such situations timers can introduce race conditions specially when combined with IO.
you should probably avoid to use Thread.sleep(20) and use instead also a timer.
that being said, the HttpClientRequest should not fire a timeout exception after the response has been received, so I consider this as a bug, although you should also fix your code to avoid thread sleeping

Thanks for the response bro, in real application i am not using Thread.sleep but there is time consuming work i am doing in response handler still getting timeouts. I used sleep to reproduce this issue. I appears that request timer get cancels after response handler finish its work not before.

yes this happens because how the timer is handled for workers, I'm contributing a fix

meanwhile you should use something like a io.vertx.core.Future with tryComplete / tryFail operation and have a single callback on the future.setHandler to make sure only one operation is executed

I've created this PR : https://github.com/eclipse/vert.x/pull/1900

Am i doing it right the fix you propose?
    private void sendData(Handler<AsyncResult<String>> handler) {
        Future<String> future = Future.future();
        future.setHandler(handler);

        HttpClientRequest request = httpClient.postAbs("http://localhost:7777", response -> {
            response.bodyHandler(buffer -> {
                future.tryComplete(buffer.toString());
            });
        });
        request.exceptionHandler(e -> {
            future.tryFail(e);
        });
        request.setTimeout(2000);

        String data = "data";
        request.putHeader(HttpHeaders.CONTENT_LENGTH, Integer.toString(data.length()));
        request.putHeader(HttpHeaders.CONTENT_TYPE, "text/plain");
        request.write(data).end();
    }

yes, or better use the new Vert.x Web Client http://vertx.io/docs/vertx-web-client/java/

Thanks bro i will checkit

Hi bro i ran in to another problem. If i do some time consuming work before sending http requests i start getting timeout exceptions. Here is output
total = 10 (success = 0, failure = 10)
total = 20 (success = 0, failure = 20)
total = 30 (success = 0, failure = 30)
total = 40 (success = 0, failure = 40)
total = 50 (success = 0, failure = 50)
total = 60 (success = 0, failure = 60)
total = 70 (success = 0, failure = 70)
total = 80 (success = 7, failure = 73)
total = 90 (success = 17, failure = 73)
total = 100 (success = 27, failure = 73)
done
Just before sendData if there is time consuming work i start getting timeouts in real app i am not using sleep. Please help
package vx.app.test;

import io.vertx.core.*;
import io.vertx.core.eventbus.Message;
import io.vertx.core.http.*;

import java.util.concurrent.atomic.AtomicInteger;

public class RequestTimeoutVerticle extends AbstractVerticle {
    private HttpClient httpClient;
    private AtomicInteger successCount = new AtomicInteger(0);
    private AtomicInteger failureCount = new AtomicInteger(0);

    @Override
    public void start() throws Exception {
        HttpClientOptions options = new HttpClientOptions();
        options.setMaxWaitQueueSize(1000);
        options.setKeepAlive(true);
        options.setMaxPoolSize(1000);
        httpClient = vertx.createHttpClient(options);
        vertx.eventBus().consumer("request", (Message<Integer> message) -> {
            vertx.setTimer(10, event -> {
                delay(30);
                sendData(response -> {
//                System.out.println(Thread.currentThread().getName());
                    if (response.succeeded()) {
                        successCount.incrementAndGet();
                    } else {
                        failureCount.incrementAndGet();
                    }
                    if ((successCount.intValue() + failureCount.intValue()) % 10 == 0) {
                        int totalResponses = successCount.intValue() + failureCount.intValue();
                        System.out.println("total = " + totalResponses + " (success = " + successCount.intValue() + ", failure = " + failureCount.intValue() + ")");

                        if (totalResponses == 100) {
                            System.out.println("done");
                            vertx.eventBus().send("shutdown", "");
                        }
                    }
                });
            });
        });

    }

    private void sendData(Handler<AsyncResult<String>> handler) {
        Future<String> future = Future.future();
        future.setHandler(handler);

        HttpClientRequest request = httpClient.postAbs("http://localhost:7777", response -> {
            response.bodyHandler(buffer -> {
                future.tryComplete(buffer.toString());
            });
        });
        request.exceptionHandler(future::tryFail);
        request.setTimeout(2000);

        String data = "data";
        request.putHeader(HttpHeaders.CONTENT_LENGTH, Integer.toString(data.length()));
        request.putHeader(HttpHeaders.CONTENT_TYPE, "text/plain");
        request.write(data).end();
    }

    private void delay(long time) {
        try {
            Thread.sleep(time);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    private static Vertx vertx;
    private static HttpServer httpServer;

    private static void startWebServer() {
        String webServiceResponse = "<response><hello></hello></response>";
        HttpServerOptions options = new HttpServerOptions();
        httpServer = vertx.createHttpServer(options).requestHandler(request -> {
            vertx.setTimer(1000, event -> {
                request.response().headers().set(HttpHeaders.CONTENT_LENGTH, String.valueOf(webServiceResponse.length()));
                request.response().headers().set(HttpHeaders.CONTENT_TYPE, "application/xml");
                request.response().end(webServiceResponse);
            });
        }).listen(7777);
    }

    public static void main(String[] args) {
        vertx = Vertx.vertx();
        startWebServer();
        vertx.deployVerticle(RequestTimeoutVerticle.class.getName(), new DeploymentOptions().setWorker(true), future -> {
            if (future.succeeded()) {
                for (int i = 0; i < 100; i++) {
                    vertx.eventBus().send("request", 1);
                }
            }
        });

        vertx.eventBus().consumer("shutdown", e -> {
            httpServer.close();
            vertx.close();
        });
    }
}

because of these timeout issues i moved to retrofit library. I just saw your library retrofit-vertx
http://www.julienviet.com/retrofit-vertx/guide/java/index.html
this is what i needed only problem is that i can't set request timeout. How can i add request timeout using your library

I think we should add this as an option of the VertxCallFactory that's quite easy to add, if you do a PR on the project I would review it and make a new release

@farrukh-obaid note you can call setTimeout again on HttpClientRequest to re-set the timer to a new value.

I'm fixing this issue as the corresponding core issue in vertx core has been merged.

where should i add new setTimeout? I added setTimeout in response handler like this
response.request().setTimeout(10000);
still same problelm

I think that you should separate your HTTP client activities from your worker blocking interaction activities using the EventBus:

all your HTTP operations encapsulated in an event loop verticle listening on the EventBus, perhaps using a Vert.x Service Proxy
all your worker activities using workers and then do HTTP operations using the EventBus to communicate

Hi bro i created Vert.x Service Proxy as you suggested to handle http and handling response in another WorkerExecutor pool to avoid vertx workers. But there is problem WorkerExecutor pool creates only one there if call method with ordered with false i report issue here #250
Is this a bug or i am doing it wrong?

this bug has been fixed indeed : https://github.com/eclipse/vert.x/issues/1887
instead use Context#executeBlocking without using a WorkerExecutor

Hi I want to avoid running code inside vertx workers threads i need another thread pool is there any way to create another Context thread pool?

I think then indeed you need to wait for Vert.x 3.4.2.
In the meantime you can use your own thread pool (as you don't need ordered) and use runOnContext to piggy back the result.

yes i am planning to use rxjava to handle this. When will 3.4.2 is releasing?

we are aiming around May


[Material 3] Date Range Picker close button has incorrect shape

Steps to reproduce
Run a minimal showDateRangePicker sample.
Expected results

Actual results

Code sample
Code sample
import 'package:flutter/material.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        body: Center(
          child: Builder(
            builder: (BuildContext context) => ElevatedButton(
              onPressed: () {
                showDateRangePicker(
                  context: context,
                  firstDate: DateTime.now(),
                  lastDate: DateTime.now().add(const Duration(days: 30)),
                );
              },
              child: const Text('Show Date Range Picker'),
            ),
          ),
        ),
      ),
    );
  }
}

Screenshots or Video

Screenshots / Video demonstration
[Upload media here]

Logs
Logs
[Paste your logs here]

Flutter Doctor output
Doctor output
[!] Flutter (Channel main, 3.25.0-1.0.pre.172, on macOS 15.0 24A5327a darwin-arm64, locale
    en-US)
    • Flutter version 3.25.0-1.0.pre.172 on channel main at /Users/tahatesser/Code/flutter
    ! Upstream repository git@github.com:TahaTesser/flutter.git is not the same as
      FLUTTER_GIT_URL
    • FLUTTER_GIT_URL = git@github.com:TahaTesser/flutter.gitexport
    • Framework revision 9d971fada1 (25 hours ago), 2024-08-29 10:02:23 +0300
    • Engine revision bad94641d2
    • Dart version 3.6.0 (build 3.6.0-193.0.dev)
    • DevTools version 2.39.0
    • If those were intentional, you can disregard the above warnings; however it is
      recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.0)
    • Android SDK at /Users/tahatesser/Code/android-sdk
    • Platform android-35, build-tools 35.0.0
    • ANDROID_SDK_ROOT = /Users/tahatesser/Code/android-sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.11+0-17.0.11b1207.24-11852314)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 16.0)
    • Xcode at /Applications/Xcode-beta.app/Contents/Developer
    • Build 16A5230g
    • CocoaPods version 1.15.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2024.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.11+0-17.0.11b1207.24-11852314)

[✓] VS Code (version 1.92.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.94.0

[✓] Connected device (4 available)
    • Taha’s iPhone (mobile)          • 00008120-001C559034DB401E • ios            • iOS 18.0
      22A5350a
    • macOS (desktop)                 • macos                     • darwin-arm64   • macOS
      15.0 24A5327a darwin-arm64
    • Mac Designed for iPad (desktop) • mac-designed-for-ipad     • darwin         • macOS
      15.0 24A5327a darwin-arm64
    • Chrome (web)                    • chrome                    • web-javascript • Google
      Chrome 128.0.6613.113

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

Ran into this issue while writing tests for https://github.com/flutter/flutter/issues/141361


Wait for namespace to be fully deleted before removing entry in associated namespaced cluster role

Issue:

https://github.com/rancher/rancher/issues/43799
Problem

Solution

Testing

Engineering Testing
Manual Testing

Automated Testing

Test types added/modified:

Unit
Integration (Go Framework)
Integration (v2prov Framework)
Validation (Go Framework)
Other - Explain: EXPLAIN
None
REMOVE NOT APPLICABLE BULLET POINTS ABOVE

If "None" - Reason: EXPLAIN THE REASON

If "None" - GH Issue/PR: LINK TO GH ISSUE/PR TO ADD TESTS

Summary: TODO
QA Testing Considerations

Regressions Considerations

TODO
Existing / newly added automated tests that provide evidence there are no regressions:

TODO

Tests added.  Note....the underlying RBAC cleanup function is already nicely tested, so I've gone the route of just trying to test the async bit without making the unit tests take forever.  Definitely open to suggestions.


Can udp2raw fix Qos attack UDP and work around with cloudflare tunnel quic connection

use cloudflare tunnel with quic protocol  in China network is not going to work, hope udp2raw could work on that, or if have someone test, at my stage it doesn't work when i turn on udp2raw in my padavan router
WRN Connection terminated error="failed to dial to edge with quic: timeout: no recent network activity"

China ISP has bocked UDP


await-interactions fixer insert await without inserting async

Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:

Go to  'docs/rules/await-interactions.md'
Copy the example of incorrect code
Use the await-interactions rule fixer
The generated code is invalid JavaScript code that can not run (cf example of correct code)

import { within, userEvent } from '@storybook/testing-library'

MyStory.play = (context) => {
  const canvas = within(context.canvasElement)
  // awaited 👍
  await userEvent.click(canvas.getByRole('button'))
}

Expected behavior
In the fixed code, the MyStory.play method should be defined changed to async:
MyStory.play = async (context) => {
  const canvas = within(context.canvasElement)
  // awaited 👍
  await userEvent.click(canvas.getByRole('button'))
}

Screenshots

This was fixed in v0.5.7. Thanks for opening this issue!


APIPIE not behaving predictably

For some reason APIPIE causes core-build to render unpredictably (noticed on Heroku).
Figure out why this is.

@chriskacerguis - We need to set config.reload_controllers = true in the Apiepie Rails initializer because otherwise Apiepie doesn't automatically load documentation for controllers when in test which is the environment core-build is in.
AFAIK, this is the cause of the issue observed with documentation on Heroku being inconsistent.
Fix PR https://github.com/projectjellyfish/api/pull/366
StackOverflow reference here


feat: Bump version to 1.0.0-beta.2

@bcoe once this one will be merged I'll create an issue tagging all the translators to updating the version to 1.0.0-beta.2


Balances

If the user has money, when the server restarts the money will reset to 0 according to the default config
/addbalance to player and restart server, and also some translation message like /pay is missing

can you provide screenshots of the commands behavior?

the reason that your data is not being saved is because you are using a save mode that doesn't support querying during the server shutdown, it's unreliable to query during the shutdown. Have you checked the save options.

closing due to inactivity.


Error downloading jpegsrc.v9a.tar.gz

I'm getting the following build error:
$ bazel build -c opt --config=cuda //tensorflow/cc:tutorials_example_trainer
ERROR:  tensorflow/tensorflow/core/platform/default/build_config/BUILD:36:1:
no such package '@jpeg_archive//':
Error downloading from http://www.ijg.org/files/jpegsrc.v9a.tar.gz

It turns out that bazel cannot download directly from the ijg.org in my network, due to security restrictions. However, I am able to download the file by hand.
I tried just putting it into the required .cache/bazel location by hand and run the bazel command again. This used to work, but it won't work in the latest version, and the same error comes up again.
Would it be possible to enable bazel to pick up a locally downloaded jpegsrc.v9a.tar.gz file?
Or, if I don't work on JPEGs, how do I get rid of this dependency altogether?

Can you file this bug with bazel and mention this bug?  bazel team is much more suited to helping you in this case.


Move record-related utilities into separate file

This is related to #93

I am assuming that @rickmak is okay with this.


Corresponds to the omitted specific character set.

Fix #218
If there are spaces in a particular character set, they are interpreted in the same way as IR6. (Strictly speaking, this accepts data that violates the standard, but it can interpret data that meets the standard.)

Actually I'll get this submitted ASAP and make the comment changes later. Thanks so much for the contribution @marineotter !


rootDir does not get resolved/interpolated correctly

Informations

Type
Version

Bug
2.0.12

Description
The rootDir does not get resolved correctly.
I followed the guide on https://romakita.github.io/ts-express-decorators/#/getting-started and besides some small tweaks to make it actually work, I found that the rootDir does not get resolved and placed correctly in the scanner paths.
"C:\Program Files\JetBrains\IntelliJ IDEA 2017.2\bin\runnerw.exe" "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" run start --scripts-prepend-node-path=auto

><EMAIL_ADDRESS>start C:\Users\Jeroen\IdeaProjects\express-typescript
> concurrently "npm run tsc:w" "nodemon server.js --ignore *.ts"

[1] [nodemon] 1.11.0
[1] [nodemon] to restart at any time, enter `rs`
[1] [nodemon] watching: *.*
[1] [nodemon] starting `node server.js`
[0]
[0] ><EMAIL_ADDRESS>tsc:w C:\Users\Jeroen\IdeaProjects\express-typescript
[0] > tsc -w
[0]
[1] [2017-08-28 21:15:01.622] [INFO ] [TSED] - Scan files : C:\Users\Jeroen\IdeaProjects\express-typescript\${rootDir}\controllers\**\*.js
[1] [2017-08-28 21:15:01.627] [INFO ] [TSED] - Scan files : C:\Users\Jeroen\IdeaProjects\express-typescript\middlewares\**\*.js
[1] [2017-08-28 21:15:01.628] [INFO ] [TSED] - Scan files : C:\Users\Jeroen\IdeaProjects\express-typescript\services\**\*.js
[1] [2017-08-28 21:15:01.628] [INFO ] [TSED] - Scan files : C:\Users\Jeroen\IdeaProjects\express-typescript\converters\**\*.js
[1] [2017-08-28 21:15:01.632] [INFO ] [TSED] - settings.rootDir => C:\Users\Jeroen\IdeaProjects\express-typescript
[1] [2017-08-28 21:15:01.632] [INFO ] [TSED] - settings.env => development
[1] [2017-08-28 21:15:01.632] [INFO ] [TSED] - settings.httpPort => 8080
[1] [2017-08-28 21:15:01.632] [INFO ] [TSED] - settings.httpsPort => 8000
[1] [2017-08-28 21:15:01.632] [INFO ] [TSED] - settings.endpointUrl => /rest
[1] [2017-08-28 21:15:01.632] [INFO ] [TSED] - settings.version => 1.0.0
[1] [2017-08-28 21:15:01.632] [INFO ] [TSED] - settings.uploadDir => ${rootDir}/uploads
[1] [2017-08-28 21:15:01.633] [INFO ] [TSED] - settings.debug => false
[1] [2017-08-28 21:15:01.633] [INFO ] [TSED] - settings.authentification => undefined
[1] [2017-08-28 21:15:01.633] [INFO ] [TSED] - settings.mount => { '/': '${rootDir}/controllers/**/*.js' }
[1] [2017-08-28 21:15:01.635] [INFO ] [TSED] - settings.componentsScan => [ '${rootDir}/middlewares/**/*.js',
[1]   '${rootDir}/services/**/*.js',
[1]   '${rootDir}/converters/**/*.js' ]
[1] [2017-08-28 21:15:01.636] [INFO ] [TSED] - settings.acceptMimes => [ 'application/json' ]
[1] [2017-08-28 21:15:01.636] [INFO ] [TSED] - Build services
[1] [2017-08-28 21:15:01.707] [INFO ] [TSED] - Build controllers
[1] [2017-08-28 21:15:01.708] [INFO ] [TSED] - Routes mounted :
[1] [2017-08-28 21:15:01.708] [INFO ] [TSED] -
[1] ┌────────┬──────────┬──────────────┐
[1] │ Method │ Endpoint │ Class method │
[1] └────────┴──────────┴──────────────┘
[1] [2017-08-28 21:15:01.730] [INFO ] [TSED] - HTTP Server listen on http://<IP_ADDRESS>:8080
[1] [2017-08-28 21:15:01.731] [INFO ] [TSED] - HTTP Server listen on https://<IP_ADDRESS>:8000
[1] Server started...
[1] [2017-08-28 21:15:01.733] [INFO ] [TSED] - Started in 103 ms

As you can see, at one point it shows the controller path as C:\Users\Jeroen\IdeaProjects\express-typescript\${rootDir}\controllers\**\*.js and another time as '${rootDir}/controllers/**/*.js'.
The odd thing is that the other directories do get resolved correctly, and if I place my calendarCtrl.ts in there and adjust the ServerSettings, it works.

I was able to get it running by changing my ServerSettings to
@ServerSettings({
    rootDir: Path.resolve(__dirname),
    mount: {
        "/": "controllers/**/*.js"
    },
    componentsScan: [
        "middlewares/**/*.js",
        "services/**/*.js",
        "converters/**/*.js"
    ],
    acceptMimes: ["application/json"]
})

Hi @Ionaru ,
Wich version of Windows have you ?
See you,
Romain

I'm using Windows 10, version 1703, build 16251.1002.
But I've had the same issue on my Linux Kubuntu 17.10 machine.

Thanks @Ionaru, I'll try to reproduced your bug and fixed it :)
Ok. I haven't issue on mac or travis (linux). But I thinks it's a real bug ;)
Can you send me the exact setting server configuration that produce the bug ?

@ServerSettings({
    rootDir: Path.resolve(__dirname),
    acceptMimes: ["application/json"]
})

Those settings will reproduce the bug, it's an exact copy from the 'getting-started' guide at https://romakita.github.io/ts-express-decorators/#/getting-started

It's bug. I've the same issue with the single quote. I'll fixed it ASAP ;)

Awesome, thanks!

@Ionaru
Fixed with the v2.0.13 :)


added concurrent queue operator and moved to swift v3.0.1

updated project to swift v3.0.1
added concurrent queue operator  ≠>  [alt]+[=] on a mac.
removed functions with no return type ( not necessary in swift 3)

Thanks! That concurrent queue option is a nice idea.


License

We like to use mastertheboss, however, we need a proper license on the project. Something like Apache2, MIT or BSD would suit the project well. Would it be possible to add one?

Hi,
sorry for the delay. I've added a MIT licensing info on the project's home
page at github
Regards
Francesco
2016-05-03 10:07 GMT+02:00 Matthias Kricke<EMAIL_ADDRESS>
We like to use mastertheboss, however, we need a proper license on the
project. Something like Apache2, MIT or BSD would suit the project well.
Would it be possible to add one?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
https://github.com/fmarchioni/mastertheboss/issues/2

Thanks @fmarchioni . I made a pull request to add a proper LICENSE file to the project.

The license question ins answered and a MIT license is added. So we can close this issue


🔧 snek profileDropdown currency

PR type

[x] Bugfix

What's new?

[x] PR closes #4056
[x] not 100% confident about this change

Before submitting Pull Request, please make sure:

[x] My contribution builds clean without any errors or warnings
[x] I've merged recent default branch -- main and I've no conflicts
[x] I've tried to respect high code quality standards
[x] I've didn't break any original functionality
[x] I've posted a screenshot of demonstrated change in this PR

Had issue bounty label?

[ ] Fill up your KSM address: Payout

Screenshot

this will change all of the correctly named KSM to BSX which was the initial reason why this bug appeared in the commit mention in the issue

this will change all of the correctly named KSM to BSX which was the initial reason why this bug appeared in the commit mentioned in the issue

Alright thanks for the info wasn't sure about this one, closing it for now, need more debug


Consuming message by Interface using a referenced assembly results in messages put in error queue

We have a project called "Messages" that contains all of our messages.  The messages are defined as interfaces.  Example: ICustomerCreated { Guid CustomerId { get; } }
We have another project "WebApi" that publishes a concrete implementation of the message
CustomerCreated : ICustomerCreated { Guid CustomerId { get; set;} }
We have another project "Service" (A windows service using TopShelf) that has a Consumer implementation CustomerCreatedConsumer : Consumes.All  {  ...  }
When we publish the message using MassTransit version 2.9.8 or 2.9.7 the Service never receives the message and is sent to the "error" queue by Masstransit.  This worked in version 2.9.5.
We found that If a message is published within the same solution, and the Consumer subscribes to the interface with that solution it works.  It is only when we put our message interfaces in a separate project that it 'breaks'. This is intended so that multiple services in our domain can subscribe to the same events.
We are using RabbitMQ.  There is no exception thrown. All the messages result in the message being sent to the error queue indicated below...
2014-10-16 14:22:12,713 INFO MassTransit.Messages MOVE:rabbitmq://local-rmq.loopbackllc.com:5672/Local/LoopbackAnalytics.CctpListBill.WindowsService:rabbitmq://local-rmq.loopbackllc.com:5672/Local/LoopbackAnalytics.CctpListBill.WindowsService_error:61140000-abe0-00ff-22df-08d1b78d99b9:
I would expect MassTransit to work in this senario, but not familiar enough with the code base and the changes that have taken place since 2.9.5 that would have caused this to no longer work.
Regards

Yes. I can confirm that I experienced the same issue with Version 2.9.7 and that I fixed it by upgrading to Version 2.9.9.
It would be nice if the issue and the fix were documented, but Version 2.9.9 appears to be working correctly again.


[Suggestion] "Fair" version

That would not let you clip through the ground

This can already be achieved by disabling the noClip setting.


Add Snow Engineering public API repository.

I've transferred the existing API list from Canvas into a Markdown file. I also expanded upon the original table by including HTTPS compatibility, whether an API key is required, and a brief description for each API. Some changes were made to the existing items, listed here:
Changelog
Add link
SpaceX API Docs v4 (Latest)

https://github.com/r-spacex/SpaceX-API/tree/master/docs#rspacex-api-docs

Move to different table
AI Image Generation (https://generated.photos/api)

Other Links ⟹ Public API List

The site has now made a dedicated API.

List of APIs (https://apilist.fun/)

Public API List ⟹ Other Links

I've moved this to "Other Links" because it's a database of APIs, rather than an API itself.

Change page directory
Congress API

https://api.congress.gov/#/ ⟹ https://api.congress.gov/

The Movie DB

https://www.themoviedb.org/settings/api ⟹ https://www.themoviedb.org/documentation/api

I've changed this for ease of access. The "settings" directory requires the user to log in, whereas the "documentation" directory doesn't.

List of APIs

https://generated.photos ⟹ https://generated.photos/api

The link has been changed to go directly to the new API page.

Thank you


recovery

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 63.95%. Comparing base (0119648) to head (90bef7a).

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files

@@           Coverage Diff           @@
##           master       #8   +/-   ##
=======================================
  Coverage   63.95%   63.95%
=======================================
  Files           3        3
  Lines          86       86
=======================================
  Hits           55       55
  Misses         31       31

Continue to review full report in Codecov by Sentry.

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


Laravel Installer

Laravel installer is crafting the dev-master version instead of the latest stable published release (5.1.3).

You're only getting the dev-master app skeleton, all the dependencies should resolved to stable 5.1.x released.

I know about the dependencies...

But I think it should be the stable version to the app skeleton.

There no breaking changes in dev-master (because if anything it would be tagged as 5.1.x, e.g 5.1.4 as next patch release), 5.2 changes goes to develop branch.
Don't you want to get the latest code for 5.1, for example https://github.com/laravel/laravel/compare/v5.1.3...master

Ok,
thanks for the explanation.


Added ability to provide parameters to a new thread.

Done with the already limited knowledge I had from how the Lua stack works from years ago ;)
This also fixes #2.
In a nutshell this allows you to send parameters to a new thread.
local thr = thread.new(function(param1)
    print(param1)
end, "Parameter to new thread")

results in "Parameter to a new thread" being printed out.

Aww, I wanted to do that...

Isn't Lua awesome? Even with both of us having half-forgotten the APIs, we were able to get this entire project working :)

Yeah, I didn't even do allot with Lua's C API, but I still remember enough :)


Add interfaces

Before I merge this I'd like to get some quick feedback. There are two approaches to the modeling of ILinearExpression. One is to model it as a sequence of elements like this:
[<RequireQualifiedAccess>]
type LinearElement =
    | Constant of float
    | Decision of coefficient:float * decision:Decision

type ILinearExpression =
    abstract member Elements : seq<LinearElement>

I don't like this because it puts a lot of burden on the people interpreting the ILinearExpression to write code which will not blow a stack will iterating through a potentially long sequence.
I prefer this approach:
type ILinearExpression =
    abstract member Decisions : ISet<IDecision>
    abstract member Coefficients : IReadOnlyDictionary<IDecision, float>
    abstract member Offset : float

Which is much easier to use for someone writing a Solver backend. This is the form I prefer to work with when mapping from the the Flips.Model to the Solver model.

few thoughts:
ILinearExpression.Decisions may be redundant or confusing if it is the same set as ILinearExpression.Coefficients.Keys.
Also, the current form is convenient for other use case, like pretty printing of terms.
Maybe you should preserve the current type and have seq<LinearElement> -> ILinearExpression transformation function, which is done once when constructing the expression objects?

So you're okay with leaving the burden of interpretation up to the Solver implementer? Like I said, my concern is with someone blowing the stack easily.

Like I said, my concern is with someone blowing the stack easily.

Sorry, I may overlook what is the workflow around that, if when I input expression using the operators: someDecision1 * 2.4 + someDecision2 * 4.2 it gives me an seq<LinearElement>, it may be represented as "lazy" ILinearSequence or one in the making, which materializes in the solver into a "reduced" ILinearExpression whenever the model is given for solving.
I'm not clear when the transformation happens, I assume it can happen close to running the solver before registering the constraints / objectives.
I've had to use the current LinearExpression.Reduce to avoid the issue you mention.

It overal looks good to me, I see it will replace lots of the internal records in the dev branch.

I decided to go with an ILinearExpression of
type ILinearExpression =
    abstract member Terms : seq<LinearTerm>

I am considering whether it would be worthwhile to include an ISimplifiedLinearExpression of the form:
type IReducedLinearExpression =
    abstract member SimplifiedTerms : IReadOnlyDictionary<IDecision, float>
    abstract member Offset : float

And a helper function for mapping from ILinearExpression to ISimplifiedLinearExpression. The reason for this is because I find it easier to work with an ISimplifiedLinearExpression when writing the code to interop with a Solver. Without this, I would have to implement the simplification logic in each Solver backend. I'm going to see how much trouble it is before I commit to that. A small amount of duplicate code is fine. Putting the ISimplifiedLinearExpression interface in the Flips.Solver library may make more sense.
The names of types are not final. I was exploring how to implement the interfaces but I plan on going back and making the names of types more clear.

@smoothdeveloper So I think I got this to the point where I feel I can merge this into dev. Normally I would NOT like a PR to be this large. The reason it ended up that way was because I wanted to migrate all the code to the interfaces and get the tests and examples running again.

@smoothdeveloper So I think I got this to the point where I feel I can merge this into dev. Normally I would NOT like a PR to be this large. The reason it ended up that way was because I wanted to migrate all the code to the interfaces and get the tests and examples running again.

Normally I would NOT like a PR to be this large. The reason it ended up that way was because I wanted to migrate all the code to the interfaces and get the tests and examples running again.

I'm perfectly OK with the PR and motives, this is a first take of splitting some of the model type representation from the API with the idea we should use interfaces to facilitate a broad axis of extensibility.
I think as we mature the rest of the API and see more extensive samples, use case specific circumstances would benefit such extensibility, as an easy to reason escape path when some of the choices made for the default representation hits a wall.
Also, since this PR was open, no other suggestions really came to me or others to help you explore more options.
Merging this PR will probably enable me to do a small round of adjustments in the CPLEX backend.

Normally I would NOT like a PR to be this large. The reason it ended up that way was because I wanted to migrate all the code to the interfaces and get the tests and examples running again.

I'm perfectly OK with the PR and motives, this is a first take of splitting some of the model type representation from the API with the idea we should use interfaces to facilitate a broad axis of extensibility.
I think as we mature the rest of the API and see more extensive samples, use case specific circumstances would benefit such extensibility, as an easy to reason escape path when some of the choices made for the default representation hits a wall.
Also, since this PR was open, no other suggestions really came to me or others to help you explore more options.
Merging this PR will probably enable me to do a small round of adjustments in the CPLEX backend.

Regarding the technicals of the merge, since there is a little bit of noise in the diff (some whitespace adjustments, commented code) and there has been significant edits that are potentially conflicting in main branch, I'd suggest to proceed like this:

rebase dev on top of main (I think there is only one PR of mine that I'll need to rebase, but it may impact some private branches for other people)
open another PR with the minimum changes of introducing the interfaces but with none of the tweaks to some of the code that @TysonMN has adjusted in main, merge that separate PR
see whatever is missing in the API surface from the changes in this PR, possibly, minimize the diff by removing all the places where there is conflict (because we are in better place reevaluating the rebased dev from scratch about missing adjustments that would have slipped)

Regarding the technicals of the merge, since there is a little bit of noise in the diff (some whitespace adjustments, commented code) and there has been significant edits that are potentially conflicting in main branch, I'd suggest to proceed like this:

rebase dev on top of main (I think there is only one PR of mine that I'll need to rebase, but it may impact some private branches for other people)
open another PR with the minimum changes of introducing the interfaces but with none of the tweaks to some of the code that @TysonMN has adjusted in main, merge that separate PR
see whatever is missing in the API surface from the changes in this PR, possibly, minimize the diff by removing all the places where there is conflict (because we are in better place reevaluating the rebased dev from scratch about missing adjustments that would have slipped)

I tried rebasing dev onto main last night and the project files got really messed up for some reason. Cannot tell you why. The dev branch here is now messy. I tried fixing it but there's a lot of project settings toggling in the .fsproj files that I'm not used to.

I tried rebasing dev onto main last night and the project files got really messed up for some reason. Cannot tell you why. The dev branch here is now messy. I tried fixing it but there's a lot of project settings toggling in the .fsproj files that I'm not used to.

I tried rebasing dev onto main last night and the project files got really messed up for some reason.
I've mostly done merges in the past.

Generally speaking, I prefer rebasing when there are no conflicts and merging when there are.  Do you feel like you have the correct code after merging?

I tried rebasing dev onto main last night and the project files got really messed up for some reason.
I've mostly done merges in the past.

Generally speaking, I prefer rebasing when there are no conflicts and merging when there are.  Do you feel like you have the correct code after merging?

So far the code looks good. The .fsproj files are what need fixing.

So far the code looks good. The .fsproj files are what need fixing.

Ok, I will take a look soon.

Ok, I will take a look soon.

I tried merging main into dev.  There were conflicts in eight files but none of them were in project files.  Can you merge main into dev, resolve the conflicts in those eight files, and then share that work in a branch?  At that time, I can see what issues remain in the project files.

I tried merging main into dev.  There were conflicts in eight files but none of them were in project files.  Can you merge main into dev, resolve the conflicts in those eight files, and then share that work in a branch?  At that time, I can see what issues remain in the project files.

I honestly can't figure out what happened. The .fsproj files are so messed up I can't even fix them. They are using a lot of toggles that I've never used before so I have a really hard time debugging the error messages I get from the build. I have half a mind to just nuke the dev branch since it appears to be so mangled at this point. I've spent several hours trying to fix it and I'm not getting anywhere.

I honestly can't figure out what happened. The .fsproj files are so messed up I can't even fix them. They are using a lot of toggles that I've never used before so I have a really hard time debugging the error messages I get from the build. I have half a mind to just nuke the dev branch since it appears to be so mangled at this point. I've spent several hours trying to fix it and I'm not getting anywhere.

Yeah, dev looks so bad at this point, I don't know if it's salvageable. Code formatting got mangled and I can't figure out how to revert the rebase.

Yeah, dev looks so bad at this point, I don't know if it's salvageable. Code formatting got mangled and I can't figure out how to revert the rebase.

I'm going to try to undo the rebase and try over

I'm going to try to undo the rebase and try over

So, I think I was able to revert the rebase and I'm trying to merge main into dev. I'm not a git wizard so I'm learning as I go. All the formatting changes didn't help but that's part of why this needs to be done 🤷♂

So, I think I was able to revert the rebase and I'm trying to merge main into dev. I'm not a git wizard so I'm learning as I go. All the formatting changes didn't help but that's part of why this needs to be done 🤷♂

I was able to revert the rebase, merge main into dev, and then patch up the conflicts between dev and add-interfaces. It's building on my machine now using the build.cmd script. @TysonMN could you see if the dev branch is working for you now?

I was able to revert the rebase, merge main into dev, and then patch up the conflicts between dev and add-interfaces. It's building on my machine now using the build.cmd script. @TysonMN could you see if the dev branch is working for you now?

Executing sh build.sh seems to work.  Building in Visual Studio fails only for Flips.Solver.Cplex because the dependent assemblies ILOG.Concert and ILOG.CPLEX are missing.

Executing sh build.sh seems to work.  Building in Visual Studio fails only for Flips.Solver.Cplex because the dependent assemblies ILOG.Concert and ILOG.CPLEX are missing.

@TysonMN good point, we are going to need to make non redistributable solvers opt-in options in the build script.

@TysonMN good point, we are going to need to make non redistributable solvers opt-in options in the build script.


Module ./lib/OicDevice not found while using the latest commit before moving to 1.2.0

I wanted to test the iotivity-node with new features without moving to 1.2.0-0 release, so I checked out the latest commit before pumping to 1.2.0. iotivity-node was built and packages the distributable tree successfully, but after untar the distributable tree in the Edison board running standard Yocto image, the OCF servers can not be run, and I got below error, it looks like the module './lib/OicDevice' is missing, it also does not exist in the build tree. DId I miss anything?  Thanks.
root@edison:~/node-examples/iotivity-node# node led.js
module.js:327
throw err;
^
Error: Cannot find module './lib/OicDevice'
at Function.Module._resolveFilename (module.js:325:15)
at Function.Module._load (module.js:276:25)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at Object. (/home/root/node-examples/iotivity-node/node_modules/iotivity-node/inde)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Module.require (module.js:353:17)
root@edison:~/node-examples/iotivity-node#

Hi, @ttzeng , from the error log, I think the node didn't load correct version of iotivity-node. So far as I know, from iotivity-node 1.2.0, there is no lib/OicDevice.js any more. I am afraid the iotivity-node version the node tried loading on your Edison system is still 1.1.x
When node tries to require('iovitity-node'), it actually loads the index.js, which simply loads lib/Device.js (module.exports = require( "./lib/Device" );, for iotivity-node 1.2.0)

The Yocto image does not include iotivity-node by default, the only iotivity-node in the device is the one I built iotivity-node with the latest commit before pumping to 1.2.0. Since my OCF servers are still using 1.1.1 API "require('iotivity-node')('server')"

OicDevice.js has been renamed to Device.js, but the index.js still uses the old filename in the commit you are using.
You can try making the following change in index. js or use the latest released version that contains this fix already.
-module.exports = require( "./lib/OicDevice" );
+module.exports = require( "./lib/Device" );

Thanks Babu.  Now I got below error, and it looks like the code already use 1.2.0 API even I checkout this commit.
root@edison:~/node-examples/iotivity-node# node led.js
/home/root/node-examples/iotivity-node/led.js:2
device = require('iotivity-node')('server'),
^
TypeError: require(...) is not a function
at Object. (/home/root/node-examples/iotivity-node/led.js:2:38)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)
at startup (node.js:139:18)
at node.js:968:3
root@edison:~/node-examples/iotivity-node#

Suggest to checkout this commit if your OCF servers use iotivity-node 1.1.1 API.

@ttzeng Your server (i.e led.js) seems to based on the old iotivity-node implementation.
The iovity-node version you built is based on the latest OCF JS API spec, so the server must be updated to the latest API spec to make it work.
I'm working on updating SmartHome demo OCF servers to the latest JS spec. You can try with the servers in the commit https://github.com/01org/SmartHome-Demo/commit/face8f4a8

@ttzeng there were some changes to the OCF JS API which means you have to make the corresponding changes to all the applications that use iotivity-node. The tests accompanying the OCF JS API spec are excellent examples of simple applications that make use of the high-level API.

Thank you @nagineni @gabrielschulhof ! I tried to run the rgb_led server in the 'iotivity_1.2.0' branch of the smart home demo, but it looks like something need to be done for the insecure mode (unset 'SECURE' env), otherwise the Promise object is pending after invoking server.enablePresence(), and I got 'UNAUTHORIZED_REQ : Request is not authorized by Resource Server' from the client side.
Do we support only secure mode for now?

@ttzeng I think so. I certainly don't test without SECURED=1 anymore.

@ttzeng  Servers and cleint apps works in non-secure mode also, if we build and install iotivity without SECURED=1. I tried on my custom Yocto build(iotivity without SECURED=1) and the apps seems to be working fine in non-secure mode.

My iotivity-node on the server side is installed by "npm install", is it enable secured mode by default?

@ttzeng yes. By default, 1.2.0-0 builds iotivity internally with SECURED=1, unless you specify both OCTBSTACK_CFLAGS and OCTBSTACK_LIBS.

Thanks @gabrielschulhof @nagineni for the clarifications, I have no further question, and we could close this now. Thank you~


Check for focus support on window.previousActiveElement.focus(); code.

My application uses a lot of SVGs and SVGs do not support blur or focus methods.  This becomes a problem anytime you attach a sweet alert to an SVG button.  Part of the base swal code tries to set focus back to the previous active element when exiting an alert.  Obviously if the previous active element doesn't support this method it throws an error.
My solution was to add a typeof check before setting focus back to the previous element. I think this should be included in the base library.
// Reset the page to its previous state
window.onkeydown = previousWindowKeyDown;
if (window.previousActiveElement && typeof window.previousActiveElement.focus == "function") {
     window.previousActiveElement.focus();
}

I presume you're speaking about this line: https://github.com/limonte/sweetalert2/blob/b2e91d7c67d2d57affa6daf0a890af84f48f1470/src/utils/dom.js#L293
Why changing states to window ?
Plus, I don't think that changing from if(states.previousActiveElement.focus) to if(typeof states.previousActiveElement.focus == 'function') will fix the problem if there is any.
Can you give more information about the error you get?

I didn't mean to change, I meant to add the && condition to the IF statement.  This way if the "previousActiveElement" doesn't support FOCUS you won't get an error from sweetalert.
Right now my application uses a lot of SVGs and SVGs do not support focus or blur, so if I show a sweet alert from an SVG and it is the "previousActiveElement" I get an error from sweetalert "object doesn't support that property or method" etc.
I had to add this and condition to the check to prevent this error.

Okay but - I already see that && condition in the code and it looks like it already does what you're proposing to do. I don't understand...

Correct but I had to add that and condition myself it's not part of the original code. I think it should be. I don't want to have to hack it in everytime I pull down a new version. Does that make sense?

Hi @OmikronTheta and thanks for reporting this issue! Could you please make a quick jsfiddle to help us in fixing it?

JSFiddle template: https://jsfiddle.net/limon/ad3quksn/

I'm closing this issue due to inactivity, @OmikronTheta please leave a comment if you think it should be reopened.


Missing Hassio Addon Page

HASSIO (hass --version):
0.63.3
Just updated to 0.63.3 and found HASSIO Addon Link is missing on left side

Discovery was disabled


Implementing SRP

Updated Project database according to what is needed

by

Removing unnecessary fields, adding Timeline as new foreign keys

Adding new class - Timeline

Add Control class - changed settings function

Add Controller class

Updated Project class to display UI

Updated Project Control

Removing unnecessary fields, adding Budget as foreign key

Adding new budget class

Add Control class

Add Controller class

Updated Project class to display UI


Timer should have an option to show stack trace when exceptions are thrown

Hi -- so I looked into this more carefully, and it turns out that we do print the stack trace, in debug mode.  I have enhanced the logging to make this more obvious in the PR below, but I think we can close this even without merging the PR.
https://github.com/exhi/hoist-core/pull/90


Switch not available

I get an error when I try to import Switch

I have upgraded to the newest version 2023.10 but I don't see a Switch class.

The above is a screenshot showing bootstrap5.py file in my installed packages. No Switch class present. Am I missing something?

I have the same issue. Could it do with the move to CalVer?

Confirmed it's not included in the latest release.
I added the following to my requirements.txt in the meantime:
git+https://github.com/django-crispy-forms/crispy-bootstrap5.git@main#egg=crispy-bootstrap5

Confirmed it's not included in the latest release.
I added the following to my requirements.txt in the meantime:
git+https://github.com/django-crispy-forms/crispy-bootstrap5.git@main#egg=crispy-bootstrap5

Note: anyone having an issue using the git, I had to do a pip uninstall crispy-bootstrap5 then install from git url.

The switches still don't show up...

The switches still don't show up...

Did you update your requirements.txt? This release solved it for me.
crispy-bootstrap5==2024.10


UICaptureImage,  Can I refer to the camera?

I used Google language translation.
I am a user using your great plugin.
Can you use UICaptueImage to capture only 3d space with reference to the camera?
I do not know how to capture 3D space (characters, objects, etc.) without a UI when capturing a screen.
Maybe there is a way? Please, reply.
Thank you for creating such a great plugin.
Thank you

Hi @hyuckyang ,
No. In the current version, that is impossible.
However, it is not difficult to implement. :)

Add UICapturedImage's CommandBuffer to camera
Wait a frame. The captured image is generated
Remove UICapturedImage's CommandBuffer from camera

I will implement it in the near future. :)

thank you!!!!!!!


Running Augmentation with register_coco_instances

Hello dnilv, thanks for your work!
I am having trouble running your augmentation helper. What am I doing wrong here? Is it possible to use your code with the register_coco_instances Dataset registration? Do you have any example 'how to use' notebook?
I registered the datasets with register_coco_instances:
from detectron2.data.datasets import register_coco_instances
for d in ["train", "test"]:
    register_coco_instances(f"dataset_{d}", {}, f"/content/{d}.json", f"/content/{d}")

Added this to the config:
cfg.INPUT.ALBUMENTATIONS = "/content/sample-detection-albu-config.json"
I am using your DummyAlbuMapper and used that to define a new Trainer instance:
class Trainer(DefaultTrainer):
    @classmethod
    def build_train_loader(cls, cfg):
        mapper = DummyAlbuMapper(cfg, is_train=True)
        return build_detection_train_loader(cfg, mapper=mapper)

trainer = Trainer(cfg)
trainer.train()

When I try to train the model I get following Error:
[06/29 23:04:24 d2.engine.train_loop]: Starting training from iteration 0
ERROR [06/29 23:04:25 d2.engine.train_loop]: Exception during training:
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/detectron2/engine/train_loop.py", line 132, in train
    self.run_step()
  File "/usr/local/lib/python3.6/dist-packages/detectron2/engine/train_loop.py", line 215, in run_step
    loss_dict = self.model(data)
  File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 550, in __call__
    result = self.forward(*input, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/detectron2/modeling/meta_arch/rcnn.py", line 130, in forward
    _, detector_losses = self.roi_heads(images, features, proposals, gt_instances)
  File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 550, in __call__
    result = self.forward(*input, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/detectron2/modeling/roi_heads/roi_heads.py", line 669, in forward
    losses.update(self._forward_mask(features, proposals))
  File "/usr/local/lib/python3.6/dist-packages/detectron2/modeling/roi_heads/roi_heads.py", line 773, in _forward_mask
    return self.mask_head(mask_features, proposals)
  File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 550, in __call__
    result = self.forward(*input, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/detectron2/modeling/roi_heads/mask_head.py", line 182, in forward
    return {"loss_mask": mask_rcnn_loss(x, instances, self.vis_period)}
  File "/usr/local/lib/python3.6/dist-packages/detectron2/modeling/roi_heads/mask_head.py", line 55, in mask_rcnn_loss
    gt_masks_per_image = instances_per_image.gt_masks.crop_and_resize(
  File "/usr/local/lib/python3.6/dist-packages/detectron2/structures/instances.py", line 60, in __getattr__
    raise AttributeError("Cannot find field '{}' in the given Instances!".format(name))
AttributeError: Cannot find field 'gt_masks' in the given Instances!
[06/29 23:04:25 d2.engine.hooks]: Total training time: 0:00:01 (0:00:00 on hooks)

---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-33-3435b262f1ae> in <module>()
----> 1 trainer.train()

11 frames

/usr/local/lib/python3.6/dist-packages/detectron2/structures/instances.py in __getattr__(self, name)
     58     def __getattr__(self, name: str) -> Any:
     59         if name == "_fields" or name not in self._fields:
---> 60             raise AttributeError("Cannot find field '{}' in the given Instances!".format(name))
     61         return self._fields[name]
     62

AttributeError: Cannot find field 'gt_masks' in the given Instances!

If this problem still relevant?
The point is that I didn't implement augmentations for masks. So when you are training instance segmentation model, there will be no ground truth masks in instances.
You need to modify DummyAlbuMapper to support mask augmentations, because I only implemented bbox augmentations.


Bug with thumbnail.vtt and sprite png

WEBVTT
00:00:00.000 --> 00:01:02.000
thumbnail.png#xywh=0,0,160,90
00:01:02.000 --> 00:01:34.000
thumbnail.png#xywh=160,0,160,90
00:01:34.000 --> 00:02:06.000
thumbnail.png#xywh=320,0,160,90
...
with url https://demo.com/path/thumbnail.vtt
player loads https://demo.com/thumbnail.png [Wrong]
instead of https://demo.com/path/thumbnail.png [Correct]
it works fine with jpg extension image
Tested with latest version via CDN, here is live demo for you
test it here: https://www.vidstack.io/player/demo?framework=react&view=player
Thank you

I can't repro this, the test link has expired. If you can provide a new link then I can reopen and test this issue, thanks!

Hello,
Sorry forgot to update this. I found the root cause. It is not about file extensions, but url format
Let say my player page is at https://demo.com/player, thumbnail is at https://demo.com/{videoId}/thumbnail.vtt (same host with player).
So both settings bellow should work:
layout: new VidstackPlayerLayout({ thumbnails: 'https://demo.com/{videoId}/thumbnail.vtt' }),
layout: new VidstackPlayerLayout({ thumbnails: '/{videoId}/thumbnail.vtt' }),
But only first one is working


syntax :true Don't work

import hljs from 'highlight.js' import 'highlight.js/styles/monokai-sublime.css' import ReactQuill from 'react-quill';  import 'react-quill/dist/quill.snow.css';  modules= {             toolbar: [                 [ 'code-block']             ],             syntax: true         }
Error: Syntax module requires highlight.js. Please include the library on the page before Quill.
OR
import hljs from 'highlight.js' import 'highlight.js/styles/monokai-sublime.css' import ReactQuill from 'react-quill';  import 'react-quill/dist/quill.snow.css';  modules= {             toolbar: [                 [ 'code-block']             ],             syntax: {                 highlight: text => hljs.highlightAuto(text).value             }         }
issue:Each input is lost focus
https://github.com/zenoamaro/react-quill/issues/284 Could not find a solution

Try importing hljs into the global namespace:
import highlightjs

@alexkrolick I tried it, the result was high。
import 'highlight.js'
Error: Syntax module requires highlight.js. Please include the library on the page before Quill.

@alexkrolick I think it would be useful to add support to this to react-quill or at least document in the README how to achieve this. After all syntax: true is a core feature of quill.

It really depends on your bundle set up (Webpack/Typescript/Babel/script). If you want to document a few common patterns, a PR is welcome.

Here is the solution, it took me a long time to find : https://codesandbox.io/s/nww9q0v67p?from-embed
It is a real shame that Quill's documentation is so deficient. They spent all this time creating a sleek framework and website but their docs are so bad.

Here is the solution, it took me a long time to find : https://codesandbox.io/s/nww9q0v67p?from-embed

This does work on a small and light sandbox and localhost project, but for some reason once I implement this on my actual project Quill just loses focus with every keystroke. I haven't been able to identify the source of this problem.

Here is the solution, it took me a long time to find : https://codesandbox.io/s/nww9q0v67p?from-embed

This does work on a small and light sandbox and localhost project, but for some reason once I implement this on my actual project Quill just loses focus with every keystroke. I haven't been able to identify the source of this problem.

I have this issue too :(

Here is the solution, it took me a long time to find : https://codesandbox.io/s/nww9q0v67p?from-embed

This does work on a small and light sandbox and localhost project, but for some reason once I implement this on my actual project Quill just loses focus with every keystroke. I haven't been able to identify the source of this problem.

Same issue for me

Anyone find a solution to this? I am having this issue too

Here is the solution, it took me a long time to find : https://codesandbox.io/s/nww9q0v67p?from-embed

This does work on a small and light sandbox and localhost project, but for some reason once I implement this on my actual project Quill just loses focus with every keystroke. I haven't been able to identify the source of this problem.

Same issue for me

Anyone find a solution to this? I am having the same issue too


Hovering extension for trimmed decorations

At the moment we publish trimmed decorations as virtual text. The full hoverMessage is discarded.
The enhancement would allow to show the full decoration in a hover popup.
Nvim LSP has the functions to show the popup hovering markdown window but I am not sure if it supports the registering of the markdown popup.
decoration-nvim might be of inspiration, but it probably it's as simple as storing the hoverMessage per line when getting the decorations, then we would check whether the line has decoration.
I think the easier approach of having to call a function to check for the decoration and show it is preferable to automatic popup as there could be a lot of noise from big popups appearing when we traverse lines.
The option of popup after staying in a line for some delay could be a nice option, though it's better to have it in a separate issue on its own, so we have a decoupled staying long in line callback that can trigger these other behaviours.

So my initial thought is to do something similar to what I did in coc-metals where the use can just execute a <leader>ws for example which triggers a function that does a lookup in a table where all the decoration expansions are stored, and then displays them in a hover. I'm going to play around with this a bit as that seems to be the simplest way probably.

Yes, those are exactly my thoughts. Initially M.decoration was a table because one of the fields was a map from line number to the hover. Then we provide a function to pop up if there is something for that line.

Closed via #27


Redux store persistance

When I'm changing the app location (through a link for instance), I see that the redux's store is not persisted.
I'm using the polyglot package, which build the polyglot node where the locale and more are stored, but when I click a link to change the location, I see that the node values are empty while before changing the location I had, at least, the locale stored.
It seems that I need something like redux-persist, but I'm wondering if I don't have an issue as I don't see an app built with Rekit without this feature.
Am I doing something wrong?

Did you use 'Link' component from 'react-redux-dom' for the navigation? Which doesn't actually refresh the page.

Nope, I'm using reactstrap to build the UI, in this case a NavItem.
OK so this makes my app to refresh. So when building an app with Rekit studio, by default, there isn't a persisting strategy, on page refresh the Redux store is cleared?

BTW I found the usage of history.push() from the source of the Link component from the react-redux-dom package.
I'm using it as much as I can.
But that doesn't change the purpose of this issue. Persisting the store should be implemented or at least documented.

@zedtux To persist your data you can use another approach, like localStorage.
I think that redux used to storage the data after a full refresh page.
I have a example:
actions
    .login(data)
    .then((res) => {
      localStorage.setItem('user_data', JSON.stringify(res.data));
      this.props.history.push('/lists');
    })
    .catch((error) => {
      const inputsError = processRequestErrors(error.response.data);
      this.setState({ inputsError: inputsError });
    });

Now I can get the user_data after a refresh or if user close and reopen my site.

I'm using the redux-persist package which does this for me under the hood, but thank you @ianitsky for your comment.
Just to be sure : I'm not looking for a solution to persist the data, I'm opening a discussion about persisting the data as it isn't the case by default in Rekit.

@zedtux , Thanks for the tip. I'll try redux-persist


GROOVY-11309 Optimise bytecode for empty list expressions

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

Comparison is base (359ee64) 68.5308% compared to head (749e225) 68.5283%.

Additional details and impacted files

@@                Coverage Diff                 @@
##               master      #2054        +/-   ##
==================================================
- Coverage     68.5308%   68.5283%   -0.0025%
+ Complexity      29178      29177         -1
==================================================
  Files            1422       1422
  Lines          113495     113502         +7
  Branches        19548      19549         +1
==================================================
+ Hits            77779      77781         +2
- Misses          29178      29181         +3
- Partials         6538       6540         +2

Files
Coverage Δ

...rg/codehaus/groovy/classgen/AsmClassGenerator.java
84.1482% <100.0000%> (+0.0826%)
:arrow_up:

... and 2 files with indirect coverage changes

This looks okay to me. But, by way of background, if we ever wanted to change the default list in Groovy from ArrayList to LinkedList (not that we would), we would now have one more place to make a change. So, if we thought such changes might be on the cards, this would increase the maintenance burden. But I think we are okay here.

Thanks. In that case, would you like me to add a code comment to ScriptBytecodeAdapter#createList, referencing this change?

Thanks. In that case, would you like me to add a code comment to ScriptBytecodeAdapter#createList, referencing this change?

Probably not needed in this case.

How about creating empty map, empty array?
IMHO, both maintenance and flexibility are important, but the PR reduces them in the same time...
-1 from me.

I'll close this PR since a -1 vote for a code change is an absolute veto:
https://www.apache.org/foundation/voting.html
I have kept it open for a while since the normal process would be to continue debate and see if the -1 vote is rescinded. That didn't happen here (yet), but feel free to create a new PR with some of @daniellansun's points addressed if you wish, or start a thread on the mailing list to avoid further disappointment.
For me personally, I'd like to explore performing a change like what you suggested when the declaring class is marked with POJO, but I'd like to see it handle more than just the empty case. In that case, we explicitly want to avoid calling back through ScriptBytecodeAdapter, so the direction you are heading makes sense. I personally don't mind if empty map, etc. aren't covered up front since we often make such changes iteratively, and we could handle that next.


Hot reloading not working with ngrok reverse proxy

Hey there,
I use ngrok to serve my app. With plain Vite all, I had to do to make it work was:
// vite.config.ts
export default defineConfig({
  plugins: [react()],
  server: {
    port: 3000,
  },
});

And then simply run ngrok http 3000
However, when using vite-express, the page loads but hot reloading does not work. Does anyone have suggestions what goes wrong in this case?

Hi @patryk-smc. I had a moment to check out the problem, and the root cause of it is that when you run plain Vite it takes care of serving http and websockets, but when you run vite-express it then uses Vite in middleware mode and there is a problem with websocet ports. In middleware mode Vite assings port 20000 something that is not forwarded by the ngrok proxy. I saw that you created a PR for that, but unfortunately when I've run the tests it fails. I'll try to look if we can use your solution and if not then maybe I'll figure out something else.

Also, I have a strong feeling that this might be something that is solvable by setting HMR port explicitly inside your vite.config.js but that's also something that I need to check.

@szymmis I was seriously going crazy while messing around with those Vite HMR settings, and by some stroke of luck, passing the server instance ended up being the only solution that worked. Honestly, I have no clue how it actually works. The documentation they provide isn't exactly stellar, so I guess we would have to dig deep into the Vite code to figure it out...

As you said the documentation doesn't contain much information about it. The weird thing is that in some environments your solution is working fine, but when I try to run tests from inside vite-express repo it doesn't work. That's definitely something that I need to look into because your solution seems promising from what I've read in the docs.

Sorry to say that, but I won't be able to solve this issue. There is a fundamental problem with how vite-express works with vite that makes it impossible to fix ngrok problem without massive changes to the code structure. If your solution works then great, but I cannot make it work in my environment that's why I won't bee implementing your fix in #60.

@szymmis I was seriously going crazy while messing around with those Vite HMR settings, and by some stroke of luck, passing the server instance ended up being the only solution that worked. Honestly, I have no clue how it actually works. The documentation they provide isn't exactly stellar, so I guess we would have to dig deep into the Vite code to figure it out...

Is it possible to get some more details on this? I'm trying the exact same thing on ngrok and having particularly difficult time wrapping my head around this^

@kinngh What you would like to know?

How to get this working - I'm working on the Shopify app side of things and one of the baseline problems I'm dealing with right now is to run Express' middlewares before a page is served via Vite. It works just fine when using production mode, but in dev mode we need to land on the auth URL. Landing on / just won't trigger it^

@patryk-smc makes sense. The PR did fix a bunch of things but also broke more things so I'm not particularly keen on this. I used patch-package to persist changes to the package based on your PR but I'm still searching for solutions. For the auth to make sense, here's an overview. When someone lands on /, I want to run an Express middleware that checks if the user is authenticated. If they are, proceed to / if not, redirect to /api/auth.


[SPARK-44688][INFRA] Add a file existence check before executing free_disk_space and free_disk_space_container

What changes were proposed in this pull request?
This pr add a file existence check before executing dev/free_disk_space and dev/free_disk_space_container
Why are the changes needed?
We added free_disk_space and free_disk_space_container to clean up the disk, but because the daily tests of other branches and the master branch share the yml file, we should check if the file exists before execution, otherwise it will affect the daily tests of other branches.

branch-3.5: https://github.com/apache/spark/actions/runs/5761479443
branch-3.4: https://github.com/apache/spark/actions/runs/5760423900
branch-3.3: https://github.com/apache/spark/actions/runs/5759384052

Does this PR introduce any user-facing change?
No
How was this patch tested?

Pass GitHub Action

Merge into master to observe the daily testing of branch-3.5/3.4/3.3. Thanks @HyukjinKwon

@LuciferYang thanks!


Web console: LGTM alert squash + final fixes

This PR is the final fixes for the 0.16.0 release of the web console it addresses:

remaining issues from parallel with forceGuaranteedRollup mode
fixes issues identified by LGTM
updates deps
less dropdowns because dropdowns make people sad
improves size of data loader tiles:

This PR has:

[x] been self-reviewed.
[x] been tested in a test Druid cluster.

Booya

What has happened to the old console? Where it has been moved? Commit "mv old console" looks like it removes the old console

@leventov that commit removed the old console and then I changed my mind and put it back in https://github.com/apache/incubator-druid/pull/8351/commits/cadb285e4c93783e72029bf0e1aa9e6c98a6adac the missing file it a mistake and I will fix ASAP.

This is fixed in: https://github.com/apache/incubator-druid/pull/8387


Prf eval

implementation of DY evaluation protocol based on replicated secret sharing

closed, see #833 (same functionality, cleaned up commit history)


WIP: adding support for multiarch container building

currently working with docker buildx/buildkit
TODO: figure out multi arch container building in podman
THIS IS NOT READY YET. But I want to have some comments before I proceed.

I had occasion to build a GitHub Actions workflow that pushes a multi-arch container to Quay.  It's not a perfect match for the Butane case (we don't want to cross-build Butane, and can drop the README editing step) but it might be a good starting point for the CI job.

I've made some improvements to the mkpasswd-container build code and moved it into a GitHub Action.  #333 adds that action to Butane CI, allowing us to ship a multi-arch container image.  Unfortunately we need to build arm64 in emulation until Buildah is updated in the GitHub Actions ubuntu-latest image, but the build performance is good enough for now.
Closing in favor of #333.  Thanks for the PR!


Update dependencies and resources

Describe the desired behavior
Use Angular 13, React 17, MUI v5 and update other dependencies used by the CLI
Describe the current behavior
These dependencies are out of date
Is this request related to a current issue?
No
Additional Context

Some of these dependencies may already be handled by updates to the templates themselves, but we should check to see what else there is that is specified in the CLI and need to be updated.

Make sure to use the<EMAIL_ADDRESS>and update all required deps.

Fixed in #126


NAS-127340 / 24.10 / Move scst logs into /var/log/scst.log

Corresponding middlewared PR #13395  has been merged.

Jira URL: https://ixsystems.atlassian.net/browse/NAS-127340

This PR has been merged and conversations have been locked.
If you would like to discuss more about this issue please use our forums or raise a Jira ticket.


Support for NVIDIA GPUs in Releases for Scoring and Monitoring Plugins

Currently, using the docker-compoe file in the releases directory does not utilize NVIDIA GPUs if they are available on the system. Update and document how a user would make use of them.

This was done in 0.3.3.


Added Project Searching Feature

Description
Added Feature for searching a specific project in projects by using SearchDelegate.
Users can search using both the project title and project description.
Fixes #341
Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

[x] Tested the feature with different search keywords

Test Configuration:

Firmware version: Flutter 1.12.13+hotfix.8
Hardware:
Toolchain:
SDK: 28

Also, include screenshots of the app for the verification and reviewing purposes.

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes
[ ] Any dependent changes have been merged and published in downstream modules

@UdeshUK I have made the necessary changes which you mentioned kindly go through it.

Great work. But one little issue, we still need package-lock.json to be version controller so don't git ignore it. Better to remove changes to it from this PR since those changes don't relate to this PR. And squash the commits into a single one. All the other things look great and this is not to demotivate you. It's better to follow best practices.

Ya no issues, I will make the changes

@UdeshUK I have fixed the issue. Please check them

@UdeshUK @ivantha I think this looks good and we can merge this. Thanks @ShreyAmbesh


Mockup stackscript source selection

First take:

Is there going to be a toggle for StackScripts under their own account?

Good call. Hmm. Will think on that.

:+1:

ditto for nick's feedback

I also forgot you'll still need to be able to actually select the distro to use in addition to the stackscript.

Your choice of stackscript influences the distros you can choose. We should do these in the other order.
I also think that the means of not using a stackscript should be more obvious.

Your choice of stackscript influences the distros you can choose. We should do these in the other order.

Ultimately the choice of order comes from that fact that a StackScript does not give you a Linode, a StackScript is "nothing more" than a provisioning step on top of a Linode.

We can choose any level of either of these and I do not think it will be hard to brainstorm others. Ideally, the "Featured Stackscripts" will take care of enough of the most popular apps (WP, Drupal, etc.) that the only people using other stackscripts would be comfortable enough selecting a different distro.

I also think that the means of not using a stackscript should be more obvious.

I agree but I can't think of a good way yet that is consistent with not selecting a source and not that disruptive in general.

I don't understand the aversion to simply switching their order of appearance. Sounds like both of those solutions have flaws.

My aversion to it is because that is not how provisioning works. You can't provision something without having the thing to provision.

I think the mental gap there is less important than having a more usable UI.

How about if someone is on some stackscript page and clicks deploy, it defaults to selecting the recommend distro and the stackscript (or on a stackscript page, I don't have a problem with letting them pick a distro there). But if someone just wants to create a Linode we keep this as a true provisioning step.

I don't think we have a recommended distro for stackscripts. I think we just have a list of supported distros, each of equal weight. And I'm more concerned about the usual create flow than I am about the stackscript page -> create page flow.

I think we should just resolve this by making stackscripts a tab on the source selection again and adding a mini-distro-selection to it.

I was thinking that StackScripts were going to stay up with everything else, some sort of toggle button (or checkbox Only Mine), and the distros would be loaded below the list of StackScripts, and change based on the selected StackScripts...
The reason I like the idea of in the tab group of distros and backups, is that it doesn't make it seem like it is required, more straight forward user flow.  It shouldn't be a big deal to recycle the distro cards at the bottom of the StackScripts tab.

As I've thought about it, I fully disagree with StackScripts being a source. StackScripts are not a source. They run on a source. We already have a source selection area. StackScripts happen on top of a source and are a completely separate step. It's one thing we tell users they can deploy "Wordpress" but that's not what is happening. Furthermore, StackScripts are not just applications. A StackScript can install 40 different dbs on a Linode; this is not an application. We should not conflate StackScripts with the source itself.

Can you have multiple non-related StackScripts?

No

That is probably more complex (UI-wise) than we need to allow.

You're right...  StackScripts should be a prerequisite to Source though, and the only clean way to do that, without having a wonky user flow, is including it in the sources, making is a Distro with StackScript, no?

Or maybe a toggle inside of distro for including StackScript?

Less patronizing language, more straightforward messaging.

Looks good though, :+1:

Less patronizing language, more straightforward messaging.

Wasn't intentional, is this better?

Yes.
Also, what happens if I pick a backup from the list of sources?

Also, what happens if I pick a backup from the list of sources?

Good question. Do not provision could be checked and clicking it could be disabled. Or this same failure message would just appear for all StackScripts because a backup source is invalid. Or we enable StackScripts on first boot of a backup (would be cool to have a custom script you ran on first restore boot.)

If we went with the last point then we would also probably include a warning saying it can be dangerous to use an arbitrary stackscript on a restored linode. Or have stackscripts that are flagged only for backup restore use.

Or the provision step just goes away if you click a backup.