Resource Identifier and URL

With the current API we are forced to use the URL as the resource identifier. This won't work in non-trivial scenarios, because we might want the identifier to be different from the URL. For example: creating a thumbnail out of an image.
The image itself as a specific URL (e.g. http://abc.jpg). But I want to cache both http://abc.jpg and http://abc.jpg_thumbnail (this _thumbnail is generated from the original one). The problem is when I want to fetch the thumbnail from the cache. Because if I pass http://abc.jpg_thumbnail and it's not in the cache, it will try to fetch http://abc.jpg_thumbnail which will fail. If I pass http://abc.jpg then it will never touch the thumbnail and get the full size one.
The fundamental problem is: the cache identifier and the resource's URL are coupled. A quick and easy solution would be to use a struct like this:
struct Resource {
let key : String
let resourceURL : NSURL
}

We would then pass this struct, instead of the URL. For example:
public func retrieveImageWithURL(URL: NSURL, optionsInfo: Kingfisher.KingfisherOptionsInfo?, progressBlock: Kingfisher.DownloadProgressBlock?, completionHandler: Kingfisher.CompletionHandler?) -> Kingfisher.RetrieveImageTask

to:
public func retrieveImageWithResource(resource: Resource, optionsInfo: Kingfisher.KingfisherOptionsInfo?, progressBlock: Kingfisher.DownloadProgressBlock?, completionHandler: Kingfisher.CompletionHandler?) -> Kingfisher.RetrieveImageTask

Still, for this kind of cases, we can just leave as is. There is no point on passing a Resource.
public func storeImage(image: UIImage, forKey key: String)

Likewise, when the interaction is with the ImageDownloader it's fine to use a NSURL, since the ImageDownload should be responsible only for interactions with the network.
Without seeing all the code and assuming the code respects the SOLID principles, only the KingfisherManager would have to be updated.

Yeah I think this is really important, for example URL can contain dynamic parameters which can break the cache. I think the key can be the URL's absolute string by default but we should be able to customise it somehow to handle our specific use-case.
The approach suggested by @RuiAAPeres seems great to handle this. :+1:

I think the key can be the URL's absolute string by default

struct Resource {
    let key : String
    let url : NSURL

    init(key: String, url: NSURL) {
        self.key = key
        self.url = url
    }

    init(url: NSURL) {
        self.init(key: url.absoluteString, url: url)
    }
}

Hi, @RuiAAPeres @dmcrodrigues
Great suggestion for decoupling the key and URL. It is very easy to adjust current code for it. I will handle it soon.


NullOrInvalidEntityRule - entity metadata is always null (Kundera mongo 3.12)

NullOrInvalidEntityRule - metadata is always null
public boolean validate(E entity)
    {
        if (entity != null)
        {
            // entity metadata could be null.
            if (entityMetadata == null)
            {
                throw new IllegalArgumentException(
                        "Entity object is invalid, operation failed. Please check previous log message for details");
            }

            return false;

        }

        // will return false if entity is null.
        return true;
    }

@Data
@Entity
@Table(name = "person", schema = "testDB@defaultPersistenceUnit")
public class Person {

  @Id
  @Column(name = "id")
  private String id;

  private String name;

}

    final EntityManagerFactory defaultPersistenceUnit = Persistence.createEntityManagerFactory("defaultPersistenceUnit");
    final EntityManager entityManager = defaultPersistenceUnit.createEntityManager();
    final Person person = new Person();
    entityManager.persist(person);
    return ok(Json.toJson(person));

<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
  version="2.1">

  <persistence-unit name="defaultPersistenceUnit" transaction-type="RESOURCE_LOCAL">
    <provider>com.impetus.kundera.KunderaPersistence</provider>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
      <property name="kundera.nodes" value="localhost"/>
      <property name="kundera.port" value="27017"/>
      <property name="kundera.keyspace" value="testDB"/>
      <property name="kundera.dialect" value="mongodb"/>
      <property name="kundera.annotations.scan.package" value="models"/>
      <property name="kundera.ddl.auto.prepare" value="create"/>
      <property name="kundera.client.lookup.class" value="com.impetus.client.mongodb.MongoDBClientFactory"/>
    </properties>
  </persistence-unit>

</persistence>

Hi @limpid-kzonix,
Add entity classes in persistence.xml if you wanna load selected entities for this particular persistence unit.
Or remove <exclude-unlisted-classes>true</exclude-unlisted-classes> from persistence unit to load all entities in the classpath.

@devender-yadav, I also tried to add enity to persistence.xml

And also tried to without is, just only use property name="kundera.annotations.scan.package. But stil the same exception. I all cases.
com.impetus.kundera.metadata.KunderaMetadataManager
I found out that List<String> persistenceUnits always null (in method as shown below)
/**
     * Finds ands returns Entity metadata for a given array of PUs.
     *
     * @param entityClass
     *            the entity class
     * @param persistenceUnits
     *            the persistence units
     * @return the entity metadata
     */
    public static EntityMetadata getEntityMetadata(final KunderaMetadata kunderaMetadata, Class entityClass)
    {
        if (entityClass == null)
        {
            throw new KunderaException("Invalid class provided " + entityClass);
        }
        List<String> persistenceUnits = kunderaMetadata.getApplicationMetadata().getMappedPersistenceUnit(entityClass);

        // persistence units will only have more than 1 persistence unit in case
        // of RDBMS.
        if (persistenceUnits != null)
        {
            for (String pu : persistenceUnits)
            {
                MetamodelImpl metamodel = getMetamodel(kunderaMetadata, pu);
                EntityMetadata metadata = metamodel.getEntityMetadata(entityClass);
                if (metadata != null && metadata.getPersistenceUnit().equals(pu))
                {
                    return metadata;
                }
            }
        }
        if (log.isDebugEnabled())
            log.warn("No Entity metadata found for the class " + entityClass
                    + ". Any CRUD operation on this entity will fail."
                    + "If your entity is for RDBMS, make sure you put fully qualified entity class"
                    + " name under <class></class> tag in persistence.xml for RDBMS "
                    + "persistence unit. Returning null value.");

        return null;
        // throw new KunderaException("Unable to load entity metadata for :" +
        // entityClass);
    }

@limpid-kzonix you have persistence.xml under META-INF folder available in the classpath?

Check out https://github.com/Impetus/Kundera#sample-projects and download kundera-mongodb-example.zip. Its very basic example with CRUD operation. You can start with this.
OR send your sample project so that we can replicate your issue.

If you are using above sample project, make sure to use Kundera 3.12 as the example is using an older version.

play-java-jpa-example.zip
It is simple sbt application with using playframework.

It is strange. Sample project works fine ( without any exceptions ). I think that issue related to integration with playframewok (or some internal logic of play had a bad influence on some flow of Kundera, or also its depended to diff project structure of play-application). Or probably I did something wrong.  @devender-yadav, try to reproduce this issue with my project. I will look forward to your feedback.

Hi @limpid-kzonix,
Please check https://dzone.com/articles/play-nosql-building-nosql
Useful part

If you’re running Play! in development mode, Play! uses its own Classloader that doesn’t read classes from target/scala-2.xx/classes folder. As a result, your User entity won’t be loaded at runtime and EntityMetadata should not be null error thrown.
In order to make your entity classes available at runtime (in development mode, of course), all you’ve to do is to create jar file out of them and put this jar file into lib folder under project root directory. (create lib folder as it won’t exist by default)

(modified for simplification)

@limpid-kzonix,
Also, mention entity classes and <exclude-unlisted-classes>true</exclude-unlisted-classes> in persistence.xml
Check sample -https://github.com/Impetus/Kundera/wiki/Using-Kundera-with-Play!-Framework#write-persistencexml
And mention schema in Entity
Example:
@Table(name = "users", schema = "KunderaExamples@cassandra_pu")

If you’re running Play! in development mode

Hmm, I tested with play in prod mode.

And the same issue

play.api.UnexpectedException: Unexpected exception[KunderaException: java.lang.IllegalArgumentException: Entity object is invalid, operation failed. Please check previous log message for details]

@limpid-kzonix did you make changes in entity and persistence.xml? It's working at my end in prod mode

@devender-yadav, I found my previous project with play and Kundera. And found out that for play is required to set entity classes and true in persistence.xml. And everything works fine.
So I think that this issue can be closed, only one remark. It would be better to add these specific instructions to the wiki page in play section, also update the guide with the latest play version, and zip with the sample project.

@limpid-kzonix Thanks for the feedback. We will update wiki accordingly.


BigQuery: Add support for query parameters

The CLI command bq query now supports query parameters for Standard SQL queries and the API does as well (https://cloud.google.com/bigquery/docs/reference/v2/jobs/query#request-body). It would be great to be able to provide these via google.cloud.

@jlowin Thanks for the report!  Except for the API reference page you linked, I can't find any other docs (especially narrative ones with samples) which explain how query parameters should be used.  Do you know of any?

I wish there were but so far I've just been figuring it out via trial and error. For example:
bq query --use_legacy_sql=False --parameter param1:INTEGER:5 --parameter param2:INTEGER:100 "select @param1 + @param2 as result"

Waiting on bqjob_r665b4bfadeedbee9_00000157ce6674a0_1 ... (0s) Current status: DONE
+--------+
| result |
+--------+
|    105 |
+--------+

@tseaver It's on my TODO list to document this feature better.

@tseaver I found the docs on this:
https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/query
Search for queryParameters.
Depending on what parameterMode is set to, the parameter can be positional ? or names @somename

+1 on request of this, even reading that reference didn't help a lot, because it didn't give a working example I was researching on how to pass an array and struct value, but see https://github.com/GoogleCloudPlatform/google-cloud-go/issues/390#issuecomment-260262753 what I found from reading /opt/google-cloud-sdk/platform/bq/bq.py source code.
what I found parameterMode is optional because bq tool doesn't send that at all.

@tswast Working on this now.  I note that the feature is still documented as "experimental," which makes it a bit odd to have as "blocking beta" for us.

Hi @tseaver, are you actively working this one?  If you have any blockers or need input from BQ team please let me know ASAP.  Otherwise, do you have a sense for remaining effort, ETC?  Thanks!

@danoscarmike PR #2776 implements the feature.

Great stuff.  Thanks Tres!


Proxies

How to use a proxy with authorization? HTTPS/SOCKS?

As requests is the http client used in the library, please feel free to refer to here:
https://requests.readthedocs.io/en/latest/user/advanced/#proxies
And see more details of how to setup proxies.

To use https or socks proxy, you may have a try:
http_proxies = { 'https': 'https://username:password@<IP_ADDRESS>:3128' }
client = Client(proxies=http_proxies)

socks_proxies = {'https': 'socks5://username:password@<IP_ADDRESS>:1080' }
client = Client(proxies=socks_proxies)


[api-minor] Remove support for synchronous event dispatching in LoopbackPort

Please note: The defer parameter has been enabled by default ever since PR #9777 (in 2018), which first shipped in PDF.js release 2.0.943.
With workers disabled, e.g. in Node.js environments, this has been used ever since without any problems reported[1].
The impetus for this change was that I happened to notice that if the LoopbackPort was used with synchronous event dispatching, we'd simply send that data as-is to the listeners. This created an inconsistency in the data returned from the pdf.worker.js file, since postMessage used with actual workers (or the LoopbackPort with defer = true) will ignore/throw when encountering unclonable data.
Originally my intention was simply to just call cloneValue regardless of the event dispatching used in LoopbackPort, however looking at the use-cases (or lack thereof) of the LoopbackPort it seemed reasonable to simply remove the defer parameter instead.
This patch is tagged "[api-minor]" since the LoopbackPort is still exposed in the API, although I really hope that no third-party is using this (since disabling workers leads to bad performance).
Finally, this patch changes a forEach loop to for...of and makes uses of optional changing in existing code.

[1] As evident by the npm test command run by Github Actions, and previously by Travis.

/botio unittest

I also don't see a particular good use case for this. Let's remove it; thanks!


Fix Dockerfile editor settings writing

Use POSIX sh only and avoid bashisms.

See https://github.com/abarichello/godot-ci/issues/151.

Why do this hack? This could be solved with much less effort by simply changing to bash for the time being. Apparently Dockerfiles support SHELL: https://github.com/moby/moby/issues/7281#issuecomment-389440503
I'd revert all those changes and simply slap a SHELL statement that points to bash onto the Dockerfile. This way the variables and substitutions can stay as they are.
Support should be fine as bash is pretty much omnipresent everywhere.

I'd revert RUN <<EOF, too because that renders you unable to place proper comments, which you even had to remove for this. I think you did that in the first place to accomodate the first attempt of trying to make this work. I am unfamiliar with docker but I would not be surprised that if anything in that giant run block fails, it will not point out what specific line but just the giant run block as a whole, making debugging slightly harder.
So the commit should ideally just be adding that single SHELL line.
Also, to get back to the bashisms part because I think it may be good to elaborate: Yes, it does make sense to avoid them for compatibility. Yet as you can see, pure POSIX does lack a lot of features, making things generally more complex to achieve. However, this is a container with a controlled environment. This is not going to run on weird embedded systems with only busybox.
The compatibility loss is thus very low to potentially nonexistent. Bash is present by default on virtually any Linux distribution.
I'd amend the PR description as you are embracing bashisms now for the sake of simplicity.

The standard image build succeeds now: https://github.com/abarichello/godot-ci/actions/runs/11469069732
The Mono image needs further fixes still.


Bump pg version to 6

Separate ticket for driver upgrade.

Please add to CHANGELOG @mhadam !

Done!


Permission error when copying from open aws s3 bucket to blob storage, need to specify --no-sign-request

Which version of the AzCopy was used?
10.9
Which platform are you using? (ex: Windows, Mac, Linux)
Mac
What command did you run?
When I have my aws credentials set:
→ azcopy cp 'https://hyp3-contentbucket-fo259f6r6dn6.s3.us-west-2.amazonaws.com/e2f9b5d4-1b84-4908-9f0b-b3b8f8487684/S1A_IW_20161023T090556_DVP_RTC30_G_gpufed_883C.log' https://storagedmgzl7yjhdn3c.blob.core.windows.net/test? --recursive
INFO: Scanning...
INFO: Authenticating to source using S3AccessKey
INFO: azcopy: A newer version 10.9.0 is available to download

INFO: Any empty folders will not be processed, because source and/or destination doesn't have full folder support

failed to perform copy command due to error: cannot start job due to error: cannot list objects, Access Denied.

when my aws credentials are unset:
# rave at Ryans-MacBook-Pro.local in ~/ms-sar/ms-sar-deforestation-internal on git:main ✖ [14:42:55]
→ azcopy cp 'https://hyp3-contentbucket-fo259f6r6dn6.s3.us-west-2.amazonaws.com/e2f9b5d4-1b84-4908-9f0b-b3b8f8487684/S1A_IW_20161023T090556_DVP_RTC30_G_gpufed_883C.log' https://storagedmgzl7yjhdn3c.blob.core.windows.net/test? --recursive
INFO: Scanning...

failed to perform copy command due to error: AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables must be set before creating the S3 AccessKey credential

What problem was encountered?
I can't copy from a bucket with totally open permissions. For some reason my aws permissions don't allow listing items in buckets but I can list this bucket (and so can you) if I do
aws s3 ls --no-sign-request s3://hyp3-contentbucket-fo259f6r6dn6/e2f9b5d4-1b84-4908-9f0b-b3b8f8487684/

Is there an option with azcopy to specify --no-sign-request for the aws resource?
How can we reproduce the problem in the simplest way?
create a storage account and blob storage container (file storage doesn't work, see https://github.com/Azure/azure-storage-azcopy/issues/1363)
→ azcopy cp 'https://hyp3-contentbucket-fo259f6r6dn6.s3.us-west-2.amazonaws.com/e2f9b5d4-1b84-4908-9f0b-b3b8f8487684/S1A_IW_20161023T090556_DVP_RTC30_G_gpufed_883C.log' https://storagedmgzl7yjhdn3c.blob.core.windows.net/test? --recursive

Have you found a mitigation/solution?
No

I solved this by switching my AWS account key to an account with more permissions, but I think this might still be an issue for folks that only have an aws account with more restrictive permissions and can';t list bucket contents. In these cases it'd be nice if azcopy supported no-sign-request on the aws side.

The problem is not fixed yet. Just try to copy from the following bucket for reproducing the issue https://aws.amazon.com/marketplace/pp/prodview-6qb5v532zxbam?sr=0-13&ref_=beagle&applicationId=AWSMPContessa#links

The powershell script "set AWS_ACCESS_KEY_ID=....." doesn't work as it doesn't add the system environment variables in windows, so the access is denied to S3. To add the environment variables in Windows do the following:
Press Windows Key + R then open "control sysdm.cpl"
In System Properties click on Advanced -> Environment Variables
Under System Variables add the variable name: AWS_ACCESS_KEY_ID and place your access key under the value.
Add another system variable "AWS_SECRET_ACCESS_KEY" and place in the AWS secret key.
Go back to powershell and you should be able to run azcopy: azcopy copy --recursive=true
If the permissions still do not work, then it might be an issue with the permissions in AWS.


Translate field in fixtures installation

See: http://forge.prestashop.com/browse/PSREADY-1
ping @maximebiloe

Thanks @aleeks


new

task 7

@anuron123
This pull request has conflicts arising from accessing other Git hup repositories' folders. At the moment, I am unable to merge it.

@anuron123
Task -15
Code verified.
Task -16
Code verified.
Task -17
Code verified.
Task -18
Code verified.
Task -19
Code verified. Provide annotations
Task -20
Code verified. Provide annotations
Task -21
Code verified.
Task -22
Code verified. Provide annotations
Task -23
Code verified.
Task -24
Code verified. Provide annotations
Task -25
Code verified. Provide annotations

@anuron123
Task -26
Code verified. Provide annotations and change default activity names
Task -27
Code verified. Provide annotations

@anuron123
Task -28
code verified.

@anuron123
Task -29
Code verified.
Task -30
Code verified.
Task -31
Code verified.
Task -32
Code verified.

@anuron123
Task -33
Code verified.
Task -34
Code verified.


nodeinit: Disable default ip-masq-agent jumps

Noticed some surprising behavior where disabling Cilium masquerade does not actually disable masquerade in GKE or AKS.
In GKE, even if the IP masquerade agent is not enabled, the instance configure script adds some default rules
In AKS, by default the IP masquerade agent is enabled as daemonset.apps/azure-ip-masq-agent.
This removes the jumps from POSTROUTING to their respective chains.

Coverage increased (+0.01%) to 36.854% when pulling 2b4a5c6c9d46dd0bdfc8b5cf9d6e2625916222ba on planetscale:disable-masq-agent-jump into 5e5c62691cb54d6182b198f90a1e7f9571ee72f7 on cilium:master.

Nevermind about AKS, I see AKS itself has added cilium as a supported network plugin provider that fixes this in the future. Just updating AKS doc can fix it now.

test-gke

test-gke

test-gke

retest-netnext

retest-4.19

retest-4.9

retest-net-next

retest-gke

@dctrwatson I can't tell if you got another gke failure or not. I'm going to restart it again, but record what happened here.
This is the gke output currently.

retest-gke

I see this early on in the build:
09:42:37  FAIL: Cilium cannot be installed
09:42:37  Expected
09:42:37      <*helpers.cmdError | 0xc0006ae290>: Unable to generate YAML (exit status 1) output: cmd: helm template --validate<EMAIL_ADDRESS>--namespace=cilium  --set global.cni.binPath=/home/kubernetes/bin  --set global.ipv6.enabled=false  --set global.hubble.enabled=true  --set global.tag=c991a94af799a9a774f7f8f8124746d956fdba10  --set global.hostFirewall=false  --set hubble-relay.image.tag=latest  --set hubble-relay.image.repository=<IP_ADDRESS>/cilium/hubble-relay:c991a94af799a9a774f7f8f8124746d956fdba10  --set operator.image=<IP_ADDRESS>/cilium/operator-generic:c991a94af799a9a774f7f8f8124746d956fdba10  --set global.debug.enabled=true  --set preflight.image=<IP_ADDRESS>/cilium/cilium:c991a94af799a9a774f7f8f8124746d956fdba10  --set global.k8s.requireIPv4PodCIDR=true  --set global.gke.enabled=true  --set global.nativeRoutingCIDR=<IP_ADDRESS>/8  --set config.ipam=kubernetes  --set global.bpf.preallocateMaps=true  --set global.etcd.leaseTTL=30s  --set config.bpfMasquerade=true  --set global.nodePort.mode=snat  --set global.ci.kubeCacheMutationDetector=true  --set global.logSystemLoad=true  --set config.enableCnpStatusUpdates=true  --set global.pprof.enabled=true  --set nodeinit.removeCbrBridge=true  --set nodeinit.reconfigureKubelet=true  --set agent.image=<IP_ADDRESS>/cilium/cilium:c991a94af799a9a774f7f8f8124746d956fdba10  --set global.hubble.listenAddress=:4244  --set global.ipv4.enabled=true  --set config.sessionAffinity=false  --set global.nodeinit.enabled=true  --set global.devices=  --set global.registry=<IP_ADDRESS>/cilium  > cilium-1626955e52c8bf98.yaml
09:42:37  Exitcode: 1
09:42:37  Err: exit status 1
09:42:37  Stdout:
09:42:37
09:42:37  Stderr:
09:42:37   	 Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict: kind: DaemonSet, namespace: cilium, name: cilium-node-init

I see this early on in the build:

I believe this is due to a recent change I introduced in tests while working on HA mode for cilium-operator. Can you point me to the link for these failures logs?
I think the fix should be pretty straightforward though, we can delete resources from the YAML we generated when removing cilium instead of manually removing each component. This will make sure we are removing all the deployed cilium components.

Can you point me to the link for these failures logs?

https://jenkins.cilium.io/job/Cilium-PR-K8s-GKE/2061/consoleFull
is where I pulled the excerpt from

Sorry, but I think this has been fixed as a hotfix for GKE builds in #12725
@nebril is currently working on some patches that will fix the remaining issues with GKE builds. We can retest once those are merged.

retest-gke

retest-gke
The cluster was not provisioned in previous run - https://jenkins.cilium.io/job/Cilium-PR-K8s-GKE/2131/

Looks like just this over and over
07:41:17  Error from server (AlreadyExists): namespaces "cilium-ci-lock" already exists
07:41:18
07:41:18  #15 [stage-3 2/9] COPY --from=builder /tmp/install /
07:41:18  #15 DONE 0.6s
07:41:18  Error from server (AlreadyExists): error when creating<EMAIL_ADDRESS>deployments.apps "lock" already exists
07:41:18  error: --overwrite is false but found the following declared annotation(s): 'lock' already has a value (1)
07:41:18  1
[...]
07:41:23  Error from server (AlreadyExists): error when creating<EMAIL_ADDRESS>deployments.apps "lock" already exists

@dctrwatson have you been able to manually test this in your own GKE environment?
The GKE CI job is not required, but this PR is specifically about GKE so the main thing we're looking for is reassurance that it works. We're working through some CI infrastructure provisioning issues with the GKE-based CI but as long as you've done due diligence this seems reasonable to merge.

@dctrwatson have you been able to manually test this in your own GKE environment?

Yes, have been using this with Cilium 1.7.x since a couple days before submitting this PR.

EDIT: I should maybe add that seeing connectivity-check output that's successful with this patch would be a useful datapoint as a baseline.

GKE Node Version: v1.16.13-gke.1
Kernel Version: 4.19.112+
Cilium Version: 1.7.7

NAME                                                     READY   STATUS    RESTARTS   AGE
echo-a-58dd59998d-rk8w4                                  1/1     Running   0          72s
echo-b-865969889d-nw4qb                                  1/1     Running   0          71s
echo-b-host-659c674bb6-9qg6m                             1/1     Running   0          72s
host-to-b-multi-node-clusterip-6fb94d9df6-2nmw9          1/1     Running   0          71s
host-to-b-multi-node-headless-7c4ff79cd-k5ccz            1/1     Running   0          71s
pod-to-a-5c8dcf69f7-692j4                                1/1     Running   0          70s
pod-to-a-allowed-cnp-75684d58cc-kntqj                    1/1     Running   0          71s
pod-to-a-external-1111-669ccfb85f-m55hf                  1/1     Running   0          71s
pod-to-a-l3-denied-cnp-7b8bfcb66c-flfcr                  1/1     Running   0          70s
pod-to-b-intra-node-74997967f8-dlrlx                     1/1     Running   0          70s
pod-to-b-intra-node-nodeport-5fd7b6df5-kw566             1/1     Running   0          70s
pod-to-b-multi-node-clusterip-587678cbc4-5cq7q           1/1     Running   0          70s
pod-to-b-multi-node-headless-574d9f5894-t5cg8            1/1     Running   0          69s
pod-to-b-multi-node-nodeport-f544b6765-qhttw             1/1     Running   0          69s
pod-to-external-fqdn-allow-google-cnp-6dd57bc859-nz5jd   1/1     Running   0          69s

I used: https://raw.githubusercontent.com/cilium/cilium/v1.7/examples/kubernetes/connectivity-check/connectivity-check.yaml
Though I had to fix the port for the 2 nodeport pods:
--- connectivity-check.yaml	2020-08-07 18:45:53.970029385 -0700
+++ connectivity-check.yaml.orig	2020-08-07 18:47:32.146661105 -0700
@@ -365,13 +365,13 @@
         - -c
         - sleep<PHONE_NUMBER>
         image: docker.io/byrnedo/alpine-curl:0.1.8
-        imagePullPolicy: IfNotPresent
+        imagePullPolicy: IfNotPresent
         livenessProbe:
           exec:
-            command: [ "curl", "-sS", "--fail", "-o", "/dev/null", "echo-b-host-headless:41000" ]
+            command: [ "curl", "-sS", "--fail", "-o", "/dev/null", "echo-b-host-headless:31313" ]
         readinessProbe:
           exec:
-            command: [ "curl", "-sS", "--fail", "-o", "/dev/null", "echo-b-host-headless:41000" ]
+            command: [ "curl", "-sS", "--fail", "-o", "/dev/null", "echo-b-host-headless:31313" ]
         name: pod-to-b-intra-node-hostport
 ---
 apiVersion: apps/v1
@@ -506,10 +506,10 @@
         imagePullPolicy: IfNotPresent
         livenessProbe:
           exec:
-            command: [ "curl", "-sS", "--fail", "-o", "/dev/null", "echo-b-host-headless:41000" ]
+            command: [ "curl", "-sS", "--fail", "-o", "/dev/null", "echo-b-host-headless:31313" ]
         readinessProbe:
           exec:
-            command: [ "curl", "-sS", "--fail", "-o", "/dev/null", "echo-b-host-headless:41000" ]
+            command: [ "curl", "-sS", "--fail", "-o", "/dev/null", "echo-b-host-headless:31313" ]
         name: pod-to-b-multi-node-nodeport

Though I had to fix the port for the 2 nodeport pods:

Hmm. I don't actually see a nodeport declaration in that v1.7 version of the connectivity-check. The port 41000 seems to actually be a host application listening on the port. Seems like we need to fix that up. If you compare to the v1.8 YAML, there's actually a nodeport configured on port 31313 so no changes to the connectivity check should be necessary. Instead, we should extend the YAML to include the nodeport like this:
---
apiVersion: v1
kind: Service
metadata:
  name: echo-b
spec:
  type: NodePort
  ports:
  - port: 80
    nodePort: 31313
  selector:
    name: echo-b

test-gke

I just tried with the v1.8 connectivity-check.yaml and it worked out of the box!
NAME                                                     READY   STATUS    RESTARTS   AGE
echo-a-58dd59998d-l7svd                                  1/1     Running   0          35s
echo-b-865969889d-hlxf4                                  1/1     Running   0          34s
echo-b-host-659c674bb6-mrm2z                             1/1     Running   0          35s
host-to-b-multi-node-clusterip-6fb94d9df6-hd5hv          1/1     Running   0          34s
host-to-b-multi-node-headless-7c4ff79cd-vjklg            1/1     Running   0          34s
pod-to-a-5c8dcf69f7-qhhhr                                1/1     Running   0          33s
pod-to-a-allowed-cnp-75684d58cc-zvd2k                    1/1     Running   0          34s
pod-to-a-external-1111-669ccfb85f-c9vh6                  1/1     Running   0          34s
pod-to-a-l3-denied-cnp-7b8bfcb66c-27fkr                  1/1     Running   0          33s
pod-to-b-intra-node-74997967f8-fkkkv                     1/1     Running   0          33s
pod-to-b-intra-node-nodeport-775f967f47-5ss46            1/1     Running   0          33s
pod-to-b-multi-node-clusterip-587678cbc4-hzlpc           1/1     Running   0          32s
pod-to-b-multi-node-headless-574d9f5894-86rnc            1/1     Running   0          32s
pod-to-b-multi-node-nodeport-7944d9f9fc-bbj7m            1/1     Running   0          32s
pod-to-external-fqdn-allow-google-cnp-6dd57bc859-nts9v   1/1     Running   0          32s

test-gke

The gke flake seems to be caused by a known flake, let's merge.

Discussed during SIG-datapath meeting:
This fixes BPF masq (including ip-masq-agent) in v1.8. However the way it applies right now, if BPF masquerade is disabled, it could break ip-masq-agent configuration.
The default should be to enable BPF masquerade (on new enough kernels), in which case we want the logic introduced here. The concern we have is that when disabling BPF masquerade, this could cause unintended SNAT. The check switches on the gke.enabled helm flag right now, but it seems like there should also be a check for config.bpfMasquerade as well.

Oh, interesting.
This was originally against v1.7, so config.bpfMasquerade didn't exist yet.
The intention is that by using Cilium, that ip-masq-agent is no longer used, thus making global.masquerade actually accurate.
I see 3 configurations:

config.bpfMasquerade=false + global.masquerade=true, use cilium iptables to masquerade
config.bpfMasquerade=true + global.masquerade=true, use cilium bpf to masquerade
config.bpfMasquerade=false + global.masquerade=false, no masquerading whatsoever

So I think another flag would have to added explicitly fallback to old behavior of using ip-masq-agent?

FWIW, on GKE option 3 means we should just let GKE's ip-masq-agent do its thing, so the current behavior might be an issue in this case?

@dctrwatson right now the check is just for whether GKE is enabled:
{{- if .Values.global.gke.enabled }}

Perhaps global.masquerade  would be the right thing to add here to address case #3?

FWIW, on GKE option 3 means we should just let GKE's ip-masq-agent do its thing, so the current behavior might be an issue in this case?

@Weil0ng that's the behavior that I found to be surprising and why I made this PR. My expectation was that Cilium manages all aspects of networking once installed by overriding kube-proxy, ip-masq-agent, etc (on new enough kernels.)
I'm not opposed to the old behavior of falling back to ip-masq-agent if docs are updated to reflect that in GKE, there are default masquerade rules that will always apply, and to actually disable masquerade to have 3 flags:

`global.masquerade=false
global.gke.enabled=true
global.gke.bypassIpMasqAgent=true (this is the new flag, name subject to change)

Perhaps a check for global.masquerade == false would be the right thing to add here to address case (3)?

@joestringer that would satisfy my intention for case (3). But as @Weil0ng points out, maybe not everyone wants to bypass ip-masq-agent rules?


#10399 does not fix but implements delimiter for db2

Hey, seems promising :)

@Sargul Could you update your branch from dbeaver devel. Otherwise there are commits in your PR what has nothing to do with the particular improvement.


Add AMP label to AMP only pages in build tree

Adds (AMP) in build tree for AMP-first pages

Closes: #7086

Thanks!


Remove toolspecific node and replace by toolspecific namespaces

I generated a list of types that could be removed from CPACS entirely and live in their own namespaces, cf. attached text file.
removables.txt
I also assembled a reduced schema to show the actual reduction when leaving out the toolspecific node, but GitHub doesn't allow me to upload the XSD, not even as a ZIP file.
The file size reduction is from 1443kb to 1120kB, which is about 20%.
The number of types is reduced from ~935 by ~242 type definitions (about 25%), which are only relevant to specific tools and might be seen to clutter the standard.

Referring back to #448, especially to the initial proposal of @sdeinert, we at RISC Software would also prefer to have a xsd:any content inside <toolspecific>, as we develop custom extensions to CPACS. For these extensions we develop own schema files and reference them from the XML elements inside the <toolspecific> node, resetting the namespace inside our own elements.
An example may look like this:
<cpacs xmlns:xsi="..." xsi:noNamespaceSchemaLocation="...">
  ... <!-- standard content -->
  <toolspecific>
    ... <!-- "standard" DLR toolspecific elements -->
    <myExtension xmlns="...myExtensionSchema...">
      <!-- my extension content, default namespace in here is now my extension -->
    </myExtension>
    <ext:myOtherExtension xmlns:ext="...myOtherExtensionSchema...">
      <!-- my other extension content, ext namespace in here is now my other extension -->
    </ext:myOtherExtension>
  </toolspecific>
</cpacs>

AFAIK this is not possible with XML schemas, as we cannot mix xsd:all and xsd:any. A possible solution would be to add a subelement to <toolspecific> allowing any content (for third-party extensions). However, we would like to have the content of  to be any, and, as suggested by @ArneBachmann, create an additional schema file for all DLR toolspecific elements.
Do you see any other way of solving the problem of third-party extensions?
We think it is the easiest to change <toolspecific> to have any content.

Is it technically necessary to define a xsd:any when only using different namespaces as children? I would assume any schema to only validate its own namespace and never reference other namespaces, while elements of other namespaces may be placed anywhere throughout the file, only referenced in the XML file's header xmlns attributes? But I'm not an XML expert.

Thank you for your suggestion!
We have tested this now internally and can confirm that indeed a schema only validates elements of its own namespace. Therefore, if we add additional subelements unter <toolspecific> and set namespaces accordingly (either explicitely with xmlns:ext="..." or resetting the default namespace with xmlns="..."), the XML file validates correctly against the CPACS schema and our own additional schemata.

That's great to hear and will help several dependent projects to continue independent tool development, I believe!

Great! Thank you for testing. I agree that we should rather have separate namespaces for the toolspecifics and not include them in the official schema. Especially since toolspecific nodes change with tool versions and should not be dictated in CPACS.

I looked again into this topic. The following example validates fine and looks promising to me:
First we exclude to baseTypes (because they are as well used by the toolspecific schema) and assign a namespace for cpacs_schema.xsd:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
            xmlns:html="http://www.w3.org/1999/xhtml"
            xmlns:sd="http://schemas.xsddoc.codeplex.com/schemaDoc/2009/3"
            xmlns:xlink="http://www.w3.org/1999/xlink"
            targetNamespace="http://www.cpacs.de"
            xmlns="http://www.cpacs.de"
            elementFormDefault="qualified">

    <xsd:include schemaLocation="cpacs_baseTypes.xsd"/>

    <xsd:element name="cpacs" type="cpacsType"/>

    <xsd:complexType name="cpacsType">
    ...

    <xsd:complexType name="toolspecificType">
        <xsd:annotation>
            <xsd:appinfo>
                <sd:schemaDoc>
                    <ddue:summary>
                        <ddue:para>toolspecificType</ddue:para>
                    </ddue:summary>
                    <ddue:remarks>
                        <ddue:para>Toolspecific type, containing specific data for the
                            analysis tools. <ddue:legacyBold>All types defined under this node will be removed from the schema with the next release. Toolspecifics can still be used but should be defined in their own namespaces.</ddue:legacyBold> This way an update of toolspecific types is no longer depending on CPACS releases.</ddue:para>
                    </ddue:remarks>
                </sd:schemaDoc>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:complexContent>
            <xsd:extension base="complexBaseType">
                <xsd:sequence>
                    <xsd:any minOccurs="1"></xsd:any>
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>
   ...

and the toolspecific schema, e.g., ts_liftingLine_2_5.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
            xmlns:html="http://www.w3.org/1999/xhtml"
            xmlns:sd="http://schemas.xsddoc.codeplex.com/schemaDoc/2009/3"
            xmlns:xlink="http://www.w3.org/1999/xlink"
            targetNamespace="http://www.cpacs.de/liftingLine2.5"
            xmlns="http://www.cpacs.de/liftingLine2.5"
            elementFormDefault="qualified">

    <xsd:include schemaLocation="cpacs_baseTypes.xsd"/>

    <xsd:element name="liftingLine" type="liftingLineToolType"/>

        <xsd:complexType name="liftingLineToolType">
    ....

You may then "import" the corresponding files in the header:
<?xml version="1.0" encoding="UTF-8"?>
<cpacs xmlns="http://www.cpacs.de"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:ext="http://www.cpacs.de/liftingLine2.5"
       xsi:schemaLocation="http://www.cpacs.de cpacs_schema.xsd
                           http://www.cpacs.de/liftingLine2.5 ts_liftingLine_2_5.xsd">
  <header>
    <name>name</name>
    <creator>creator</creator>
    <timestamp>2001-12-31T12:00:00</timestamp>
    <version>version</version>
    <cpacsVersion>cpacsVersion</cpacsVersion>
  </header>
  <vehicles>
      <aircraft>
          <model uID="aircraftUID1">
              <name>name</name>
          </model>
      </aircraft>
  </vehicles>
  <toolspecific>
      <ext:liftingLine>
          <ext:tool>
              <ext:name>name</ext:name>
              <ext:version>version</ext:version>
          </ext:tool>
          <ext:aircraftModelUID>aircraftModelUID</ext:aircraftModelUID>
          <ext:loadCases>
              <ext:loadCaseUID>loadCaseUID</ext:loadCaseUID>
          </ext:loadCases>
          <ext:toolParameters>
              <ext:usePOLINT>true</ext:usePOLINT>
              <ext:archiveMode>0</ext:archiveMode>
              <ext:parallelComputation>0</ext:parallelComputation>
              <ext:wingPanelings>
                  <ext:wingPaneling>
                      <ext:spanwise>0.0</ext:spanwise>
                      <ext:chordwise>0.0</ext:chordwise>
                  </ext:wingPaneling>
              </ext:wingPanelings>
          </ext:toolParameters>
        </ext:liftingLine>
    </toolspecific>
</cpacs>

The idea has been discussed to treat the toolType as a basic type in cpacs_baseTypes.xsd from which the toolspecific schema must inherit. This baseType must use xsd:enumeration for the version number to include a corresponding check of the tool version during schema validation.
I have experimented with the above example and learned that:

Extending enumerated lists is not directly possible in xml (Kiel 2008). One common workaround is to use xsd:union. A valid  cpacs_baseTypes.xsd could be:

    <xsd:complexType name="toolType">
        <xsd:annotation>
            <xsd:appinfo>
                <sd:schemaDoc>
                    <ddue:summary>
                        <ddue:para>Tool identification</ddue:para>
                    </ddue:summary>
                    <ddue:remarks>
                        <ddue:para>Tool identification, containing name and version of a
                            tool</ddue:para>
                    </ddue:remarks>
                </sd:schemaDoc>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:complexContent>
            <xsd:extension base="complexBaseType">
                <xsd:sequence>
                    <xsd:element name="name" type="stringBaseType">
                        <xsd:annotation>
                            <xsd:documentation>Name of the tool</xsd:documentation>
                        </xsd:annotation>
                    </xsd:element>
                    <xsd:element name="version">
                        <xsd:simpleType>
                            <xsd:union memberTypes="versionType extVersionType"/>
                        </xsd:simpleType>
                    </xsd:element>
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:simpleType name="versionType">
        <xsd:restriction base="xsd:string" />
    </xsd:simpleType>

    <xsd:simpleType name="extVersionType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="2.5" />
        </xsd:restriction>
    </xsd:simpleType>

However, it looks to me that it is not possible to place the extended type (extVersionType) in the toolspecific namespace.
example_toolspecifics_union.zip

It would be possible to have a basicToolType in cpacs_baseTypes.xsd which provides the nameand version elements without using xsd:restriction. One could inherit from this and add the remaining tool-specific information. However, the xml file does not properly validate:
example_toolspecifics_baseType.zip

I therefore propose to provide a template as shown below and agree that official toolspecific schemes must be based on this tamplate.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
            xmlns:html="http://www.w3.org/1999/xhtml"
            xmlns:sd="http://schemas.xsddoc.codeplex.com/schemaDoc/2009/3"
            xmlns:xlink="http://www.w3.org/1999/xlink"
            targetNamespace="http://www.cpacs.de/liftingLine2.5"
            xmlns="http://www.cpacs.de/liftingLine2.5"
            elementFormDefault="qualified">

    <!-- Include cpacs-specific types from cpacs_baseTypes.xsd -->
    <xsd:include schemaLocation="cpacs_baseTypes.xsd"/>

    <!-- Global element -->
    <xsd:element name="liftingLine" type="liftingLineType"/>

    <!-- Basic tool-specific types -->
    <xsd:complexType name="toolBaseType">
        <xsd:complexContent>
            <xsd:extension base="complexBaseType">
                <xsd:sequence>
                    <xsd:element name="tool" type="toolType">
                            <xsd:annotation>
                                <xsd:documentation>Tool identification</xsd:documentation>
                            </xsd:annotation>
                    </xsd:element>
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:complexType name="toolType">
        <xsd:annotation>
            <xsd:appinfo>
                <sd:schemaDoc>
                    <ddue:summary>
                        <ddue:para>Tool identification</ddue:para>
                    </ddue:summary>
                    <ddue:remarks>
                        <ddue:para>Tool identification, containing name and version of a
                            tool</ddue:para>
                    </ddue:remarks>
                </sd:schemaDoc>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:complexContent>
            <xsd:extension base="complexBaseType">
                <xsd:sequence>
                    <xsd:element name="name" type="stringBaseType">
                        <xsd:annotation>
                            <xsd:documentation>Name of the tool</xsd:documentation>
                        </xsd:annotation>
                    </xsd:element>
                    <xsd:element name="version" type="versionType"/>
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:simpleType name="versionType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="2.5" />
        </xsd:restriction>
    </xsd:simpleType>

    <!-- Type of the global tool element; must be an extension of toolBaseType -->
    <xsd:complexType name="liftingLineType">
        <xsd:annotation>
            ...
        </xsd:annotation>
        <xsd:complexContent>
            <xsd:extension base="toolBaseType">
                <xsd:sequence>
                    ...
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

The complete set of files for the example above:
example_toolspecifics.zip

I analyzed this issue in more detail (please read and comment the report) and made a small example. Please comment on this approach.

report
example files

Amazing work! Thanks for the great report.

 my result must be may result
the relationship labels "used by" in Figure 3.3 are not clear - a tool doesn't use a schema. It accepts and creates XML files that can be validated by the schema
is "semantic versioning" mentioned somewhere? what is the lower/upper boundary for supported cpacs versions of a tool?
in case of using the baseTypes.xsd, does every toolspecific schema need to exist for each compatible CPACS version separately, i.e. toolA_cpacs3_0 vs toolA_cpacs_3_1?
provide a code snippet (Python) for the <xsd:import> validation approach given at the end of section 3

Thanks @ArneBachmannDLR for your comments!

Report Version 1.1

my result must be may result

changed

the relationship labels "used by" in Figure 3.3 are not clear - a tool doesn't use a schema. It accepts and creates XML files that can be validated by the schema

added explanation in the figure description

is "semantic versioning" mentioned somewhere? what is the lower/upper boundary for supported cpacs versions of a tool?

I added a comment. Schema versioning of the tools will be part of the tool vendor. Because the attribute is only for data traceability no lower/upper boundary should be supported but only the information, which tool version actually added the data.

in case of using the baseTypes.xsd, does every toolspecific schema need to exist for each compatible CPACS version separately, i.e. toolA_cpacs3_0 vs toolA_cpacs_3_1?

Bad formulation from my side. There will be no external baseTypes.xsd. In this context I added a remark and removed the sentence that the cpacs-schema could be imported into the tool-specific schema. I hadn't thought that sentence through enough before.

provide a code snippet (Python) for the <xsd:import> validation approach given at the end of section 3

Added.

Would it be possible to already have the tool element itself being part of the namespace? This way all child elements would be inside this namespace without having to use the namespace prefix for each of them. This is one example how we use the namespaces to validate different tool specific data sets:
<toolspecific>
  <avl xmlns="http://www.cpacs.de/avl">
    <tool>
      <name>Athena Vortex Lattice</name>
      <version>3.35</version>
    </tool>
    <aircraftModelUID>model</aircraftModelUID>
    <toolParameters>
      <machNumber>0</machNumber>
      ...
    </toolParameters>
  </avl>

This would also prevent having to list the namespaces of all included toolspecifics in the header of the main CPACS file.

Yes, I just tried it. This way you don't need the prefix.
Like this example with a given schemaLocation, right?:
<toolspecific>
    <tool>
        <name>Lifting Line</name>
        <toolVersion>1.5</toolVersion>
        <schemaVersion>1.1</schemaVersion>
        <liftingLine xmlns="http://www.cpacs.de/liftingLine"
                     xsi:schemaLocation="http://www.cpacs.de/liftingLine ts_liftingLine.xsd">
          <tool>
              <name>name</name>
              <version>1.5</version>
          </tool>
          <aircraftModelUID>aircraftModelUID</aircraftModelUID>
          <loadCases>
              <loadCaseUID>loadCaseUID</loadCaseUID>
          </loadCases>
          <toolParameters>
              <usePOLINT>true</usePOLINT>
              <archiveMode>0</archiveMode>
              <parallelComputation>0</parallelComputation>
              <wingPanelings>
                  <wingPaneling>
                      <spanwise>0.0</spanwise>
                      <chordwise>0.0</chordwise>
                  </wingPaneling>
              </wingPanelings>
          </toolParameters>
        </liftingLine>
    </tool>
    </toolspecific>

Yes this looks good. However, I think the schema location is not strictly necessary as schemas can be assigned to specific namespaces. Yet, I am not sure if for example Tixi would see it the same way or if it would require the schema location entry to find the proper schema.

The schema location must just be linked with the namespace, so the xsi:schemaLocation=... can also be given in the header and the example would exactly follow your approach given above .
I honestly just tested with the Eclipse validation method. Tixi needs one XML and one XSD file as input for validation. So I'm not sure how we deal with TiXI. But I want to make sure that we follow official XML recommendations, then we can figure out a way to implement the validation in TiXI.

I'll implement it like this (screenshot from documentation):

The branch includes a toolspecific_template.xsd and an example XML file (5723e68).

Update: Introducing a namespace for CPACS conflicts with XPATH (plasmasturm.org). It would require major changes in TiXI/TiGL because a prefix must be assigned to properly query information from CPACS.
Therefore, I removed the namespace (9893598) and the example shown above would change to:
<cpacs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:noNamespaceSchemaLocation="../schema/cpacs_schema.xsd"
       xsi:schemaLocation="http://www.cpacs.de/myTool pathToToolspecificSchemaFile/toolspecific_myTool.xsd">

<toolspecific>
    <tool toolVersion="1.2.3" schemaVersion="1.0">
        <name>myTool</name>
        <myTool xmlns="http://www.cpacs.de/myTool">
            <parentElement>
                <childElement1>stringValue</childElement1>
                <childElement2>1.0</childElement2>
            </parentElement>
        </myTool>
    </tool>
</toolspecific>


Firefox looks squashed when thin or short

Hyprland Version
Hyprland, built from branch main at commit e55c5a916ab942e641339471bc80b6d2efbc2044 dirty (renderer: make sure lastWindow has correct ws in renderWorkspaceWindows). Tag: v0.32.3-49-ge55c5a91
Bug or Regression?
Bug
Description
Firefox looks squashed when if you resize it to very narrow or short. All the content in the window looks out of shape, and the cursor is misplaced as well.
not sure if it could be a firefox bug but i haven't noticed this on other apps
How to reproduce
resize firefox to either very narrow or very short
Crash reports, logs, images, videos
No response

This might be a Firefox thing. It has a minimum window size (450x120), and if you go below that, it won't rerender its content.
But probably this is intentional, because it assumes that you can't resize it below that, so there's no point updating the content.
The problem here is that Hyprland doesn't respect that minimum size, and allows you to go below that. For example, wayfire won't allow you to downsize it further.
Here you can see how Firefox is trying constantly to resize itself back to minimum:
https://github.com/hyprwm/Hyprland/assets/150595692/cace144e-b3ee-4d19-bb4a-42af000ba7ce

it's a hyprland bug, technically.


Add bracket-push exercise

@jimmbraddock thanks again for this exercise. In addition to the file comments, please scrub trailing whitespace from all files.

Looking good! Thanks! :tada:


PUT to /v2/apps gives an unhelpful error.

We should detect this problem and tell the user that they probably want to put the resource to /v2/apps/{appId} instead.

While you're at it, the error message format is different depending on what type of error happened. For example, trying to create an app with a duplicate name returns {"message":"An app with id [/hoenig/ping.indeed] already exists."} whereas trying to create an app with an invalid name returns {"errors":[{"attribute":"id","error":"path contains invalid characters (allowed: lowercase letters, digits, hyphens, \".\", \"..\")"}]}

Hi @shoenig , I have to think about it. If that is important to you, please create a separate issue.

Note: This issue has been migrated to https://jira.mesosphere.com/browse/MARATHON-3425. For more information see https://groups.google.com/forum/#!topic/marathon-framework/khtvf-ifnp8.


Xamarin Android issue on some devices

Hello,
I have tried using ZXing mobile on mulitple Android devices. It worked great on any smartphone device but on the Samsung Galaxy Tab S it just restarts the Main activity after scanning a barcode. For the Tab S this happens after the first time of scanning. On another tablet (Galaxy Tab 4) it takes 4 back-to-back scans to make the app restart. As of now I have not been able to find the cause. I am able to reproduce this with the Zxing Xamarin.Android sample. (It is hard to notice since it only has one page).

It turned out that a developer option on Android was killing the main activity. So this was not an issue specific to Zxing.
Thanks!


Separate debug support into its own "debugy" extension

Please investigate the possibility of separating debugging support into a new extension, so we can manage different versions.

The debugpy extension is published here.


Create a pull request into main branch

Set title "First release to production". Set metadata (assignees, labels, projects). Then merge pull request.

https://github.com/dmytro-komlyk/homepage/pull/25


Code generation proposal

Since the inception of this library I've been meaning to write a compiler plugin which could generate a lot of the boilerplate needed to overcome the lack of Keypaths in Kotlin. I have a Proof of concept plugin but I need to discuss the details to make sure I'm covering all details. Since I don't have access to the Toggl codebase anymore, I will need internal help to find edge cases
My idea is simple:

Introduce annotations that allow you to indicate State and action mappings
Introduce a KSP SymbolProcessor that will generate the mapping and pullback functions for you
We delete inline fun <From, reified To> From.unwrap(): To? = everywhere so I can finally have peace of mind

This is the first draft I have of the wishful thinking outcome of this proposal. I'd love to hear feedback on naming, but also on possible ways of improving the proposal, edge cases I didn't consider and boilerplate we could automate that I'm not touching here yet.
/*
    Newly added annotations
 */
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.SOURCE)
annotation class WrapsAction

@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.SOURCE)
annotation class ChildStates(vararg val childStates: KClass<*>)

/*
    Code the users write
 */
data class SettingsState(
    val booleanSetting: Boolean = true
)

sealed interface SettingsAction {
    data class ChangeSomeSetting(val newValue: Boolean) : SettingsAction
}

// We need to annotate the parent because the
// child might not have access to the parent due to modularization.
@ChildStates(SettingsState::class)
data class AppState(
    val listOfItems: List<String> = emptyList(),
    val booleanSetting: Boolean = true,
)

sealed interface AppAction {
    object ClearList : AppAction

    @WrapsAction
    data class Settings(val settingsAction: SettingsAction) : AppAction
}

class SettingsReducer : Reducer<SettingsState, SettingsAction> {
    override fun reduce(state: Mutable<SettingsState>, action: SettingsAction): List<Effect<SettingsAction>> =
        when (action) {
            is SettingsAction.ChangeSomeSetting -> state.mutateWithoutEffects {
                copy(booleanSetting = action.newValue)
            }
        }
}

fun mainReducer(settingsReducer: SettingsReducer): Reducer<AppState, AppAction> =
    settingsReducer.pullback()

/*
    Auto-generated code
 */

// This we can infer by checking that `SettingsReducer` implements `Reducer<SettingsState, SettingsAction>`
// and also by checking that both `SettingsState` and `SettingsAction` have generated action mappings.
fun Reducer<SettingsState, SettingsAction>.pullback() = pullback(
    ::mapAppStateToSettingsState,
    ::mapAppActionToSettingsAction,
    ::mapSettingsStateToAppState,
    ::mapSettingsActionToAppAction,
)

// This function is super simple to generate. We will throw a compiler error if
// the wrapper action has more than one property (meaning it's not truly wrapping a child action).
fun mapSettingsActionToAppAction(settingsAction: SettingsAction): AppAction =
    AppAction.Settings(settingsAction)

// This one we can generate easily if we are doing name matching BUT we need to allow overrides.
// We can add something like `ParentPropertyPath` so one can annotate the child state. While we
// can output compiler errors to ensure refactors don't break mapping, you are still just
// using a string to tell where to find the parent property.
fun mapSettingsStateToAppState(appState: AppState, settingsState: SettingsState): AppState =
    appState.copy(
        booleanSetting = settingsState.booleanSetting
    )

// Same as the other action mapping function.
fun mapAppActionToSettingsAction(appAction: AppAction): SettingsAction? =
    if (appAction is AppAction.Settings) appAction.settingsAction else null

// Same as the other state mapping function.
fun mapAppStateToSettingsState(appState: AppState): SettingsState =
    SettingsState(
        booleanSetting = appState.booleanSetting
    )

What are we gonna do about optionalPullback? It would probably need some extra condition parameter like:
fun mainReducer(settingsReducer: SettingsReducer): Reducer<AppState, AppAction> =
    settingsReducer.optionalPullback { appState -> listOfItems.isNotEmpty() }

🤔

I don't hate the naming, I'll just leave some possible alternatives here for consideration:
WrapsAction

PullbackStates
ComposedAction
WrapperAction

ChildStates

PullbackStates
SubStates
NestedStates
ParentOf

It'd be super cool to have an option to replace some of the generated functions with your own implementation if needed.
Would something like this be possible?
fun Reducer<SettingsState, SettingsAction>.pullback(
    mapToLocalState: (AppState) -> SettingsState = ::mapAppStateToSettingsState,
    mapToLocalAction: (AppAction) -> SettingsAction? = ::mapAppActionToSettingsAction,
    mapToGlobalState: (AppState, SettingsState) -> AppState = ::mapSettingsStateToAppState,
    mapToGlobalAction: (SettingsAction) -> AppAction = ::mapSettingsActionToAppAction,
) = pullback(
    mapToLocalState,
    mapToLocalAction,
    mapToGlobalState,
    mapToGlobalAction,
)

This is probably an edge case so I don't think we need to address this now but what if SettingsReducer is pulled in more than one context. We'd have to generate multiple pullback methods with different names 🤔

The biggest obstacle in Toggl App would be the fact that we have a ton of custom mappings where we often map types to different types like her for example:
fun mapAppStateToCalendarState(appState: AppState): CalendarState =
    CalendarState(
        user = appState.user,
        workspaces = appState.workspaces.getOrEmptyMap(),
        organizations = appState.organizations.getOrEmptyMap(),
        timeEntries = appState.timeEntries.getOrEmptyMap(),
        ....
    )

But I guess that's our problem :-D

What are we gonna do about optionalPullback? It would probably need some extra condition parameter like:

Good point. I think mapping should JustWork™ and be able to figure out optional state based on nullability, but if you want something like having optional state based on a property then yeah, we need to add an extra parameter. I'll cook something

I don't hate the naming, I'll just leave some possible alternatives here for consideration:

I started with @WrapsAction because my idea was to pass the type of the action being wrapped. This is not needed since we'll enforce the type to only have a single property, which means WrapperAction is a much better name. I like ParentOf and ChildStates, both could work.

We'd have to generate multiple pullback methods with different names

That was my first idea, but I opted for making it simpler because I didn't see the need for disambiguation. Doesn't hurt to be explicit 🤷

we have a ton of custom mappings where we often map types to different types

I think the solution of having overridable functions in the generated pullback method could be a way of solving that. We can go as far as making the whole thing augmentable rather than replaceable, e.g.:
interface ReducerMapperInterfaceThatSeriouslyNeedABetterName<ParentState, ParentAction, ChildState, ChildAction> {
    fun mapToParentAction(childAction: ChildAction): ParentAction
    fun mapToParentState(parentState: ParentState, childState: ChildState): ParentState
    fun mapToChildAction(parentaction: ParentAction): ChildAction?
    fun mapToChildState(parentState: ParentState): ChildState
}

The compiler plugin could generate an implementation of this interface with virtual methods that you could override if you want to provide specific behavior without losing the generated bits. I like the solution of just using functions though, so please advise if you think this is needed.

The last bit, "Create a SymbolProcessor for generating Pullback boilerplate," will probably be harder than we thought.
I'm talking about this part:
// This we can infer by checking that `SettingsReducer` implements `Reducer<SettingsState, SettingsAction>`
// and also by checking that both `SettingsState` and `SettingsAction` have generated action mappings.
fun Reducer<SettingsState, SettingsAction>.pullback() = pullback(
    ::mapAppStateToSettingsState,
    ::mapAppActionToSettingsAction,
    ::mapSettingsStateToAppState,
    ::mapSettingsActionToAppAction,
)

There are a couple of things making this hard. The first one is that getting generic types is not so easy. Also, reducers can have m2m relationships, meaning a "parent" reducer can have multiple "child" reducers. However, a "child" reducer might be "pullback-able" to different parent reducers, which makes the generation logic much harder to write. We might need some additional annotations.

I'm closing this issue, and creating a new one https://github.com/toggl/komposable-architecture/issues/84 just for the case mentioned above ☝


Update Documentation for Custom row

Custom Row Template
Update or clarify documentation with examples or more details for:

customs columns containing HTML elements such as buttons
custom columns for calculable data.

@Dragonxero can you explain what exactly do you need clarified?
https://xaksis.github.io/vue-good-table/guide/advanced/#custom-row-template
The documentation has example code along with live output of the example code here.
What do you mean by calculable data?

For example a detail check-out tablet with quantity and price, for showing subtotal oficina each ítem type.

@Dragonxero I don't know if I understand your usecase completely but looks like you're talking about grouped rows: https://xaksis.github.io/vue-good-table/guide/advanced/grouped-table.html#_5-what-if-you-wanted-to-add-a-total-count-in-summary-rows
also there's a recipe in the wiki showing exactly how to use this:
https://jsfiddle.net/aks9800/0t820euy/
closing.


cors settings not being applied

Prerequisites

[x] I am running the latest version. (up upgrade)
[x] I searched to see if the issue already exists.
[x] I inspected the verbose debug output with the -v, --verbose flag.
[x] Are you an Up Pro subscriber?

Description
I do not think cors is being set. It was previously working for me. I am a subscriber to up pro but currently I am just using the base version.
Steps to Reproduce
I think this would be the quickest way you could verify my claim.
Using this example
https://github.com/apex/up-examples/blob/master/oss/node-graphql/up.json
up config results in this:
 "cors": {
    "allowed_origins": null,
    "allowed_methods": null,
    "allowed_headers": null,
    "exposed_headers": null,
    "allow_credentials": false,
    "max_int": 0,
    "debug": true
  },

Which does not match the defaults listed here https://up.docs.apex.sh/#configuration.cross_origin_resource_sharing
If there isn't a problem with the config, could you let me know where in AWS does cors get set? In the API Gateway? I want to go look at the settings myself to help me debug.
Thanks!
Love Up?
Please consider signing up for Up Pro (https://up.docs.apex.sh/#guides.subscribing_to_up_pro) or donating via https://opencollective.com/apex-up/donate.
Slack
Join us on Slack https://chat.apex.sh/

Ahh those defaults in the output are a bit misleading, I didn't catch that but the Go middleware for CORS implements the defaults (instead of inside Up) so they don't appear there.
When you deploy with debug: true do you see any CORS related logs? They might help pin-point why it's not working for a request, may have to allow more header fields.

@tj Thanks for your quick reply. Sorry for my slow one. Debug true helped. You were right I think it was an authentication header change that was not part of the default set.
For anyone who comes across this is what worked for me:
  "cors": {
    "allowed_origins": [
      "https://staging.mydomain.com",
      "https://mydomain.com"
    ],
    "allowed_methods": [
      "HEAD",
      "GET",
      "POST",
      "PUT",
      "PATCH",
      "DELETE",
      "OPTIONS"
    ],
    "allowed_headers": ["*"],
    "allow_credentials": true
  },


Video 7546 setup proxy

Contributing to Twilio

All third party contributors acknowledge that any contributions they provide will be made under the same open source license that the open source project is provided under.

[x] I acknowledge that all my contributions will be made under the project's license.

Pull Request Details
JIRA link(s):

VIDEO-8500
VIDEO-8597

Description
This PR resolves the two tickets above, and also cleans up some unneeded files from the web app. The Readme has also been updated with instructions on how to run the app locally.
VIDEO-8500 has been resolved to remove the use of && in the postinstall scripts for web. The NPM scripts have been modified so that they perform the same task without using &&, which will enable this app to be built in Windows PowerShell.
VIDEO-8597 has been resolved by providing developers with a (documented) way of easily running the app locally for development. Additionally, the Readme from apps/web has been deleted because it was causing confusion.
Burndown
Before review

[ ] Added unit tests if necessary
[ ] Updated affected documentation
[ ] Verified locally with all effected platforms
[ ] Manually sanity tested running locally
[ ] Included screenshot as PR comment (if needed)
[ ] Ready for review

Before merge

[ ] Got one or more +1s
[ ] Re-tested if necessary

When I try to test this, I get
❯ npm run develop:web
npm ERR! Missing script: "develop:web"


Problem with tokeniser

Hi,
I get the following error when running the script (I tried all the models)
    labels = processor.tokenizer(
             ^^^^^^^^^^^^^^^^^^^^
  File "/opt/conda/envs/florence/lib/python3.12/site-packages/transformers/tokenization_utils_base.py", line 2883, in __call__
    encodings = self._call_one(text=text, text_pair=text_pair, **all_kwargs)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/conda/envs/florence/lib/python3.12/site-packages/transformers/tokenization_utils_base.py", line 2969, in _call_one
    return self.batch_encode_plus(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/conda/envs/florence/lib/python3.12/site-packages/transformers/tokenization_utils_base.py", line 3160, in batch_encode_plus
    return self._batch_encode_plus(
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/conda/envs/florence/lib/python3.12/site-packages/transformers/models/bart/tokenization_bart_fast.py", line 231, in _batch_encode_plus
    return super()._batch_encode_plus(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/conda/envs/florence/lib/python3.12/site-packages/transformers/tokenization_utils_fast.py", line 511, in _batch_encode_plus
    encodings = self._tokenizer.encode_batch(
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: TextEncodeInput must be Union[TextInputSequence, Tuple[InputSequence, InputSequence]]

Any idea where it comes from ?

It's probably because of last commit https://github.com/andimarafioti/florence2-finetuning/commit/11e875d94d24582dafa883849f23b4809e1caa40 since when checking out to previous commit I don't get this error anymore
But I get this one
 return Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: GET was unable to find an engine to execute this computation

Ok solved with issue https://github.com/andimarafioti/florence2-finetuning/issues/2

same with me

Oh, I get the issue with the dataset, I'm targeting a version of docmatix that's only private. But before I was targeting a dataset that was local on my computer, so not much better :/. I'll work on a quick fix

Hey, sorry about that, I messed up 😅
Here's the fix: https://github.com/andimarafioti/florence2-finetuning/commit/262258ef647b83c08e0d574b2cce5f4f4b4c9e95


#21 highlight changed register

Implement highlight changed register function and remove highlight at reset in RegisterTable.java, and add connection functions in simulator.java and window.java

Another couple things I noticed is that $pc is just always highlighted. I'm not sure that ought to be the case.

Please don't merge it yet, I'm still figuring out more test cases to make sure it will definitely work after the merge!

I've tested for the examples in EzASM example folders and nothing goes wrong, also the basic cases I wrote myself passed too if you have any trouble testing it on your machine please let me know, otherwise, I think it's ready for merge!

I notice that I fetch from main and then every button I click in the program will result in the following error, and none of them works, think it's caused by the AMD platform

I notice that I fetch from main and then every button I click in the program will result in the following error, and none of them works, think it's caused by the AMD platform

This is not a fault of this branch, it seems to be because of this other PR. You do not need to worry about this issue since it is not caused by your code. We will try and get a hotfix out soon.

I changed the code and it should work properly but because of the AMD issue I can't test it on my machine for now.

Please let me know if I need to make further modifications. Or should I just click the merge pull request?

ok, I'll take a look of the website!

You just pushed onto main using a normal merge putting many unnecessary refs onto main. I am going to have to revert it so that the git log is refs aren't cluttered by this. Squash merge is not the same as Merge.


Conflicting Information on Invalid Resource Tag Characters

Technology
Resource tags
Documentation
Azure Portal UI:

Relevant Documentation:
https://github.com/MicrosoftDocs/azure-docs/blob/master/includes/resource-manager-tag-introduction.md
Feedback
In the Azure portal UI, when applying a new tag to a resource, if I enter an invalid character, it displays a list of characters that are not supported: < > * % & : \ ? / +. The documentation linked above lists a subset of the list displayed in the UI: < > % & \\ ? /. Which is correct? I request that the correct list is propagated in both locations.

Thanks for your feedback. We will investigate and update as appropriate.

@mschappel-r7 I am assigning the issue to the author to investigate and update as appropriate.

#in-process

@mschappel-r7 - thanks for pointing out this discrepancy. I have confirmed that the documentation is mostly right. I will update the doc to indicate that these restrictions apply to the tag name, not the tag value. Also, I received errors when trying to use \ so I will add that.
It looks to me like the portal is enforcing some restrictions that aren't needed. Or, perhaps, there is something about how the values are transferred from the portal that requires them to block these characters, even though they are valid when embedded within a template.

@MohitGargMSFT - can you reassign this item to the portal team so they can evaluate whether they need to change their error condition?

@amanarneja  - do you know if this issue has been transferred to the portal team?

Thanks, @amanarneja @tfitzmac!


Update LAB_05L01_Implement_autoscaling_in_host_pools_ADDS.md

Module: 00
Lab/Demo: 00
Fixes # .
Changes proposed in this pull request:

Submitted by davemct on behalf of MOC Labs Review


Update Chap1.js

Added ordered list with emphasis, as the html display was not great, and struture poor (for machine reading).
Added anchor link for URL in last paragraph.
Note: I'm not a fan of all the Line Breaks, as these types of formatting are better handled in CSS, but have left as is, because the rest of the document is formatted like that.

Have updated the primer and incorporated you changes. Thanks


Composer default lr scheduler create spurious warnings when max training duration is in epochs

** Environment **

Collecting system information...
System Environment Report
Created: 2024-04-22 14:18:22 UTC
PyTorch information
PyTorch version: 2.2.2+cu121
Is debug build: False
CUDA used to build PyTorch: 12.1
ROCM used to build PyTorch: N/A
OS: Ubuntu 22.04.4 LTS (x86_64)
GCC version: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Clang version: 14.0.0-1ubuntu1.1
CMake version: version 3.24.1
Libc version: glibc-2.35
Python version: 3.10.14 (main, Apr  9 2024, 09:53:48) [GCC 11.4.0] (64-bit runtime)
Python platform: Linux-5.10.192-183.736.amzn2.x86_64-x86_64-with-glibc2.35
Is CUDA available: True
CUDA runtime version: 12.1.105
CUDA_MODULE_LOADING set to: LAZY
GPU models and configuration: GPU 0: Tesla T4
Nvidia driver version: 535.161.07
cuDNN version: Probably one of the following:
/usr/lib/x86_64-linux-gnu/libcudnn.so.8.9.2
/usr/lib/x86_64-linux-gnu/libcudnn_adv_infer.so.8.9.2
/usr/lib/x86_64-linux-gnu/libcudnn_adv_train.so.8.9.2
/usr/lib/x86_64-linux-gnu/libcudnn_cnn_infer.so.8.9.2
/usr/lib/x86_64-linux-gnu/libcudnn_cnn_train.so.8.9.2
/usr/lib/x86_64-linux-gnu/libcudnn_ops_infer.so.8.9.2
/usr/lib/x86_64-linux-gnu/libcudnn_ops_train.so.8.9.2
HIP runtime version: N/A
MIOpen runtime version: N/A
Is XNNPACK available: True
CPU:
Architecture:                       x86_64
CPU op-mode(s):                     32-bit, 64-bit
Address sizes:                      46 bits physical, 48 bits virtual
Byte Order:                         Little Endian
CPU(s):                             48
On-line CPU(s) list:                0-47
Vendor ID:                          GenuineIntel
Model name:                         Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
CPU family:                         6
Model:                              85
Thread(s) per core:                 2
Core(s) per socket:                 24
Socket(s):                          1
Stepping:                           7
BogoMIPS:                           4999.99
Flags:                              fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq monitor ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves ida arat pku ospke avx512_vnni
Hypervisor vendor:                  KVM
Virtualization type:                full
L1d cache:                          768 KiB (24 instances)
L1i cache:                          768 KiB (24 instances)
L2 cache:                           24 MiB (24 instances)
L3 cache:                           35.8 MiB (1 instance)
NUMA node(s):                       1
NUMA node0 CPU(s):                  0-47
Vulnerability Gather data sampling: Unknown: Dependent on hypervisor status
Vulnerability Itlb multihit:        KVM: Mitigation: VMX unsupported
Vulnerability L1tf:                 Mitigation; PTE Inversion
Vulnerability Mds:                  Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown
Vulnerability Meltdown:             Mitigation; PTI
Vulnerability Mmio stale data:      Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown
Vulnerability Retbleed:             Vulnerable
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass:    Vulnerable
Vulnerability Spectre v1:           Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:           Mitigation; Retpolines, STIBP disabled, RSB filling
Vulnerability Srbds:                Not affected
Vulnerability Tsx async abort:      Not affected
Versions of relevant libraries:
[pip3] flake8==7.0.0
[pip3] hs-infrastructure-flake8-plugins==0.2.0
[pip3] mypy==1.9.0
[pip3] mypy-extensions==1.0.0
[pip3] numpy==1.26.4
[pip3] onnx==1.16.0
[pip3] onnxruntime==1.17.3
[pip3] pytorch-ranger==0.1.1
[pip3] torch==2.2.2
[pip3] torch-optimizer==0.3.0
[pip3] torchaudio==2.2.2
[pip3] torchmetrics==1.0.3
[pip3] torchvision==0.17.2
[pip3] triton==2.2.0
[conda] Could not collect
Composer information
Composer version: 0.21.2
Composer commit hash: None
Host processor model name: Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
Host processor core count: 24
Number of nodes: 1
Accelerator model name: Tesla T4
Accelerators per node: 1
CUDA Device Count: 1

** To reproduce
When launching a training with a maximum duration passed to the fit method, if the maximum duration is in TimeUnit.EPOCH
the training spams warning messages with the following shape
Since max_duration xxep with units TimeUnit.EPOCH and t_max yyyyba with units TimeUnit.BATCH are not comparable, make sure that your LR schedule is defined at all points in the training duration.
This comes from the method _raise_if_max_duration_exceeds_t_max because the lr scheduler converts its passed max duration with _convert_time, which is then deemed incompatible with the maximum duration in epochs. This is definitely not desirable, because it forces the max duration of the training to be set in batches if you don't want to be spammed with logs.
Steps to reproduce the behavior:

Have any LR scheduler from composer, with max duration in epochs (gets internally converted to batches)
Have a composer trainer using that scheduler
Fit a model with a max duration in epochs

Expected behavior
Not having warnings if the maximum duration of the fit is in epochs.

Should be addressed by #3207, thanks for raising this issue!


Just a small syntax error in example

return (200, headers, '{"enabled": false}'}")
should be:
return (200, headers, '{"enabled": true}')

Should be addressed by #18.

Looking at the error & PR #18 - submitting some tweaks.

PR #18 merged in - thanks @fabaff !


doc: add schema for dev workflow

Source: https://docs.google.com/drawings/d/1vcbSxp2esa5h2etVvvKbfMERQiMG-8J7i0DSq6qpY5A/edit

Thanks!


Support for Image Not Found Errors

Thanks for such a light weight component. I wrap all my images in it. Since all my images are wrapped in this component, it'd be nice if I could tweak it somehow to handle Image Not Found errors(404). So if an image couldn't load, it would be handled gracefully. Any ideas how we can go about that?

also will be useful for offline-first case


Doesn't Support Authenticated Commands

Our Redis instances require authentication in order to issue commands. It doesn't appear that this PhpRedis implementation supports that.

I'm investigating this right now. This may not be an issue, but on the surface it didn't seem as though it was supporting the auth call.

This has been fixed in the submitted PR #12

@vetruvet Can you create a new release Tag for the latest master that includes this PR #12 ? Thanks!

Good call, thanks for the PR!


@apply causes css scoping issues

I have:
:host {
  ...
  @apply(--layout-scroll);
}

.more-css {
  ...
}

That's getting slammed into
:host {
  ...
  @apply (--layout-scroll);.more-css {
  ...
  }
}

@azakus @cdata we ran into this with IOWA

This has been partially fixed, but it still happens if the @apply statement is missing a trailing comma. Here is a simple repro case:
button {
  @apply(--whatever)
}
div {
  color: red;
}

And the output is: button{@apply (--whatever);div{color:red;}}

Released 2.0.1 with this fix.

Thanks for the prompt fix!

I'm afraid this is not yet fixed. I just installed<EMAIL_ADDRESS>in a clean npm project and I still reproduce the same behavior listed above, the div gets embedded inside the button block:
button{@apply (--whatever);div{color:red;}}

Ah, simple regex fail. I've modified the test to include all the various ways to space the @apply with parens, and i'll push that as 2.0.2.


Make observability-bundle installed by default

Towards https://github.com/giantswarm/giantswarm/issues/24246

What prevents us from making sure cluster-apps-operator can reconcile bundles and support in-cluster instead if hardocoding the bundle and the version in cluster-apps-operator (meaning we will be having 1 version of the bundles for all clusters)

Maybe i'm wrong but it's rather we do it right from the start

The only reasons we needed the bundle is that it was impossible to configure apps in vintage clusters but it is possible in capi with default apps IIRC

@QuentinBisson  I can make the default apps handle the bundle?
and install it in the org NS.
What do you think ?

I'm not so keen in managing 3 different standalone apps in the default-apps

You know what, i'm not hère so make it work and we talk next week :)

I think it makes sense in default-apps as well.

!!! Don't merge!

Not needed anymore


Fix eo violations

Codecov Report

Merging #518 (66384f8) into master (951a445) will increase coverage by 0.01%.
The diff coverage is 93.75%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
@@            Coverage Diff             @@
##           master     #518      +/-   ##
==========================================
+ Coverage   91.78%   91.79%   +0.01%
==========================================
  Files         152      152
  Lines        3651     3658       +7
==========================================
+ Hits         3351     3358       +7
  Misses        300      300

Files
Coverage Δ

src/schedule_app.py
100.00% <100.00%> (ø)

src/services/start/user_already_exists.py
97.05% <100.00%> (ø)

src/srv/users/active_users.py
100.00% <100.00%> (ø)

src/handlers/prayer_reaction_change_answer.py
77.04% <85.71%> (+1.61%)
:arrow_up:


unable to run the project after following the instructions on docs

java -version
openjdk version "<IP_ADDRESS>" 2022-08-12 LTS
OpenJDK Runtime Environment Microsoft-40648 (build <IP_ADDRESS>+1-LTS)
OpenJDK 64-Bit Server VM Microsoft-40648 (build <IP_ADDRESS>+1-LTS, mixed mode)
gradle -version

Gradle 8.4
Build time:   2023-10-04 20:52:13 UTC
Revision:     e9251e572c9bd1d01e503a0dfdf43aedaeecdc3f
Kotlin:       1.9.10
Groovy:       3.0.17
Ant:          Apache Ant(TM) version 1.10.13 compiled on January 4 2023
JVM:          <IP_ADDRESS> (Microsoft <IP_ADDRESS>+1-LTS)
OS:           Windows 10 10.0 amd64

error:
C:\Users\react\testing\MyApp>pnpm android

<EMAIL_ADDRESS>android C:\Users\react\testing\MyApp
cross-env EXPO_NO_DOTENV=1 expo run:android

› Building app...
Configuration on demand is an incubating feature.

Configure project :app
??  Applying gradle plugin 'expo-dev-launcher-gradle-plugin'<EMAIL_ADDRESS>
FAILURE: Build failed with an exception.

What went wrong:
Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'.

Could not determine the dependencies of null.
SDK location not found. Define a valid SDK location with an ANDROID_HOME environment variable or by setting the sdk.dir path in your project's local properties file at 'C:\Users\react\testing\MyApp\android\local.properties'.

Try:

Run with --stacktrace option to get the stack trace.
Run with --info or --debug option to get more log output.
Run with --scan to get full insights.

Get more help at https://help.gradle.org

BUILD FAILED in 50s
10 actionable tasks: 10 up-to-date
Error: C:\Users\react\testing\MyApp\android\gradlew.bat exited with non-zero code: 1
Error: C:\Users\react\testing\MyApp\android\gradlew.bat exited with non-zero code: 1
at ChildProcess.completionListener (C:\Users\react\testing\MyApp\node_modules@expo\cli\node_modules@expo\spawn-async\build\spawnAsync.js:52:23)
at Object.onceWrapper (node:events:628:26)
at ChildProcess.emit (node:events:513:28)
at cp.emit (C:\Users\react\testing\MyApp\node_modules@expo\cli\node_modules\cross-spawn\lib\enoent.js:34:29)
at maybeClose (node:internal/child_process:1091:16)
at ChildProcess._handle.onexit (node:internal/child_process:302:5)
...
at Object.spawnAsync [as default] (C:\Users\react\testing\MyApp\node_modules@expo\cli\node_modules@expo\spawn-async\build\spawnAsync.js:17:21)
at spawnGradleAsync (C:\Users\react\testing\MyApp\node_modules@expo\cli\build\src\start\platforms\android\gradle.js:72:46)
at Object.assembleAsync (C:\Users\react\testing\MyApp\node_modules@expo\cli\build\src\start\platforms\android\gradle.js:52:18)
at runAndroidAsync (C:\Users\react\testing\MyApp\node_modules@expo\cli\build\src\run\android\runAndroidAsync.js:36:24)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
 ELIFECYCLE  Command failed with exit code 1.
C:\Users\react\testing\MyApp> cd android && rm -R .gradle && cd app && rm -R build
'rm' is not recognized as an internal or external command,
operable program or batch file.

@omarbenzi Apprently you didnt complete the envirement setup correctly
SDK location not found. Define a valid SDK location with an ANDROID_HOME environment variable or by setting the sdk.dir path in your project's local properties file at 'C:\Users\react\testing\MyApp\android\local.properties'.

Make sure the environment variables is configured correctly


Test fails: test fully_expand/2 with subquery and dynamic interpolation

Elixir version
Elixir 1.13.4 (compiled with Erlang/OTP 25)
Database and Version
none
Ecto Versions
master branch
Database Adapter and Versions (postgrex, myxql, etc)
none
Current behavior
mix test fails on 5 test cases, submitting this issue only for 1 test case first in case I am doing something wrong.
This is the first case it fails on:
1) test fully_expand/2 with subquery and dynamic interpolation (Ecto.Query.Builder.DynamicTest)
     test/ecto/query/builder/dynamic_test.exs:51
     Assertion with == failed
     code:  assert Macro.to_string(expr) ==
              "&0.foo() == ^0 and (&0.bar1() == ^1 or &0.sq() in {:subquery, 0} or &0.bar3() == ^3) and &0.baz() == ^4"
     left:  "&0.foo() == ^0 and (&0.bar1() == ^1 or &0.sq() in {:subquery, 0} or &0.bar3() == ^3) and\n  &0.baz() == ^4"
     right: "&0.foo() == ^0 and (&0.bar1() == ^1 or &0.sq() in {:subquery, 0} or &0.bar3() == ^3) and &0.baz() == ^4"
     stacktrace:
       test/ecto/query/builder/dynamic_test.exs:57: (test)

Expected behavior
Does not fail

Yes! That's because Macro.to_string/2 is adding newlines on Elixir v1.13. We should add a if/else branch to those particular tests, similar to other places in the codebase (search for if Version.match?(System.version(), ">= 1.13.0-dev") do).

PRs welcome!


Half the screen is blocked by the page header

Describe the bug
Not sure if this is a bug or design choice, but the website header doesn't scroll and takes up a whole half of the page, this makes it very difficult to see or use the query builder.
To Reproduce
Steps to reproduce the behavior:

Go to the query builder.
Click on try to scroll down.
See that the header stays in place and doesn't scroll.

Expected behavior
I would expect the header to scroll so that I can see more of the options for the query builder in the screen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: iOS mojave
Browser chrome
Version 77.0.3865.120

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

This will be adressed in https://github.com/zimmerman-zimmerman/iati.cloud/issues/1814


Allow overriding the log level

This allows us to set the logging level in RabbitMQ via the enclave database environment variable RABBIT_LOG_LEVEL.  Default is info, and prints all connect and disconnect operations, which can be undesirable. https://www.rabbitmq.com/logging.html#log-levels
This may not work on future versions, but for now the RabbitMQ 3.7 is compatible with the 3.5 configuration format, so we'll continue to use the 3.5 format for now.

Can't be deployed until #36 is merged.


accessLogsFile and traefikLogsFile not respected when set via cli

When running version v1.0.0-beta.756 setting the accessLogsFile and traefikLogsFile arguments has no effect. Setting it via the config file worked properly.
root@localhost ~ # ./traefik --logLevel DEBUG --accessLogsFile foo.log --traefikLogsFile bar.log --consulCatalog.endpoint ${CONSUL_SERVER}
2016/05/25 00:33:59 configuration.go:216: No configuration file found
DEBU[2016-05-25T00:33:59Z] Global configuration loaded {"GraceTimeOut":10,"AccessLogsFile":"","TraefikLogsFile":"","LogLevel":"DEBUG","EntryPoints":{"http":{"Network":"","Address":":80","TLS":null,"Redirect":null}},"ACME":null,"DefaultEntryPoints":["http"],"ProvidersThrottleDuration":2000000000,"MaxIdleConnsPerHost":200,"Retry":null,"Docker":null,"File":null,"Web":null,"Marathon":null,"Consul":null,"ConsulCatalog":null,"Etcd":null,"Zookeeper":null,"Boltdb":null,"Kubernetes":null}
INFO[2016-05-25T00:33:59Z] Preparing server http &{Network: Address::80 TLS:<nil> Redirect:<nil>}
INFO[2016-05-25T00:33:59Z] Starting server on :80

@egalano could you try with v1.0.0-rc2?

Thanks. Confirmed fixed in 1.0.0-rc2


Using $options causing some weird behavior

Hello,
First of all thanks for the work put in this wrapper, it's quiet time saving for me ;).
I got the whole thing working without options (to specify scopes). But when I use the options (copied from the docs) it causes some weird behavior for me. When you press authorize on the discord authorization page (after you logged in there & it shows you the list of permissions), it doesn't continue, but just refreshes to that page all over again. Any fix or idea what I can do to fix this?
Thanks in advance!

Hm, I haven't had that experience. Can you double-check that you don't have any javascript/ad blockers running in your browser? For example, start up Firefox while holding down Shift to run in Safe Mode, then try again.