HazelcastSerializationException with Hazelcast 4.2 and bucket4j 6.2.0

I have upgraded my Hazelcast and bucket 4j. And now I have  error
com.hazelcast.nio.serialization.HazelcastSerializationException: java.lang.ClassNotFoundException: io.github.bucket4j.grid.CommandResult
What is strange - this error happens only when I run my application on Kubernetes. When I run it on virtual machine or on my latop everything works OK
My application is using Spring Boot 2.2.1 and Spring Cloud Gateway and react
What I am doing wrong ?
My gradle dependencies
  implementation "com.github.vladimir-bukhtoyarov:bucket4j-core:6.2.0"
   implementation "com.github.vladimir-bukhtoyarov:bucket4j-jcache:6.2.0"
   implementation "com.github.vladimir-bukhtoyarov:bucket4j-hazelcast:6.2.0"
   implementation "javax.cache:cache-api:1.0.0"
   implementation "com.hazelcast:hazelcast:4.2"
   implementation "com.hazelcast:hazelcast-eureka-one:2.0.1"

My Hazelcast configuration code
 ```
    Config config = new Config();
   config.getNetworkConfig().getJoin().getTcpIpConfig().setEnabled(true);
        config.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false);
        config.getNetworkConfig().getJoin().getAwsConfig().setEnabled(false);
        config.getNetworkConfig().getJoin().getEurekaConfig().setEnabled(false);
        config.getNetworkConfig().getJoin().getKubernetesConfig().setEnabled(false);

        if (eurekaClientOption.isPresent()) {
            EurekaClient eurekaClient = eurekaClientOption.get();
            String appName = eurekaClient.getApplicationInfoManager().getEurekaInstanceConfig().getAppname();
            logger.info("hazelcast appName :" + appName);
            Application application = eurekaClient.getApplication(appName);
            if (application != null) {
                application.getInstancesAsIsFromEureka().forEach(
                        instanceInfo -> {
                            config.getNetworkConfig().getJoin().getTcpIpConfig().addMember(instanceInfo.getIPAddr() + ":" + port);
                            logger.info("hazelcast TcpIpConfig : {}",config.getNetworkConfig().getJoin().getTcpIpConfig());
                        }
                );
            } else {
                logger.error("hazelcast empty eureka application [{}]",appName);
            }
        } else {
            logger.error("hazelcast empty eurekaClient");
        }
        config.getNetworkConfig().setPort(port).setPortAutoIncrement(false);
        config.setLiteMember(false);
        logger.info("hazelcast config {}",config);
    config.setProperty("hazelcast.phone.home.enabled", "false");
    config.setProperty("hazelcast.initial.min.cluster.size","1");
    config.setProperty("hazelcast.socket.server.bind.any", "false");
   HazelcastInstance hazelcastInstance = new HazelcastInstanceFactory(config).getHazelcastInstance();

My bucket4j code

    ```
    if (hazelcastInstance != null) {
            IMap map = hazelcastInstance.getMap("bucket");
            int initialCapacity = (throttlingRule.getBandwith() + throttlingRule.getOverdraftBandwith());
            this.bucket = Bucket4j.extension(Hazelcast.class)
                    .builder()
                    .addLimit(Bandwidth.classic(initialCapacity, Refill.smooth(throttlingRule.getBandwith(), Duration.of(throttlingRule.getDuration(), throttlingRule.getDurationUnit()))))
                    .build(map, key, RecoveryStrategy.RECONSTRUCT);

            VerboseResult<EstimationProbe> verboseResult = bucket.asVerbose().estimateAbilityToConsume(1);
            BucketConfiguration bucketConfiguration = verboseResult.getConfiguration();
            logger.info("bucket for rule [{}] and key [{}] configuration [{}] availableTokens [{}]",throttlingRule,key,bucketConfiguration,bucket.getAvailableTokens());
        } else  {
            logger.warn("hazelcastInstance == null");
        }

  public ConsumptionProbe throttleProbe() {
       assert bucket != null;
       CompletableFuture<ConsumptionProbe> probe = bucket.asAsync().tryConsumeAndReturnRemaining(1);
       return probe.join();
   }

Exception
j.l.ClassNotFoundException: io.github.bucket4j.grid.CommandResult
	at j.i.l.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
	at j.i.l.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
	at j.lang.ClassLoader.loadClass(ClassLoader.java:522)
	at c.h.i.n.ClassLoaderUtil.tryLoadClass(ClassLoaderUtil.java:289)
	at c.h.i.n.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:249)
	at c.h.i.n.IOUtil$ClassLoaderAwareObjectInputStream.resolveClass(IOUtil.java:910)
	at j.i.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1995)
	at j.i.ObjectInputStream.readClassDesc(ObjectInputStream.java:1862)
	at j.i.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2169)
	at j.i.ObjectInputStream.readObject0(ObjectInputStream.java:1679)
	at j.i.ObjectInputStream.readObject(ObjectInputStream.java:493)
	at j.i.ObjectInputStream.readObject(ObjectInputStream.java:451)
	at c.h.i.s.i.d.JavaDefaultSerializers$JavaSerializer.read(JavaDefaultSerializers.java:86)
	... 11 common frames omitted
Wrapped by: c.h.n.s.HazelcastSerializationException: java.lang.ClassNotFoundException: io.github.bucket4j.grid.CommandResult
	at c.h.i.s.i.d.JavaDefaultSerializers$JavaSerializer.read(JavaDefaultSerializers.java:90)
	at c.h.i.s.i.d.JavaDefaultSerializers$JavaSerializer.read(JavaDefaultSerializers.java:79)
	at c.h.i.s.i.StreamSerializerAdapter.read(StreamSerializerAdapter.java:44)
	at c.h.i.s.i.AbstractSerializationService.toObject(AbstractSerializationService.java:208)
	at c.h.s.i.DelegatingCompletableFuture$DeserializingFunction.apply(DelegatingCompletableFuture.java:518)
	at c.h.s.i.AbstractInvocationFuture.lambda$unblockCompose$5(AbstractInvocationFuture.java:953)
	at j.u.c.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1426)
	at j.u.c.ForkJoinTask.doExec(ForkJoinTask.java:290)
	at j.u.c.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
	at j.u.c.ForkJoinPool.scan(ForkJoinPool.java:1656)
	at j.u.c.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
	at j.u.c.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
Wrapped by: j.u.c.CompletionException: com.hazelcast.nio.serialization.HazelcastSerializationException: java.lang.ClassNotFoundException: io.github.bucket4j.grid.CommandResult
	at j.u.c.CompletableFuture.encodeThrowable(CompletableFuture.java:331)
	at j.u.c.CompletableFuture.completeThrowable(CompletableFuture.java:346)
	at j.u.c.CompletableFuture$UniApply.tryFire(CompletableFuture.java:632)
	at j.u.c.CompletableFuture.unipush(CompletableFuture.java:589)
	at j.u.c.CompletableFuture.uniApplyStage(CompletableFuture.java:660)
	at j.u.c.CompletableFuture.thenApplyAsync(CompletableFuture.java:2104)
	at c.h.s.i.InternalCompletableFuture.thenApply(InternalCompletableFuture.java:78)
	at i.g.b.AbstractBucket$1.tryConsumeAndReturnRemaining(AbstractBucket.java:147)
	at p.b.g.t.ThrottlingRuleBucket.throttleProbe(ThrottlingRuleBucket.java:64)

Hello @Jacuo,
Exception explicitly describes the problem, you need to be sure that Bucket4j related jars present on all Hazelcast nodes.

Hello @Jacuo,
Exception explicitly describes the problem, you need to be sure that Bucket4j related jars present on all Hazelcast nodes.

In fact as you can see all my nodes are embedded nodes ( the same application started on K8S cluster, which forms Hazelcast cluter, there is no "external" cluster ) - so on all nodes there is bucket4j-core . At least it worked this way in Hazelcast 3.x.

When I call bucket.getAvailableTokens() - it works.
But bucket.asAsync().tryConsumeAndReturnRemaining(1) causes exception
Maybe problem is with  bucket.asAsync() ?

I've just retested Bucket4j 6.2 with Hazelcast version provided in your first message com.hazelcast:hazelcast:4.2 and I did not find any problems with Serialization(includes async operations).
It will be better just to debug classloading remotely

Just use breakpoint expression to minimize interruptions

Thanks @vladimir-bukhtoyarov I will try to debug. Problem is, that doesn`t happen, when I run it on my laptop :-)
Anyway , when I have changed from CompletableFuture probe = bucket.asAsync().tryConsumeAndReturnRemaining(1); to CompletableFuture probe = bucket.tryConsumeAndReturnRemaining(1); error disappeared

I have the same issue. It works when I run application in IDE, when I run the application in docker-compose, it fails. My hazelcast member docker container has all the jars in classpath. Behavior changed when I run my application directly on my host vs inside of docker.

I check the jar permission and they were correct to begin with, I even try 777 permission but I face the same error.
Hazelcast member in docker works with bucket4j client in my laptop, but does not work with same bucket4j client inside docker container.  I have a custom EntryProcessor on client too, which works fine BTW.

Here is the Hazelcast member docker container

ENV BUCKET4J_VERSION 6.3.0
ENV JCACHE_VERSION 1.1.1
ENV HZ_VERSION 5.0
ENV HZ_LIB_PATH $HZ_HOME/bin/user-lib

USER root
# Download jcache and bucket4j jars from maven repo.
ADD https://repo1.maven.org/maven2/javax/cache/cache-api/$JCACHE_VERSION/cache-api-$JCACHE_VERSION.jar $HZ_LIB_PATH
ADD https://repo1.maven.org/maven2/com/github/vladimir-bukhtoyarov/bucket4j-core/$BUCKET4J_VERSION/bucket4j-core-$BUCKET4J_VERSION.jar $HZ_LIB_PATH
ADD https://repo1.maven.org/maven2/com/github/vladimir-bukhtoyarov/bucket4j-jcache/$BUCKET4J_VERSION/bucket4j-jcache-$BUCKET4J_VERSION.jar $HZ_LIB_PATH
ADD https://repo1.maven.org/maven2/com/github/vladimir-bukhtoyarov/bucket4j-hazelcast/$BUCKET4J_VERSION/bucket4j-hazelcast-$BUCKET4J_VERSION.jar $HZ_LIB_PATH
RUN chmod 644 $HZ_LIB_PATH/*.jar
USER hazelcast

EXPOSE 5701

And client configuration
        final ClientUserCodeDeploymentConfig userCodeDeploymentConfig = new ClientUserCodeDeploymentConfig();
        userCodeDeploymentConfig.addClass(EntryProcessorOne.class.getName());
        userCodeDeploymentConfig.addClass(EntryProcessorTwo.class.getName());
        userCodeDeploymentConfig.setEnabled(true);

        final ClientNetworkConfig networkConfig = new ClientNetworkConfig();
        networkConfig.setAddresses(addresses);
        return new ClientConfig()
                .setClusterName(clusterName)
                .setInstanceName(String.format("%s-%s", clusterName, UUID.randomUUID()))
                .setUserCodeDeploymentConfig(userCodeDeploymentConfig)
                .setNetworkConfig(networkConfig);

I solved my issue with help of this https://github.com/hazelcast/hazelcast/issues/11217#issuecomment-325022957
Looks like this is a bug in Hazelcast. Issue was with class loading on client and not on member side.
Following change fixed the issue for me.
        return new ClientConfig()
                .setClassLoader(CommandResult.class.getClassLoader())        <------ THIS LINE HERE
                .setClusterName(clusterName)
                .setInstanceName(String.format("%s-%s", clusterName, UUID.randomUUID()))
                .setUserCodeDeploymentConfig(userCodeDeploymentConfig)
                .setNetworkConfig(networkConfig);

Hello @jigarcaptain
Thank you for your investigation. I do not use SpringBoot, but I know that SpringBoot is a popular framework, so it looks that hint with ClientConfig#setClassLoader needs to be mentioned in the bucket4j-hazelcast documentation. I will do this at weekend.

@MarcGiffing @marcosbarbero
Hello guys. Looks that your integrations with Bucket4j can have the same problems.

Thanks for letting me know!


User can select other files than image for upload

Expected behavior
Only image files should be able to upload in editor.
Actual behavior
User can select other files to upload if they select them with the open dialog.
https://streamable.com/tftjg
https://streamable.com/9kgzd
How to reproduce

Open editor
Select image to upload
Select all files
Upload any file but image

Browser: Chrome
Operating system: Windows 10

We should check if selected file is actually an image before uploading. Checking if it has reasonable size might be a good idea as well.


go/consensus/supplementarysanity: Fix checks for legacy validators

Before, when upgrading from 22.2.x the supplementary-sanity checks would fail for validator nodes that did not yet re-register with added P2P address.
Relax supplementary-sanity registry node descriptor checks for the first MaxNodeExpiration epochs (use the isGenesis=true version, which allows these legacy node descriptors).
(Unrelated change) update minNodeDescriptorVersion to 3, because V2 descriptors are automatically migrated to V3 in deserialization, so no need to allow V2 descriptors.

These changes also force that the public key has to be in the entity's node list for the first MaxNodeExpiration epochs (see 546). Not sure if this is a problem.

Note that this is only for supplementary sanity checks which are disabled by default, but yeah this seems like an unintended consequence as it could cause the sanity checks to incorrectly fail. Maybe it would be better to use the isSanityCheck flag in VerifyRegisterNodeArgs, e.g.:
	switch isGenesis || isSanityCheck {
	case true:
		// Allow legacy descriptor with optional p2p address for validator.

Changed to use the isSanityCheck solution. Tried to avoid this before, since it's not the "correct fix", but it does make the logic much simpler, and it's also only a temporary special case anyway.


mark: 9.1.4 -> 9.12.0

Description of changes
This change bumps mark from 9.1.4, to 9.12.0. This is jumping several versions.
Full changelog: https://github.com/kovetskiy/mark/compare/9.2.0...9.12.0
Version-specific changelogs:

9.12.0: https://github.com/kovetskiy/mark/releases/tag/9.12.0
9.11.1: https://github.com/kovetskiy/mark/releases/tag/9.11.1
9.11.0: https://github.com/kovetskiy/mark/releases/tag/9.11.0
9.10.1: https://github.com/kovetskiy/mark/releases/tag/9.10.1
9.10.0: https://github.com/kovetskiy/mark/releases/tag/9.10.0
9.9.0: https://github.com/kovetskiy/mark/releases/tag/9.9.0
9.8.0: https://github.com/kovetskiy/mark/releases/tag/9.8.0
9.7.1: https://github.com/kovetskiy/mark/releases/tag/9.7.1
9.7.0: https://github.com/kovetskiy/mark/releases/tag/9.7.0
9.6.2: https://github.com/kovetskiy/mark/releases/tag/9.6.2
9.6.1: https://github.com/kovetskiy/mark/releases/tag/9.6.1
9.6.0: https://github.com/kovetskiy/mark/releases/tag/9.6.0
9.5.2: https://github.com/kovetskiy/mark/releases/tag/9.5.2
9.5.1: https://github.com/kovetskiy/mark/releases/tag/9.5.1
9.5.0: https://github.com/kovetskiy/mark/releases/tag/9.5.0
9.4.0: https://github.com/kovetskiy/mark/releases/tag/9.4.0
9.3.1: https://github.com/kovetskiy/mark/releases/tag/9.3.1
9.3.0: https://github.com/kovetskiy/mark/releases/tag/9.3.0
9.2.1: https://github.com/kovetskiy/mark/releases/tag/9.2.1
9.2.0: https://github.com/kovetskiy/mark/releases/tag/9.2.0
end of changes since 9.1.4

Things done

Built on platform(s)

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

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

[ ] sandbox = relaxed
[x] sandbox = true

[x] Tested, as applicable:

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

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

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

[x] Fits CONTRIBUTING.md.

Notes

The tests failed for me because they depend on google-chrome, which I do not have installed, and had no interest in running. I'm going to naively assume that they pass, because they do in the upstream source and the tool works. These seem to have entered upstream's tree in 9.2.0, the first version after the currently committed version in nixpkgs. Should I include google-chrome as a build dependency, or patch out those tests?

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

Is it possible to deselect the chrome-dependent tests?

Is it possible to deselect the chrome-dependent tests?

Yes, that would be possible. I asked what the preferred approach would be in the original comment:

The tests failed for me because they depend on google-chrome, which I do not have installed, and had no interest in running. I'm going to naively assume that they pass, because they do in the upstream source and the tool works. These seem to have entered upstream's tree in 9.2.0, the first version after the currently committed version in nixpkgs. Should I include google-chrome as a build dependency, or patch out those tests?

I think it is better to patch it out :)

Result of nixpkgs-review pr 317052 run on x86_64-linux 1

1 package built:

mark

Thanks for the feedback and merge, everyone!


What is “missing_scope” in the logs?

Hello,
I've installed Kubewatch via Helm, and, unless I've missed something, I don't see anything problematic in my configuration.
However, no webhook is triggered, and I only have this message, "missing_scope" in the logs:
time="2024-11-18T21:56:00Z" level=info msg="Kubewatch controller synced and ready" pkg=kubewatch-Pod time="2024-11-18T21:56:00Z" level=info msg="Kubewatch controller synced and ready" pkg=kubewatch-Deployment time="2024-11-18T21:56:00Z" level=info msg="Kubewatch controller synced and ready" pkg=kubewatch-DaemonSet time="2024-11-18T21:56:00Z" level=info msg="Kubewatch controller synced and ready" pkg=kubewatch-Event time="2024-11-18T21:56:00Z" level=info msg="Processing update to Pod: default/kubewatch-57d5967c64-4tjpm" pkg=kubewatch-Pod time="2024-11-18T21:56:00Z" level=info msg="Processing update to Pod: default/kubewatch-5468d4584f-rlthr" pkg=kubewatch-Pod time="2024-11-18T21:56:00Z" level=info msg="Processing update to Event: default/kubewatch.18092d8dbad81610" pkg=kubewatch-Event time="2024-11-18T21:56:00Z" level=info msg="Processing add to Event: default/kubewatch-5468d4584f.18092ec62fc0c2b3" pkg=kubewatch-Event time="2024-11-18T21:56:00Z" level=info msg="Processing add to Event: default/kubewatch-5468d4584f-rlthr.18092ec63021fb22" pkg=kubewatch-Event time="2024-11-18T21:56:00Z" level=info msg="Processing update to Deployment: default/kubewatch" pkg=kubewatch-Deployment time="2024-11-18T21:56:00Z" level=info msg="Processing update to Deployment: default/kubewatch" pkg=kubewatch-Deployment time="2024-11-18T21:56:00Z" level=info msg="missing_scope\n" time="2024-11-18T21:56:00Z" level=info msg="missing_scope\n" time="2024-11-18T21:56:00Z" level=info msg="missing_scope\n" time="2024-11-18T21:56:00Z" level=info msg="missing_scope\n" time="2024-11-18T21:56:00Z" level=info msg="missing_scope\n"
Would anyone be able to help me understand what's going on?
Here is my configuration:
apiVersion: v1 kind: ConfigMap metadata:  name: kubewatch data:  .kubewatch.yaml: |    namespace: ""    handler:      slackwebhook:        enabled: true        channel: "#another-cluster"        username: ":robot_face:"        emoji: ""        slackwebhookurl: "https://hooks.slack.com/services/XX/XX/XX"    resource:      clusterrole: false      configmap: false      daemonset: false      deployment: true      ingress: false      job: false      namespace: false      node: false      persistentvolume: false      pod: true      replicaset: false      replicationcontroller: false      secret: false      serviceaccount: false      services: true      event: true      coreevent: false
The webhook works when I connect to the pod and make a curl request.

Hi @robinhalet
I think the missing_scope is an error message returned from Slack, saying you don't have enough permissions to perform the operation (sending the message)
Is it possible the webhook url is missing some authorization? Maybe it's authorized to send messages to a specific channel only? Maybe it's the username?
This is how it's supposed to work:
  # Example Webhook URL:
  url = "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX""
  # Message to Slack
  msg = {
      "channel": "#my-alerts",
      "username": "Webhook_Username",
      "text": "Pod startup failed",
      "icon_emoji": ""
  }
  msg = json.dumps(msg).encode('utf-8')
  resp = http.request('POST',url, body=msg)

does that help?

Indeed, a rights issue on the Slack side. Thanks for the help and sorry for the inconvenience with this (silly) error.


Correction for raw affiliation CBGP, INRAE, CIRAD, Institut Agro, IRD, University of Montpellier, Montpellier, France; Department of Biogeography and Global Change, Museo Nacional de Ciencias Naturales (CSIC), Madrid, Spain

Correction needed for raw affiliation CBGP, INRAE, CIRAD, Institut Agro, IRD, University of Montpellier, Montpellier, France; Department of Biogeography and Global Change, Museo Nacional de Ciencias Naturales (CSIC), Madrid, Spain
raw_affiliation_name: CBGP, INRAE, CIRAD, Institut Agro, IRD, University of Montpellier, Montpellier, France; Department of Biogeography and Global Change, Museo Nacional de Ciencias Naturales (CSIC), Madrid, Spain
new_rors: 03rnk6m14;003vg9w96;02v6zg374;05kpkpg04;051escj72;05q3vnk25;05h7ddb14
previous_rors: 03rnk6m14;003vg9w96;02v6zg374;05kpkpg04;051escj72;05q3vnk25
works_examples: W4396611469
contact: a139082b36ee38c069aec7d99e71cb62:86f12b2e37dbbc2c1881f7ca4f42f1c1a3ea @ inrae.fr

This issue was accepted and ingested by the OpenAlex team on 2024-11-18. The new affiliations should be visible within the next 7 days.


Running example with latest GodotSteam release

Hi,
I was trying to run the latest example with GodotSteam latest release.
That didnt work however, the 2nd player that joins (I just run the project twice) never really joins. No debug output either,
Any ideas?

Hey there!  Were you running the lobby or networking portions?  Which version were you using?

Im sorry, I realize that the issue I created was not containing a lot of information.
I downloaded this GodotSteam release: win64-g422-s159-gs48-mp.zip
I am running the example from the multiplayer-peer branch: https://github.com/GodotSteam/GodotSteam-Example-Project/tree/multiplayer-peer
At first I tried it in my own project following your Youtube tutorial but that gave me the same result. Then I tried this branch and also has the same result.
The UI dissapears after clicking the join button, but no player is spawned. Nor is there anything in the debug logging or output.

Ah, this may be a @greenfox1505 question then.  I haven't used any of the MultiplayerPeer stuff still and haven't dug too far into it.  Was it @MichaelMacha YouTube tutorial?  He may be another good person to ask.  Another good resource is our Discord channel where they discuss MP and SMP.

Right, I have not paid attention at all..

Ah, all good!

@tuimz Hey, I'm glad you got it figured out! But yeah, this is an artifact of how Steam's relay server works. It doesn't look at IP addresses and doesn't expose them directly; it looks at Steam accounts. Moreover, you can only have one Steam account online per IP address, so you can't really run it locally.
My tutorial shows how to go about most of the work using ENet and port over to Steam with a different MultiplayerPeer, but for testing, you're either going to need another account on a laptop, or maybe you could do it with a VM, but that's not really viable for heavy graphical games as it usually cuts off a lot graphics acceleration. Creating another Steam account and using it on a cheap laptop off of eBay is probably your cheapest option, if you don't have one around.
Good luck!


Bug 2102476 Replace sync with Synchronous in the DRPolicy creation page

Signed-off-by: Timothy Asir Jeyasingh<EMAIL_ADDRESS>

@bipuladh , @GowthamShanmugam Please review


Specify Hugo requires extended Sass/SCSS version

Hugo needs to be installed with its "extended" Sass/SCSS version, otherwise this template does not work.

Ah good note! I didn't even know there were two versions. Thanks for the PR.


Confusing message when placeholder tries to use value containing $

The problem
When PlaceholderResolver.replacePlaceholder is called with a placeholderValue that contains a $ (i.e. during configuration loading), it results in a confusing error message.
Detailed description
When PlaceholderResolver.replacePlaceholder is called with a placeholderValue that contains a $, the String.replaceAll method interprets it as referring to a matching group.
This results in a confusing error message:

for a non-numeric value after $ we get java.lang.IllegalArgumentException: Illegal group reference
for a numeric value after $ we get something akin to java.lang.IndexOutOfBoundsException: No group 1

Our options are to either escape the symbol or continue to fail, but with a better error message:

Pro of escaping: value is allowed through to Styx classes, which can decide whether to allow it or not on a case-by-case basis
Con of escaping: when it is injected into a value that should be a non-string (e.g.), Jackson will provide the error, which may be out-of-context
Con of escaping: multiple points of failure

Acceptance criteria

Determine whether values containing $ should be accepted
If we accept them, escape the symbol so that it does not cause an exception
If we do not, throw an exception with a message containing the placeholder and replacement

Closing all issues over 3 years old. New issues can be created if problems are still occurring.


Controllers

Testing the Auth.js file - might need to comment out login to see if that will allow it to work.


🐞 Updater doesn’t work

Description
Updating an old release version through the in app updater isn’t working.
To Reproduce
Try updating an old version
Expected behavior
A new update is found
Version information
CodeEdit: [e.g. 1.0]
macOS: [e.g. 12.3.0]
Xcode: [e.g. 13.3]
Additional context
I think there’s an issue with the created url for the appcast file

Are you trying to update from an already alpha-tagged version or from a locally built dev version?

Are you trying to update from an already alpha-tagged version or from a locally built dev version?

I tried updating from the latest alpha I downloaded from GitHub


Added Nazeer Hussain University

I have added Nazeer Hussain University at Karachi, Pakistan

@masheransari First stage of verification passed, official domain is nhu.edu.pk as far as I verified. This is just an informational note. Pull request is still in the review. I appreciate your patience while waiting for the final decision.

@masheransari Thank you for your patience while waiting for a review and processing your request. Pull request merged.


Bad access after realm has been deleted from disk and created again

Ok, so I have a realm the directory [app folder]/Documents/db/ so the path of the realm is [app folder]/Documents/db/default.realm. When a user logs out we have to delete the realm for security reasons. I am getting a BAD_ACCESS here. It seems as table is not defined. This is happening after I delete a realm at the specified path, recreate it, and then perform a write transaction. I have verified that the realm file and all associated .lock files are removed and then recreated correctly.
I am using realm 0.96.2 on iOS 9.1.
Any help you can lend would be greatly appreciated.
Here is all my system info:
ProductName:	Mac OS X
ProductVersion:	10.11.1
BuildVersion:	15B42

/Applications/Xcode.app/Contents/Developer
Xcode 7.1.1
Build version 7B1005

/usr/local/bin/pod
0.39.0

/bin/bash
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)

/usr/bin/git
git version 2.4.9 (Apple Git-60)

Edit: If I delete the realm at the specified path above, force quit the app, then recreate it, all is good. Let me know if you need anymore info.

Before deleting a Realm file, you need to make sure that you don't hold anymore any accessor to it. This includes all instances of the following classes: RLMRealm, RLMObject, RLMResults. From what you describe, it seems very likely to me that you're still holding a reference to it somewhere and it has an invalid state through that.

I think @mrackwitz's assessment of the situation is correct. @brianblanchard-wf we're closing this issue because we haven't heard back from you in a while, but please do reopen if you'd like some clarifications or have any further questions.


Creating grids with 6D Ferret

Reported by ansley b manke on 1 Aug 2012 21:59 UTC
This dataset, for instance,
use "http://geoport.whoi.edu:8081/thredds/dodsC/coawst_2_2/fmrc/coawst_2_2_best.ncd"
has a number of dimensions that are not coordinate variables. Some of those are eta_u, xi_u which are the dimensions of coordinate variables. 6D Ferret is marking ETA_U as an E axis, and therefore getting all the grids wrong.
As of Ferret v6.7, we are not any longer using axis names to set the directions of axes. (See http://ferret.pmel.noaa.gov/Ferret/documentation/release-notes/version-6-7-release-notes).  This change had been applied in handling coordinate variables, but there was a remaining bit of this in handling dimensions which are not coordinate variables.
Migrated-From: http://dunkel.pmel.noaa.gov/trac/ferret/ticket/1955

Comment by ansley.b.manke on 2 Aug 2012 16:54 UTC
This is fixed.  There was still a piece of code which assigned direction to a dimension based on the dimension name, in tm_make_basic_axis.F
This changes the output of two benchmark scripts: err551_invalid_calendar.jnl and bn_repeated_coords.jnl, the second of which needed a change in the script.  These are scripts where there is something that invalidates the coordinate axis, and so Ferret gives a warning such as
*** NOTE: Coordinates out of order or missing on axis TMIN at subscript 4
*** NOTE: A dummy axis of subscripts will be used
That dummy axis previously had a direction based on the axis name, such as T axis for the axis name "tmin".  Now all of those axes are defined on the X axis.


Code formatter

Hi, what do you think about using Prettier as a code formatter?
I'd be happy to make a PR.

Hey 😃 if you take a look at the commits I just did it today 😃 applied it to all the modules and created editorconfig file too

Wow that timing. Can't see it in devDependencies tho, is it in master?
Then I could:

add a precommit hook to make sure formatting is on par (Husky + lint-staged)
add scripts for validating and fixing to package.json
add validation to the CI pipeline
enable it for Markdown files too

I think a precommit hook would work! Just let's make sure it's locked to src/**/**.ts
Let's not touch the markdown files just yet. I made a big mistake going for my own solution with md parsing.  Maybe you have something in mind that could generate beautiful static docs? Last time I checked - didn't like anything ;-(

Quite some projects (including Prettier) are using [Docosaurus[(https://docusaurus.io).


Kernel for extractCol-operation for DenseMatrix

In GitLab by @pdamme on Jun 11, 2021, 19:29
We need a specialization of this kernel for DenseMatrix. The selected columns should be specified by min/max (a special case is when min equals max). Alternatively, they could be specified by a nx1 column matrix containing the positions of the columns to extract.

This issue was rephrased as #193 and was addressed 2 years ago in c33f2128d91b65a0963f6666f6265a08189ed833. Thus, I close it now.


Energy monitor for LG ThinQ Washing machine and dryer

Hello,
First of all, thank your for the plug-in.  It's work very well.  My brand new LG Washing machine and dryer can show, in app, th energy consumption.  But i'm not sure if this plugging can read this information.
If yes, could you tell me how can i read and use it?
If no, is it possible to evaluate the possibility to add this featureY
Tanks for you reply!
Richard

Close because duplicated of #555


[lc_ctrl] System-wide alignment of lc_tx_t usage

This is a low-prio cleanup task (post ES), intended to align the usage of the lc_tx_t with how we are using mubi*_t today. I.e., leveraging pre-defined functions for AND/OR combinations and tests (reductions to 1 bit), rather than manipulating the signals directly in RTL.
To this end I prepared functions similar to what is available in prim_mubi_pkg.sv in this PR: #10560

we ended adding these functions, so this issue can now be closed.


add registry cert

add registry cert #852

Runtime module will change a lot, I think the registry should be more independent.


run "infer" in docker container

I run "infer" in docker container(os: CentOS 7  version:v0.17.0  command: infer -- ./gradlew build).
but  it told me "Failed to Pinning cpu".
How can I solve it.

Do you solve it?

@YRLeaner @yileye Were you able to resolve this issue?
I am also running into this issue with message: Failed pinning to cpu 0, trying 0/2 when running Infer in Docker.
I am using latest Infer version: 1.1.0 on ubuntu:20.04 Docker image.


[Question] The purpose of SCTP iterator thread.

I'm curios what is the purpose of SCTP iterator thread.
I'm currently trying to migrate to single threaded API when library is initialized via usrsctp_init_nothreads and usrsctp_handle_timers is explicitly invoked by user application.
I've noticed that SCTP iterator thread is created even when library is initialized via usrsctp_init_nothreads.
I don't see it ever executed in a scenario of WebRTC's data channel.
Maybe SCTP iterator should not be started at all? Could you please clarify?

The iterator thread deal with stuff, which would take too long to do it instantly. For example, if you have a 1-to-many style sockets with a lot of associations and you send a message on all associations. Or if you are adding an interface address. Then you need to do the ASCONF dance on all associations, which are not explicitly bound. This could take too long. The single thread support is a code contribution, so I don't know exactly how the handling of the iterator thread is intended in that case.


v0.4.0 release tag is not on master

What happened?
When the v0.4.0 release was tagged, the tag was applied to a commit that occurred after the release-0.4 branch was cut from master. Because of this, the build submodule does not acknowledge the v0.4.0 tag when it executes a build, so new local builds and master images being pushed to docker hub are tagged like v0.3.0-239.g5da3024 even though they are post v0.4.0 commits. I have confirmed that earlier releases (such as v0.3.0) were tagged on commits that existed in master.
How can we fix it?
I see this as more of a problem with the way the build submodule selects VERSION rather than something that is incorrect about how we are tagging. We should consider updating the build submodule to consider all tags, not just those on master.

This is the lingering behavior of #330


Update spelling (typo)

Change "Aure" to "Azure" in intro paragraph

@kinshasha : Thanks for your contribution! The author, @cherylmc, has been notified to review your proposed change.

Merging typo fix


head () doesn't work properly in Page Components on initial page load (default tags are rendered)

Any reason why vue-meta doesn't work when I do this in page component?
head () {
    return {
      meta: [
        { hid: 'DAMN', name: 'DAMN', content: 'DAMNDAMNDAMN' }
      ]
    }
  }

This doesn't work too. Why?
meta: [
        { property: 'og:title', content: '777' }
      ]

I notice another issue. I made it work but after I run generate this works only when I navigate to this page throught app. If I load directly - there's no tags!!!
head () {
    return {
      title: '111',
      meta: [
        { property: 'og:title', content: '888' }
      ]
    }
  }

What is happening?

How to make it server-rendered?

Custom title on Page doesn't work when page refreshes!

Ok, I checked few times. vue-meta 100% working incorrectly with SSR/Nuxt.
Meta tags dynamicly changing only when I navigate on client. If I load page directly - then default tags from nuxt.config are rendered. This is HUGE SEO/SMM issue! Without it I literally can't use Nuxt.

Can't believe how this issue ended to be closed - https://github.com/nuxt/nuxt.js/issues/889

Hm, I found issue in my code. I had v-if on my nuxt component (preloading). It broke meta!


Create pylint.yml

Check changes to requirements? Want this to work on local repo? Or just work with github actions?

squashing and merging commits, edit to pylint.yml was an error in the base github template, and fix is most likely temporary


ISSUE: feature/frontend-catalouge branch Somewhat Functionable

[Please scroll down to see most recent update]
Documentation for reason why we can't test it as of Feb 28th.

Frontend and Backend are not conencted yet

Some other suggestions:

Instead of error logs being shown in the console, it would be nice if it is a message/alert on the page itself so its helpful for the user.
A success/error message would also be helpful so the user knows if their submission for new projectile is ok or not.

@itsjorden is correct, it seems that this branch is not integrated with its backend functionalities, therefor, this is to document that we are not able to do integration testing

As of 8 am on Feb 29, current state of the frontend and backend:

Catalogue and Site names in the sidebar should be Site and Add Projectile respectively(?). Else, there is other way to Add a new projectile at all but,
The only way you can add a projectile is to click on already existing projectile. There is no plus box to click from.
Add New Projectiles are missing a couple of input values and 2 important features from the requirement. As of current state (in jeffs branch):
a. it only allows to create a new projectile with attributes: image input, description, name, location, dimension, and artifact type
b. It should be or should also have(?) based on the database: siteId or site it was found, culture, bladeshape, baseshape, haftingshape, and cross section shape
c. There is also no option to create a custom attribute like what was done in the Create a New Site form where user is able to create a new Region. (Note: Create a New Site also doesnt save that custom region hence the function if it can be deleted are not testable)
d. There is also no option to delete a pre-defined attributes
No helpful messages or interactive feel from the webpage. Creating a new site, for example, once form is completed and submitted, no messages that it was a success pops out and the form resets to its original state (blank state). In order to see if the form submission was successful, you have to go to the console log.

Both c and d are crucial as it is a big part of feature/user story 2 and 6 requirement. If not resolved, the user stories implementation would be incomplete. Image attached below corresponds to each number.
Click link for demo : https://drive.google.com/file/d/1P3LK04C5q8tj_vWb5hJ2XVS4-LS07zTf/view?usp=sharing

Creating a New Site somewhat works. It saves the the form submission. When clicking the Add More in the Dropdown option, you have to click it at least 3 times to see the changes.

Since the feature/frontend-catalogue branch has had its functionality moved to the feature/projectile branch, are these errors still apparent?

Refactored / reworked in branch feature/projectile.


Added optional pointer to Wire parameter to init function

Looks good, thanks

You're welcome, glad you found it useful. Thanks for your support, Dacidy
On Sun, 30 Jun 2024, 17:39 Larry Bank, @.***> wrote:

Looks good, thanks
—
Reply to this email directly, view it on GitHub
https://github.com/bitbank2/bb_captouch/pull/4#issuecomment-2198616406,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AD3SSGWXEZOONEGBPVRZBODZKAYCXAVCNFSM6AAAAABKECLYE2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCOJYGYYTMNBQGY
.
You are receiving this because you authored the thread.Message ID:
@.***>


Promtool unit test rules support values as a range

I am using the promtool unit testing support to test my alerts and recording rules.
One thing that would be great is if I could, instead of providing a specific expected value, I could give a range within which this value should be. For example I have this rule:
    - record: avg_read_latency_5m
      expr: histogram_quantile(0.999, rate(duration_bucket[5m]))

And then I have the following test
evaluation_interval: 1m
tests:
  # This test provides 5 durations of 1 second every 10 seconds.
  - interval: 10s
    input_series:
    - series: 'duration_bucket{namespace="a",le="0.01"}'
      values: '0+0x120'
    - series: 'duration_bucket{namespace="a",le="0.1"}'
      values: '0+0x120'
    - series: 'duration_bucket{namespace="a",le="1.0"}'
      values: '100+5x120'
    - series: 'duration_bucket{namespace="a",le="+Inf"}'
      values: '100+5x120'
    promql_expr_test:
      - expr: avg_read_latency_5m
        eval_time: 10m
        exp_samples:
          - labels: 'avg_read_latency_5m{namespace="a"}'
            value: 0.9991

This above test passes, but all the inputs are at exactly 1 second. I guess the 0.9991 instead of 1.0 result is related to a slight mismatch at the boundaries at which the samples are taken?
In that case it would be good to be able to, instead of using 0.9991 as expected value, be able to specify something like 1.0 ±3% or something like this.

PromQL is meant to be fully deterministic, so there's no need for that. There seems to be a bug here though, as this should be returning 1.
Can you file a bug in the prometheus repo?

Thanks @brian-brazil - I clearly posted this in the wrong repo...


Handle more error conditions

Polish. Many error conditions we should handle.
Add checklist bellow once actionable tasks found.

This issue is too open ended.


Hyperlinked CHANGELOG

It's tedious for even slightly outsiders like me to follow the CHANGELOG without these hyperlinks (I'm manually checking out the issues). Going forward could we have hyperlinks to the issues? Issue URLs resolve automatically to PRs.

Check the releases page: https://github.com/kontena/kontena/releases

oh right, still how about this: https://github.com/kontena/kontena/pull/1061


[MM-36423][MM-36427] Edit/Delete modals for dropdown

Summary
Removed the Server Management screen from the Settings screen and have added Edit/Delete modals that can be triggered via the new dropdown menu.
Ticket Link
https://mattermost.atlassian.net/browse/MM-36427
https://mattermost.atlassian.net/browse/MM-36423
Release Note
Removed Server Management screen from Settings, added Edit/Delete buttons in new dropdown

The file .circleci/config.yml is in the blocklist for external contributors. Hence, these changes are not tested by the CI pipeline active until the build is re-triggered by a core committer or the PR is merged. Please be careful when reviewing it.
/cc @mattermost/core-security @mattermost/core-build-engineers

The file .circleci/config.yml is in the blocklist for external contributors. Hence, these changes are not tested by the CI pipeline active until the build is re-triggered by a core committer or the PR is merged. Please be careful when reviewing it.
/cc @mattermost/core-security @mattermost/core-build-engineers

The files .circleci/config.yml, scripts/cp_artifacts.sh, scripts/cp_artifacts.sh are in the blocklist for external contributors. Hence, these changes are not tested by the CI pipeline active until the build is re-triggered by a core committer or the PR is merged. Please be careful when reviewing it.
/cc @mattermost/core-security @mattermost/core-build-engineers

The files .circleci/config.yml, scripts/cp_artifacts.sh, scripts/cp_artifacts.sh are in the blocklist for external contributors. Hence, these changes are not tested by the CI pipeline active until the build is re-triggered by a core committer or the PR is merged. Please be careful when reviewing it.
/cc @mattermost/core-security @mattermost/core-build-engineers


Range Selection not implemented

The begin(gyroRange_t rng) function of the driver takes a gyroscope range parameter (+/- 2000, 1000, 500, or 250 degrees per second). This doesn't actually doesn't get sent to the FXAS21002C.
To properly implement this CTRL_REG0 needs to be set (or so it seems to me).
Here is the fix that I am using:
/**************************************************************************/
/*!
    @brief  Setups the HW
*/
/**************************************************************************/
bool Adafruit_FXAS21002C::begin(gyroRange_t rng)
{
  /* Enable I2C */
  Wire.begin();

  /* Set the range the an appropriate value */
  _range = rng;

  /* Clear the raw sensor data */
  raw.x = 0;
  raw.y = 0;
  raw.z = 0;

  /* Make sure we have the correct chip ID since this checks
     for correct address and that the IC is properly connected */
  uint8_t id = read8(GYRO_REGISTER_WHO_AM_I);
  // Serial.print("WHO AM I? 0x"); Serial.println(id, HEX);
  if (id != FXAS21002C_ID)
  {
    return false;
  }

  /* Set CTRL_REG1 (0x13)
   ====================================================================
   BIT  Symbol    Description                                   Default
   ---  ------    --------------------------------------------- -------
     6  RESET     Reset device on 1                                   0
     5  ST        Self test enabled on 1                              0
   4:2  DR        Output data rate                                  000
                  000 = 800 Hz
                  001 = 400 Hz
                  010 = 200 Hz
                  011 = 100 Hz
                  100 = 50 Hz
                  101 = 25 Hz
                  110 = 12.5 Hz
                  111 = 12.5 Hz
     1  ACTIVE    Standby(0)/Active(1)                                0
     0  READY     Standby(0)/Ready(1)                                 0
  */
  /* Set CTRL_REG0 (0x0D)  Default value 0x00
  =====================================================================
  BIT  Symbol     Description                                   Default
  7:6  BW         cut-off frequency of low-pass filter               00
    5  SPIW       SPI interface mode selection                        0
  4:3  SEL        High-pass filter cutoff frequency selection        00
  2    HPF_EN     High-pass filter enable                             0
  1:0  FS         Full-scale range selection
                  00 = +-2000 dps
                  01 = +-1000 dps
                  10 = +-500 dps
                  11 = +-250 dps
  The bit fields in CTRL_REG0 should be changed only in Standby or Ready modes.
  */
  uint8_t ctrlReg0 = 0x00;
  switch(_range)
  {
    case GYRO_RANGE_250DPS:
      ctrlReg0 = 0x03;
      break;
    case GYRO_RANGE_500DPS:
     ctrlReg0 = 0x02;
      break;
    case GYRO_RANGE_1000DPS:
      ctrlReg0 = 0x01;
      break;
    case GYRO_RANGE_2000DPS:
      ctrlReg0 = 0x00;
      break;
  }

  /* Reset then switch to active mode with 100Hz output */
  write8(GYRO_REGISTER_CTRL_REG1, 0x00); // Standby
  write8(GYRO_REGISTER_CTRL_REG1, (1<<6)); // Reset
  write8(GYRO_REGISTER_CTRL_REG0, ctrlReg0); // Set sensitivity
  write8(GYRO_REGISTER_CTRL_REG1, 0x0E); // Active
  delay(100); // 60 ms + 1/ODR
  /* ------------------------------------------------------------------ */

  return true;
}

Here is a gzip of the modified file. The *.h file did not need modification.
Adafruit_FXAS21002C.cpp.gz
Cheers
Greg B.

I agree with that! I literally spent 6 hours of why my custom made source code (under esp-open-rtos) was giving me much worst results compared to the Adafruit's one. They have to fix that...

Thanks for the heads up ... I just pushed version 1.1.3 out with the following fix: https://github.com/adafruit/Adafruit_FXAS21002C/commit/b63cd3b29608f8d217275c4accae8e791e832983


Investigate markdown-it-py

https://github.com/executablebooks/markdown-it-py might be a faster alternative to the markdown2 package which would be helpful for sites with lots of content.

Benchmarking  both markdown-it-py and markdown2 is a little inconclusive, but it appears that they are pretty close in speed so that doesn't seem like that compelling of a reason to switch. I also really appreciate that markdown2 returns the frontmatter variables automatically, whereas (AFAIK) https://mdit-py-plugins.readthedocs.io/en/latest/#front-matter just removes the YAML from the rendered markdown. I think I'll stick with markdown2 for now unless another compelling reason to switch to a different parser comes up.


premium connectors

is there a list with all the premium connectors?

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

ID: 56b6371f-3a43-09ba-e714-b6a9995a1e19
Version Independent ID: f1e0a6b5-26c9-3f31-7e8b-4e58c34d9636
Content: Licensing overview - Power Platform Admin center
Content Source: power-platform/admin/pricing-billing-skus.md
Service: power-platform
GitHub Login: @dileepsinghmicrosoft
Microsoft Alias: dileeps

@MariusWeiss
You can see the list here:
https://preview.flow.microsoft.com/en-us/connectors/?filter=&category=premium


Regarding the hyperparameter issue.

Hello, I noticed that the code includes hyperparameters lambda and beta. If I want to adjust the bitrate, which parameter should I modify? According to the original paper, it should be lambda, but I am not entirely sure.

Sorry for the confusion. In the code it should be beta which corresponds to lambda in the paper.

Sorry for the confusion. In the code it should be beta which corresponds to lambda in the paper.

Thank you for your reply. I have two more questions. First, if beta controls the bitrate, why does it change during training, such as in line 480 of train.py? Second, I noticed that in distributed training, the learning rate (lr) is not multiplied by the number of GPUs. Could this affect the training? Also, did you use multi-GPU or single-GPU training?

For the first question please refer to https://github.com/LabShuHangGU/CCA?tab=readme-ov-file#pretrained-models, which is a commonly used training method in LIC. For the second question we use a single graphics card for our pretrained model.


Add gcc coverage and upload to codecov

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@3066705). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master      #11   +/-   ##
=========================================
  Coverage          ?   63.01%
=========================================
  Files             ?        4
  Lines             ?      219
  Branches          ?        0
=========================================
  Hits              ?      138
  Misses            ?       81
  Partials          ?        0

Continue to review full report at Codecov.

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


WIP: Allow to use full git protocol

[x] port git helper from FAKE
[x] parse git urls from dependencies file
[x] parse git urls from lock file
[x] clone/fetch repos in user folder cache
[x] clone/fetch repos in paket-files folder
[ ] docs

This is now in v3 branch and first prerelease is on nuget


Dev mode can't recover from app exception in CDI Observer early in app startup;  continued message about conflicting application name

From time to time, I would see the following error printed in the console during development:

During application startup, the application failed to start because multiple applications were found to have the name of <my-application-name>.

After which my only option is to manually stop and restart liberty:dev. There might be some exceptional condition under which it fails to unregister/re-register the application. Let me know what more information I can give you.

This can happen if the liberty-maven-plugin deploys the app in two different ways, roughly speaking.
Next time it happens please gather and share

Your server config: server.xml, as well as the configDropins directory, e.g.  target/liberty/wlp/usr/servers/defaultServer/configDropins/ , some of the contents of which may be generated by the liberty-maven-plugin
Your liberty-maven-plugin config (pom.xml, etc.)
The contents of your server's apps and dropins, directories

as well as your best description of what you were doing.
It might be possible for us to make a suggestion if you were to just share the pom.xml and server.xml, though that might not really show anything conclusive.

I will keep this in mind for next time (it doesn't happen too often). For the pom.xml and server.xml files, please refer to https://github.com/OpenLiberty/ci.maven/issues/1587#issuecomment-1242933252.

Alright, it has happened again.

Your server config: server.xml, as well as the configDropins directory, e.g. target/liberty/wlp/usr/servers/defaultServer/configDropins/

I can't find that directory, only target/liberty/wlp/usr/servers/defaultServer/dropins/, which is completely empty.

Your liberty-maven-plugin config (pom.xml, etc.)

I have nothing extraordinary in this regard. Please, refer to the other ticket.

The contents of your server's apps and dropins, directories

"dropins" is empty. "apps" contains a single file, "app.war.xml", with the following content:
<?xml version="1.0" encoding="UTF-8"?>
<archive>
    <dir sourceOnDisk="/app/target/classes" targetInArchive="/WEB-INF/classes"/>
    <!-- A few entries have been omitted... -->
    <file sourceOnDisk="/app/.mvn/repository/org/apache/commons/commons-csv/1.9.0/commons-csv-1.9.0.jar" targetInArchive="/WEB-INF/lib/commons-csv-1.9.0.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/jakarta/json/bind/jakarta.json.bind-api/2.0.0/jakarta.json.bind-api-2.0.0.jar" targetInArchive="/WEB-INF/lib/jakarta.json.bind-api-2.0.0.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/jakarta/json/jakarta.json-api/2.0.1/jakarta.json-api-2.0.1.jar" targetInArchive="/WEB-INF/lib/jakarta.json-api-2.0.1.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/jakarta/annotation/jakarta.annotation-api/2.0.0/jakarta.annotation-api-2.0.0.jar" targetInArchive="/WEB-INF/lib/jakarta.annotation-api-2.0.0.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/checkerframework/checker-qual/3.5.0/checker-qual-3.5.0.jar" targetInArchive="/WEB-INF/lib/checker-qual-3.5.0.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/jgroups/jgroups/5.2.0.Final/jgroups-5.2.0.Final.jar" targetInArchive="/WEB-INF/lib/jgroups-5.2.0.Final.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/io/netty/netty-transport-native-epoll/4.1.77.Final/netty-transport-native-epoll-4.1.77.Final-linux-x86_64.jar" targetInArchive="/WEB-INF/lib/netty-transport-native-epoll-4.1.77.Final-linux-x86_64.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/io/netty/netty-transport-native-unix-common/4.1.77.Final/netty-transport-native-unix-common-4.1.77.Final.jar" targetInArchive="/WEB-INF/lib/netty-transport-native-unix-common-4.1.77.Final.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/io/netty/netty-transport-classes-epoll/4.1.77.Final/netty-transport-classes-epoll-4.1.77.Final.jar" targetInArchive="/WEB-INF/lib/netty-transport-classes-epoll-4.1.77.Final.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/io/netty/netty-transport-native-kqueue/4.1.77.Final/netty-transport-native-kqueue-4.1.77.Final-osx-x86_64.jar" targetInArchive="/WEB-INF/lib/netty-transport-native-kqueue-4.1.77.Final-osx-x86_64.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/io/netty/netty-transport-classes-kqueue/4.1.77.Final/netty-transport-classes-kqueue-4.1.77.Final.jar" targetInArchive="/WEB-INF/lib/netty-transport-classes-kqueue-4.1.77.Final.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/io/netty/netty-codec-http/4.1.77.Final/netty-codec-http-4.1.77.Final.jar" targetInArchive="/WEB-INF/lib/netty-codec-http-4.1.77.Final.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/io/netty/netty-buffer/4.1.77.Final/netty-buffer-4.1.77.Final.jar" targetInArchive="/WEB-INF/lib/netty-buffer-4.1.77.Final.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/io/netty/netty-transport/4.1.77.Final/netty-transport-4.1.77.Final.jar" targetInArchive="/WEB-INF/lib/netty-transport-4.1.77.Final.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/io/netty/netty-resolver/4.1.77.Final/netty-resolver-4.1.77.Final.jar" targetInArchive="/WEB-INF/lib/netty-resolver-4.1.77.Final.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/io/netty/netty-handler/4.1.77.Final/netty-handler-4.1.77.Final.jar" targetInArchive="/WEB-INF/lib/netty-handler-4.1.77.Final.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/io/netty/netty-handler-proxy/4.1.77.Final/netty-handler-proxy-4.1.77.Final.jar" targetInArchive="/WEB-INF/lib/netty-handler-proxy-4.1.77.Final.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/io/netty/netty-codec/4.1.77.Final/netty-codec-4.1.77.Final.jar" targetInArchive="/WEB-INF/lib/netty-codec-4.1.77.Final.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/io/netty/netty-codec-socks/4.1.77.Final/netty-codec-socks-4.1.77.Final.jar" targetInArchive="/WEB-INF/lib/netty-codec-socks-4.1.77.Final.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/io/netty/netty-common/4.1.77.Final/netty-common-4.1.77.Final.jar" targetInArchive="/WEB-INF/lib/netty-common-4.1.77.Final.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/jboss/logging/jboss-logging/3.5.0.Final/jboss-logging-3.5.0.Final.jar" targetInArchive="/WEB-INF/lib/jboss-logging-3.5.0.Final.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/commons-beanutils/commons-beanutils/1.9.4/commons-beanutils-1.9.4.jar" targetInArchive="/WEB-INF/lib/commons-beanutils-1.9.4.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar" targetInArchive="/WEB-INF/lib/commons-logging-1.2.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar" targetInArchive="/WEB-INF/lib/commons-collections-3.2.2.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/jakarta/jms/jakarta.jms-api/3.1.0/jakarta.jms-api-3.1.0.jar" targetInArchive="/WEB-INF/lib/jakarta.jms-api-3.1.0.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/eclipse/persistence/org.eclipse.persistence.jpa.modelgen.processor/3.0.3/org.eclipse.persistence.jpa.modelgen.processor-3.0.3.jar" targetInArchive="/WEB-INF/lib/org.eclipse.persistence.jpa.modelgen.processor-3.0.3.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/eclipse/persistence/org.eclipse.persistence.jpa/3.0.3/org.eclipse.persistence.jpa-3.0.3.jar" targetInArchive="/WEB-INF/lib/org.eclipse.persistence.jpa-3.0.3.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/eclipse/persistence/org.eclipse.persistence.asm/9.3.0/org.eclipse.persistence.asm-9.3.0.jar" targetInArchive="/WEB-INF/lib/org.eclipse.persistence.asm-9.3.0.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/eclipse/persistence/org.eclipse.persistence.core/3.0.3/org.eclipse.persistence.core-3.0.3.jar" targetInArchive="/WEB-INF/lib/org.eclipse.persistence.core-3.0.3.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/eclipse/persistence/org.eclipse.persistence.jpa.jpql/3.0.3/org.eclipse.persistence.jpa.jpql-3.0.3.jar" targetInArchive="/WEB-INF/lib/org.eclipse.persistence.jpa.jpql-3.0.3.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/jakarta/persistence/jakarta.persistence-api/3.0.0/jakarta.persistence-api-3.0.0.jar" targetInArchive="/WEB-INF/lib/jakarta.persistence-api-3.0.0.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/eclipse/yasson/2.0.4/yasson-2.0.4.jar" targetInArchive="/WEB-INF/lib/yasson-2.0.4.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/glassfish/jakarta.json/2.0.0/jakarta.json-2.0.0-module.jar" targetInArchive="/WEB-INF/lib/jakarta.json-2.0.0-module.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/apache/ant/ant/1.10.12/ant-1.10.12.jar" targetInArchive="/WEB-INF/lib/ant-1.10.12.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/apache/ant/ant-junit/1.10.12/ant-junit-1.10.12.jar" targetInArchive="/WEB-INF/lib/ant-junit-1.10.12.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/apache/ant/ant-launcher/1.10.12/ant-launcher-1.10.12.jar" targetInArchive="/WEB-INF/lib/ant-launcher-1.10.12.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/apache/ant/ant-antlr/1.10.12/ant-antlr-1.10.12.jar" targetInArchive="/WEB-INF/lib/ant-antlr-1.10.12.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/info/picocli/picocli/4.6.3/picocli-4.6.3.jar" targetInArchive="/WEB-INF/lib/picocli-4.6.3.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/com/github/javaparser/javaparser-core/3.24.2/javaparser-core-3.24.2.jar" targetInArchive="/WEB-INF/lib/javaparser-core-3.24.2.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/ow2/asm/asm-util/9.3/asm-util-9.3.jar" targetInArchive="/WEB-INF/lib/asm-util-9.3.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/ow2/asm/asm/9.3/asm-9.3.jar" targetInArchive="/WEB-INF/lib/asm-9.3.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/ow2/asm/asm-tree/9.3/asm-tree-9.3.jar" targetInArchive="/WEB-INF/lib/asm-tree-9.3.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/ow2/asm/asm-analysis/9.3/asm-analysis-9.3.jar" targetInArchive="/WEB-INF/lib/asm-analysis-9.3.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/abego/treelayout/org.abego.treelayout.core/1.0.3/org.abego.treelayout.core-1.0.3.jar" targetInArchive="/WEB-INF/lib/org.abego.treelayout.core-1.0.3.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/apache/ivy/ivy/2.5.0/ivy-2.5.0.jar" targetInArchive="/WEB-INF/lib/ivy-2.5.0.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/com/thoughtworks/qdox/qdox/1.12.1/qdox-1.12.1.jar" targetInArchive="/WEB-INF/lib/qdox-1.12.1.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/jline/jline/2.14.6/jline-2.14.6.jar" targetInArchive="/WEB-INF/lib/jline-2.14.6.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/junit/junit/4.13.2/junit-4.13.2.jar" targetInArchive="/WEB-INF/lib/junit-4.13.2.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" targetInArchive="/WEB-INF/lib/hamcrest-core-1.3.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/junit/platform/junit-platform-launcher/1.8.2/junit-platform-launcher-1.8.2.jar" targetInArchive="/WEB-INF/lib/junit-platform-launcher-1.8.2.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/com/fasterxml/jackson/dataformat/jackson-dataformat-yaml/2.13.3/jackson-dataformat-yaml-2.13.3.jar" targetInArchive="/WEB-INF/lib/jackson-dataformat-yaml-2.13.3.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/yaml/snakeyaml/1.30/snakeyaml-1.30.jar" targetInArchive="/WEB-INF/lib/snakeyaml-1.30.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/com/fasterxml/jackson/core/jackson-core/2.13.3/jackson-core-2.13.3.jar" targetInArchive="/WEB-INF/lib/jackson-core-2.13.3.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/com/fasterxml/jackson/core/jackson-databind/2.13.3/jackson-databind-2.13.3.jar" targetInArchive="/WEB-INF/lib/jackson-databind-2.13.3.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/com/fasterxml/jackson/core/jackson-annotations/2.13.3/jackson-annotations-2.13.3.jar" targetInArchive="/WEB-INF/lib/jackson-annotations-2.13.3.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/junit/jupiter/junit-jupiter-api/5.9.0/junit-jupiter-api-5.9.0.jar" targetInArchive="/WEB-INF/lib/junit-jupiter-api-5.9.0.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar" targetInArchive="/WEB-INF/lib/opentest4j-1.2.0.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/junit/platform/junit-platform-commons/1.9.0/junit-platform-commons-1.9.0.jar" targetInArchive="/WEB-INF/lib/junit-platform-commons-1.9.0.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar" targetInArchive="/WEB-INF/lib/apiguardian-api-1.1.2.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/junit/jupiter/junit-jupiter-engine/5.9.0/junit-jupiter-engine-5.9.0.jar" targetInArchive="/WEB-INF/lib/junit-jupiter-engine-5.9.0.jar"/>
    <file sourceOnDisk="/app/.mvn/repository/org/junit/platform/junit-platform-engine/1.9.0/junit-platform-engine-1.9.0.jar" targetInArchive="/WEB-INF/lib/junit-platform-engine-1.9.0.jar"/>
    <file sourceOnDisk="/app/target/tmp/META-INF/MANIFEST.MF" targetInArchive="/META-INF/MANIFEST.MF"/>
</archive>

your best description of what you were doing.

I was doing nothing more than making changes to a single source code file – admittedly at a rapid pace, with some undo/redo involved. I was also running unit tests by pressing "Enter" after some of those changes.
Here is the contents of my terminal when the error ocurred:
[INFO] Unit tests finished.
[INFO]
[INFO] Running integration tests...
[INFO] Tests are skipped.
[INFO] Tests are skipped.
[INFO] Integration tests finished.
[INFO]
[INFO] To run tests on demand, press Enter.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
[INFO] Source compilation was successful.
[INFO] Tests compilation was successful.
[INFO] [ERROR   ] CWWKS9110E: During application startup, the application failed to start because multiple applications were found to have the name of app. Security authorization policies require that names be unique. Review the application configuration in the server.xml.
[INFO] [ERROR   ] CWWKZ0004E: An exception occurred while starting the application app. The exception message was: com.ibm.ws.container.service.metadata.MetaDataException: CWWKS9110E: Multiple applications have the name app. Security authorization policies requires that names be unique.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
[INFO] Source compilation was successful.
[INFO] Tests compilation was successful.
[INFO] [WARNING ] CWWJP0019W: The app application has already started.
[INFO] [AUDIT   ] CWWKT0016I: Web application available (default_host): http://6d33ea13a3bb:9080/
[INFO] [ERROR   ] CWOWB1000E: A CDI error has occurred: CWNEN0030E: The server was unable to obtain an object instance for the java:comp/env/org.example.util.BaseRepository/em reference.  The exception message was: jakarta.persistence.PersistenceException: Exception [EclipseLink-28018] (Eclipse Persistence Services - 3.0.2.v202107120736): org.eclipse.persistence.exceptions.EntityManagerSetupException
[INFO] Exception Description: Predeployment of PersistenceUnit [app-persistence-unit] failed.
[INFO] Internal Exception: Exception [EclipseLink-7250] (Eclipse Persistence Services - 3.0.2.v202107120736): org.eclipse.persistence.exceptions.ValidationException
[INFO] Exception Description: [class org.example.Example] uses a non-entity [class org.example.OtherExample] as target entity in the relationship attribute [field otherExample].
[INFO] [ERROR   ] CWOWB1000E: A CDI error has occurred: CWNEN0030E: The server was unable to obtain an object instance for the java:comp/env/org.example.util.BaseRepository/em reference.  The exception message was: jakarta.persistence.PersistenceException: Exception [EclipseLink-28018] (Eclipse Persistence Services - 3.0.2.v202107120736): org.eclipse.persistence.exceptions.EntityManagerSetupException
[INFO] Exception Description: Predeployment of PersistenceUnit [app-persistence-unit] failed.
[INFO] Internal Exception: Exception [EclipseLink-7250] (Eclipse Persistence Services - 3.0.2.v202107120736): org.eclipse.persistence.exceptions.ValidationException
[INFO] Exception Description: [class org.example.Example] uses a non-entity [class org.example.OtherExample] as target entity in the relationship attribute [field otherExample].
[INFO] [ERROR   ] SRVE0283E: Exception caught while initializing context: java.lang.NullPointerException: Cannot invoke "jakarta.persistence.EntityManager.getCriteriaBuilder()" because "this.em" is null
[INFO]  at org.example.util.BaseRepository.onInit(BaseRepository.java:35)
[INFO]  at jdk.internal.reflect.GeneratedMethodAccessor3159.invoke(Unknown Source)
[INFO]  at java.base/java.lang.reflect.Method.invoke(Method.java:568)
[INFO]  at org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:95)
[INFO]  at org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:85)
[INFO]  at org.jboss.weld.injection.MethodInvocationStrategy$SimpleMethodInvocationStrategy.invoke(MethodInvocationStrategy.java:168)
[INFO]  at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:330)
[INFO]  at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:308)
[INFO]  at org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:286)
[INFO]  at jakarta.enterprise.inject.spi.ObserverMethod.notify(ObserverMethod.java:125)
[INFO]  at org.jboss.weld.util.Observers.notify(Observers.java:166)
[INFO]  at org.jboss.weld.event.ObserverNotifier.notifySyncObservers(ObserverNotifier.java:285)
[INFO]  at org.jboss.weld.event.ObserverNotifier.notify(ObserverNotifier.java:273)
[INFO]  at org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:177)
[INFO]  at org.jboss.weld.bootstrap.BeanDeploymentModule.fireEvent(BeanDeploymentModule.java:93)
[INFO]  at org.jboss.weld.module.web.servlet.HttpContextLifecycle.fireEventForApplicationScope(HttpContextLifecycle.java:161)
[INFO]  at org.jboss.weld.module.web.servlet.HttpContextLifecycle.contextInitialized(HttpContextLifecycle.java:147)
[INFO]  at org.jboss.weld.module.web.servlet.WeldInitialListener.contextInitialized(WeldInitialListener.java:99)
[INFO]  at com.ibm.ws.webcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:2447)
[INFO]  at [internal classes]
[INFO]
[INFO] [ERROR   ] SRVE0265E: Error occured while notifying listeners of web application start: java.lang.NullPointerException: Cannot invoke "jakarta.persistence.EntityManager.getCriteriaBuilder()" because "this.em" is null
[INFO]  at org.example.util.BaseRepository.onInit(BaseRepository.java:35)
[INFO]  at jdk.internal.reflect.GeneratedMethodAccessor3159.invoke(Unknown Source)
[INFO]  at java.base/java.lang.reflect.Method.invoke(Method.java:568)
[INFO]  at org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:95)
[INFO]  at org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:85)
[INFO]  at org.jboss.weld.injection.MethodInvocationStrategy$SimpleMethodInvocationStrategy.invoke(MethodInvocationStrategy.java:168)
[INFO]  at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:330)
[INFO]  at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:308)
[INFO]  at org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:286)
[INFO]  at jakarta.enterprise.inject.spi.ObserverMethod.notify(ObserverMethod.java:125)
[INFO]  at org.jboss.weld.util.Observers.notify(Observers.java:166)
[INFO]  at org.jboss.weld.event.ObserverNotifier.notifySyncObservers(ObserverNotifier.java:285)
[INFO]  at org.jboss.weld.event.ObserverNotifier.notify(ObserverNotifier.java:273)
[INFO]  at org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:177)
[INFO]  at org.jboss.weld.bootstrap.BeanDeploymentModule.fireEvent(BeanDeploymentModule.java:93)
[INFO]  at org.jboss.weld.module.web.servlet.HttpContextLifecycle.fireEventForApplicationScope(HttpContextLifecycle.java:161)
[INFO]  at org.jboss.weld.module.web.servlet.HttpContextLifecycle.contextInitialized(HttpContextLifecycle.java:147)
[INFO]  at org.jboss.weld.module.web.servlet.WeldInitialListener.contextInitialized(WeldInitialListener.java:99)
[INFO]  at com.ibm.ws.webcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:2447)
[INFO]  at [internal classes]
[INFO]
[INFO] [AUDIT   ] CWWKZ0020I: Application app not updated.

The onInit() method mentioned above is defined like so:
private void onInit(@Observes @Initialized(ApplicationScoped.class) Object __) {
    // Do something with injected field `em` (instance of `EntityManager`)...
}

It would seem that an exception within a method annotated to be called at application startup is rendering the plugin unable to redeploy any new versions of the application. I get this particular exception often when making changes to database entities – I believe it's related to the automated generation of metamodel classes with EclipseLink, which is quite a messy business. In this case I had changed a model, but many, many minutes before seeing the error, so I don't really know what to think. Regardless of the exact cause, the fact that an exception was raised within onInit() seems to be the relevant part.

I have found a way to reproduce this issue consistently. Making the following JPA mapping mistake, the server isn't able to recover even after fixing it:
@Entity
@Inheritance(strategy = JOINED)
@DiscriminatorColumn(discriminatorType = INTEGER)
@DiscriminatorValue("0")
public class Parent {}

@Entity
// @DiscriminatorValue("1")
public class Child extends Parent {}

@DiscriminatorValue is required in this context, but I forgot to add it. Even after adding it, the server continued stuck in the "multiple applications with the same name" error.

@inad9300 that's interesting.
Reading back over your comments I tried to recreate the issue with a simpler example without using a DB or JPA.
I experimented enough to make me believe that we probably don't have an issue specifically with dev mode.
That is, I don't think that there's one, general issue with recovering from errors that cause an app failure.   I suspect there could be issues with individual components, e.g. the JPA implementation.
Building on your example, I created this simple class and enabled the CDI feature:
@ApplicationScoped
public class MyObserver {

    public void onInit(@Observes @Initialized(ApplicationScoped.class) Object bean ) {
    	Class clazz = this.getClass();
        // Uncomment to cause failure
    	//clazz = null;
    	System.out.println("From onInit(), in " + clazz.toString());
    }
}

Running in dev mode, with this class I was able to easily toggle back and forth between a working and non-working app, i.e. recover from its failure when I forced the NPE.
SOMETHING TO TRY?
If you are interested to pursue this further, we could isolate the app in the server runtime and take dev mode out of the equation and see if your problem persists.   If it does we could open an issue with the Open Liberty runtime.
It would be relatively easy.  All you'd need to do is:

mvn liberty:run   # The 'run' goal includes the "all-in-one" aspect of 'dev' (install + configure Liberty, deploy app) but it doesn't run in the "watcher" loop.  It just runs the server in the foreground.
Make your app source change
mvn compile   # watch app update
Make another source change
mvn compile   # watch app update again
..... and so on...

That's right...because 'run' uses the same "loose application" format to deploy the app to Liberty, you'd typically be able to update the deployed app simply with a compile.
(If this doesn't work, you could have a server config that could be adjusted and I could get into that if needed).
FURTHER THOUGHTS
I found yet another area where there may be an issue when I was investigating.  I had run the very simple sample observer above tacked on to our JPA guide (https://openliberty.io/guides/jpa-intro.html).  This config uses a fairly simple WAR with "quickStartSecurity" enabled.
The security aspect did not "recycle" cleanly across the app failure.  I saw:

[INFO] [ERROR   ] CWWKS9110E: During application startup, the application failed to start because multiple applications were found to have the name of backendServices. Security authorization policies re
quire that names be unique. Review the application configuration in the server.xml.
[INFO] [ERROR   ] CWWKZ0004E: An exception occurred while starting the application backendServices. The exception message was: com.ibm.ws.container.service.metadata.MetaDataException: CWWKS9110E: Multip
le applications have the name backendServices. Security authorization policies requires that names be unique.

So this too seems to speak to the fact that there may be components in the runtime that do not recover well from application failures, even if it's not dev mode itself.
Thank you again for all the detail and help recreating.

So, I've done as you suggested:

Run mvn liberty:run and wait for it to start. Everything seems normal.
Make the change in the source.
Run mvn compile. Got the NPE inside onInit() (following your simpler method to reproduce the issue), then this:[INFO] [AUDIT   ] CWWKZ0020I: Application backend not updated.
[INFO] [AUDIT   ] CWWKT0017I: Web application removed (default_host): http://79792387ab37:9080/
[INFO] [ERROR   ] CWWKS9110E: During application startup, the application failed to start because multiple applications were found to have the name of backend. Security authorization policies require that names be unique. Review the application configuration in the server.xml.
[INFO] [ERROR   ] CWWKZ0004E: An exception occurred while starting the application backend. The exception message was: com.ibm.ws.container.service.metadata.MetaDataException: CWWKS9110E: Multiple applications have the name backend. Security authorization policies requires that names be unique.

Undid the NPE change.
Run mvn compile again. Got the same name uniqueness problem.

Is that what you were interested in seen? :slightly_smiling_face:

Yes, that's exactly what I'd suggested.  So, based on that, IMHO, it seems legitimate to open an issue on the Open Liberty runtime:  https://github.com/OpenLiberty/open-liberty/issues, if you'd like.   The more recreate detail you can provide the better and the server.xml feature set in particular would be helpful.

The Open Liberty issue was addressed back in March. So I am closing this issue.


simplify fixture loading

Closes #785
Simplifies code for loading our resourceTemplate fixtures, and what is needed to add a new fixture.
Note that this represents my best pragmatic solution to be able to load specific files from the file system in a browser context.

@jcoyne @jmartin-sul I took out the eslint rule change;  I had to up the warnings to 11 because the new fixtureLoader logic does a non-literal-require rule violation (we already have a couple of those for versoSpoof so it's nothing new).  Should be ready to merge.


Update docker to 17.03.0-ce

After making all changes to the cask:

[x] brew cask audit --download {{cask_file}} is error-free.
[x] brew cask style --fix {{cask_file}} left no offenses.
[x] The commit message includes the cask’s name and version.

Oh, didn't notice it. I will close this so.


V10 Compatablity

Can you make this module compatible with V10 of foundry

None of my modules are yet updated for v10. Do not expect quick updates as I have very little time on my hands right now

Following....

Tested the pull request of  BrodinRaymond and it worked witt V10.  I imagine it will get loaded into the official repository soon.

I tried the updated BrodinRaymond version to no avail. Didn't work for me. Would love to see this updated for V10 and V11 ;)


DateTime should have a const constructor

This issue was originally filed by @zoechi

What steps will reproduce the problem?
1.
As far as I have seen DateTime has only final fields and the constructors have no body.
Isn't it possible then to make the constructors const?
2.
I'd like to use it like
const MIN_DATETIME = const DateTime(1900, 1, 1, 0, 0, 0);
3.
What is the expected output? What do you see instead?
What version of the product are you using? On what operating system?
Please provide any additional information below.

has this issue had to continue? I need a const DateTime!

I think it's technically possible to make a constant DateTime.utc constructor (probably not local-time, we need native calls to handle time zones).
It's not necessarily worth it, though. Something like:
class DT {
  final int microsecondsSinceEpoch;

  /// Computes, as a constant, the milliseconds since epoch of the given date.
  ///
  /// The date is an UTC date, no time zone adjustments are applied.
  const DT(int year, int month, int day, int hour, int minute, int second,
      int milliseconds, int microseconds)
      : this._mar1(
            year - (month < 3 ? 1 : 0) + (month - 3) ~/ 12,
            (month - 3) % 12,
            (((((day - 1) * 24 + hour) * 60 + minute) * 60 + second) * 1000 +
                        milliseconds) *
                    1000 +
                microseconds);

  /// Date normalized to years starting at March 1st.
  ///
  /// The [monthMarch] is in the range 0..11, with 0 meaning march.
  const DT._mar1(int yearMarch, int monthMarch, int usInDay)
      : this._qc(
            yearMarch % 399,
            monthMarch % 5,
            (yearMarch ~/ 400 - (yearMarch < 0 ? 1 : 0)) * 36524 +
                monthMarch ~/ 5 * 153,
            usInDay);

  /// Restricted computation to a 400 year range starting at March 1 year 0.
  ///
  /// The [days] are the number of days between original year/month
  /// March 1st year 0, plus the number of days in the first multiples
  /// of 5 months in the year before the original month.
  const DT._qc(int yearInQuadCentury, int pentaMonth, int days, int usInDay)
      : this._c(
            yearInQuadCentury % 100,
            days +
                (yearInQuadCentury ~/ 100 * 36524) +
                pentaMonth * 30 +
                (pentaMonth + 1) ~/ 2,
            usInDay);

  /// Restricted to a single century, starting at March 1 of a year
  /// divisible by 100.
  ///
  /// The century may or may not end in a leap day.
  ///
  /// The [days] are the number of days between the original year/month
  /// and the start of that century, plus the number of days before the
  /// original month.
  const DT._c(int yearInCentury, int days, int usInDay)
      : this._qy(yearInCentury & 3, days + yearInCentury ~/ 4 * 1461, usInDay);

  /// Restricted to a single 4-year span, starting at March 1 of a year
  /// divisble by 4.
  ///
  /// The [days] are the number of days between the original year/month
  /// and the start of that four year span, plus the number of days before the
  /// original month.
  // The 719468 constant is the number of days between March 1st year 0
  // and the epoch (1970-01-01).
  const DT._qy(int yearInQuadYear, int days, int usInDay)
      : microsecondsSinceEpoch = ((days + yearInQuadYear * 365 - 719468) *
                Duration.microsecondsPerDay +
            usInDay);
}

That's not as efficient as what we do normally (because constant expressions are fairly limited) and cumbersome (constructors have no local variables, so to name an intermediate result, I have to call another constructor).
Probably the most important reason it won't work is that we can't do overflow/range checking on the value.
Dart DateTime is limited (like JavaScript's Date) to a range of +/-100000000 days around the epoch.
This computation has no overflow checks, and no validation at the end, and cannot have one as a const evaluation.
(It can have asserts, but those won't run in production.)

You can use my const_date_time package to achieve this.
import 'package:const_date_time/const_date_time.dart';

class MyClass {
  const MyClass({
    this.date = const ConstDateTime(0),
  });

  final DateTime date;
}

@lrhn
Hello!
In my opinion, What about to add just utcFromMicrosecondsSinceEpoch?

const DateTime.utcFromMicrosecondsSinceEpoch(int microsecondsSinceEpoch);

I have difficulty in designing an immutable object with DateTime properties.
class Device {
  final String id;
  final DateTime createdAt;
  final DateTime updatedAt;
  final String userId;
  final String operatingSystem;

  const Device({
    this.id = '',
    required this.createdAt,
    required this.updatedAt,
    this.userId = '',
    this.operatingSystem = '',
  });

I want to make it safe for any risk that Callee will miss Datetime arguments!
( For example, parsing from incomplete Json.. )
Something like this.
class Device {
  final String id;
  final DateTime createdAt;
  final DateTime updatedAt;
  final String userId;
  final String operatingSystem;

  const Device({
    this.id = '',
    this.createdAt = DateTime.utcFromMicrosecondsSinceEpoch(0),
    this.updatedAt = DateTime.utcFromMicrosecondsSinceEpoch(0),
    this.userId = '',
    this.operatingSystem = '',
  });

A DateTime.fromMicrosecondsSinceEpoch and/or DateTime.fromMillisecondsSinceEpoch constant constructor should be doable.
There are still limits on the values, but those can be checked in a const constructor, and if we just choose to cap the value to the limit if it's too large, it can work.
We sadly cannot throw on invalid arguments in a const constructor, but we can do something salvageable, and have asserts to catch overflows in testing.

@lrhn
Oh I got it..
I asked the question you've already answered.
I'm sorry if I bothered you.
So then, How about const DateTime.epoch()?
The above results will be the same as below.
DateTime.fromMicrosecondsSinceEpoch(0, isUtc:true);

Thanks!

@lrhn
Hello Happy NEW Year,
Referred to Datetime.unixEpoch() in .NET API.
I made the draft pull-request #50866 to deliver what I suggest.
Please take your time and think about whether it is reasonable or not.
Thanks!
REF:
https://learn.microsoft.com/en-us/dotnet/api/system.datetime.unixepoch?view=net-7.0
https://github.com/dotnet/runtime/issues/23747
https://github.com/dotnet/corefx/pull/25235

Having epoch, earliestAllowed and latestAllowed as constants do make sense.

@lrhn
Thanks for your comments

Are earliestAllowed and latestAllowed related with _maxMillisecondsSinceEpoch?
Something like DateTime.fromMillisecondsSinceEpoch(_maxMillisecondsSinceEpoch)
I think it's make sense that 'unixEpoch', 'earlistAllowed' and 'latestAllowed' are all const.

https://github.com/dart-lang/sdk/blob/54024496eadf173d7fa262cc372c5aedc82df0d3/sdk/lib/core/date_time.dart#L374

Is already the separated class for the constants in the Dart SDK or another SDK?
If there is something to refer to, I will refer to it and conduct my Pull-request.

Thanks!!


Integration tests Setup and Initial tests for Scalars

Setup for Integration tests and added intial set of Scalar tests.
More tests will be added later.

And fix the check CI job


SolidWorks macro for exporting points coordinates

Hi, I´m looking for someone to write me simple solidworks macro.
Desired principle:

I select multiple points already created (points as standalone features, not sketch points)
Press the macro button
Message window appears with data about points location as data string readable for excel for example:
point_name; x_coord; y_coord; z_coord
point2_name; x_coord; y_coord; z_coord

Of course as a paid job.

I will add this to the library. This is a simple macro.


Auto Update Feature

The script himself and all it's used modules and files are updated over time
and all become better and bugs become fixed
if the script has the feature for auto-update himself and all its related modules and file, all script users get latest updates and every problem issued one time, after every script update all similar problem and error become solved
so adding this feature lead to less effort on future
also, it's possible that a module update lead to OpenVPN configuration return error on the new module
with auto-update feature incompatibility path will apply to all users and solve all users problem

See https://github.com/angristan/openvpn-install/issues/179

I think adding this feature can decrease duplicated bugs report and efforts for fixing them and enhance the user experience
it's obvious that it's not the main feature, but adding this help all users, and maybe you as maintainer of the script
regards


Feature/vmray email url

Proposed changes
The connector is now able to determine the type of sample being analyzed. This can be of type File, Email or URL.

Email messages are generated according to the STIX convention
URLs are generated according to the STIX convention

Email addresses now go through a validation process that restricts their creation in case of erroneous values.
Related issues

METIS-2495
METIS-2496
METIS-2503

Checklist

[ ] I consider the submitted work as finished
[ ] I tested the code for its functionality using different use cases
[ ] I added/update the relevant documentation (either on github or on notion)
[ ] Where necessary I refactored code to improve the overall quality

Maybe we could split the classes of the builder into multiple files because it is a really big file. What do you think @yanover ?

Yes, I agree with you. According to our meeting, I've moved the classes and static methods in separate file.

LGTM


[issue-117] Unzip

Description
Add unzip requirement to known issues in readme and add check for unzip in install file
we also moved all program checks at the start of the file, thanks @MarkTiedemann for reviews and suggestions!
Issue
#117

@hardy613 I think it would be good to give some more details as well.
For example, the other known issue, "Running scripts is disabled", (1) shows the output of a failed command, (2) answers the question "When does this issue occur?", and (3) answers the question "How can this issue be fixed?".

Sounds good

LGTM.
cc @ry

@MarkTiedemann are you still ok with these changes?

@bartlomieju This PR currently re-adds the "Running scripts is disabled" known issue, which I think may be a merging error.
I also think that the following check is not necessary since the script was, most likely, already downloaded using curl:
if ! command -v curl >/dev/null; then
	echo "Error: curl is required to install Deno." 1>&2
	exit 1
fi

But I think, if those two issues are fixed, it should be merged, yes.

@bartlomieju This PR currently re-adds the "Running scripts is disabled" known issue, which I think may be a merging error.

I'm a bit lost, can you mark this bit in a diff?

Thank you @hardy613!

Amazing, thanks everyone!


[Framework] Introduce Any

Introduce Any to represent any type's value.
https://github.com/aptos-labs/aptos-core/blob/c76c6b0fc3a1b8e21b6ba2f77151ca20ea31ca32/aptos-move/framework/aptos-stdlib/sources/any.move#L1

Dependency on: #22


VS Code Insiders flagged as trojan in McAfee Endpoint Security

Does this issue occur when all extensions are disabled?: Yes/No

Version: 1.61.0-insider (user setup)
Commit: 83b7d33abba1fbc9ba6dbf25b53b47821086b22f
Date: 2021-09-30T19:00:07.102Z
Electron: 13.5.0
Chrome: 91.0.4472.164
Node.js: 14.16.0
V8: 9.1.269.39-electron.0
OS: Windows_NT x64 10.0.19043
Steps to Reproduce:

Run McAfee Endpoint Security Full Scan

Expected: VS Code Insiders is not flagged as malware
Actual: VS Code Insiders is flagged as malware.
Adaptive Threat Protection repaired C:*REDACTED*\Microsoft VS Code Insiders\Code - Insiders.exe process, because its reputation (Known Malicious) is below the configured Clean threshold.
Analyzer / Detector
Product name	McAfee Endpoint Security
Product version	<IP_ADDRESS>13
Feature name	On-Execute Scan

Threat
Action taken	Clean
Threat category	Malware Detected
Threat event ID	35107
Threat handled	Yes
Threat name	ATP/Suspect!8ea4909ce516
Threat severity	Critical
Threat timestamp	23/9/2021 11:35 AM
Threat type	Trojan

Source
Source file path	C:*REDACTED*\Microsoft VS Code Insiders
Source hostName	REDACTED
Source process name	Code - Insiders.exe
Source user name	REDACTED

Target
Target hash	REDACTED
Target host name	REDACTED
Target name	Code - Insiders.exe
Target path	C:*REDACTED*\Microsoft VS Code Insiders
Target process name	Code - Insiders.exe
Target user name	REDACTED

Other
Vector type	Local System
Description	Adaptive Threat Protection Detection

Is this still and issue? It is the only report we've gotten of this.


101 does not compile with new tools

I received many warning, no errors when installing the 101 tutorial. The server starts but this code is not deployed. Not sure why warnings keep the code from deploying but it seems to.
102 does throw errors: saveError ENOENT: ...

Can you share error log to investigate the issue?

Thanks for getting back to me, I found the issue...another instance of node
was running. Sorry for the noise.
On Tue, Sep 17, 2019 at 8:06 PM Abhinay Omkar<EMAIL_ADDRESS>wrote:

Can you share error log to investigate the issue?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/material-components/material-components-web-codelabs/issues/96?email_source=notifications&email_token=AKNAWYNUTNZI2DTLYA6HRT3QKGLKTA5CNFSM4IXXRYUKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD66UTWA#issuecomment-532498904,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AKNAWYMFICRHXNVQWYQ642LQKGLKTANCNFSM4IXXRYUA
.

--
Glen Brown
Co-Founder, CTO
StyleRiser Inc
C:<PHONE_NUMBER>

Glad it's working! Thanks.


Various improvements

coverage: 70.635% (+16.4%) from 54.19%
when pulling 2f43be9333f47c48a44ea0bd1bd568be0a6e9958 on various-improvements
into 0a038d593446c3938962625532ef24142c8a57e8 on main.


Confusing documentation regading halt signal with step functions

When using the prepend_request_steps functions in combination with Rq.Request.halt, it is quite confusing that i have to return a tuple in my step function. I think the documentation should point this out. You can kinda see it from the example, but I  was nevertheless suprised by this behaviour.
A spec for the anonymous function that we have to prepare would here. Right now the respons for the spec would be a Request.t() or {Request.t(), Exception.t() | Response.t()}.
As the return of this anonymous function is limited by https://github.com/wojtekmach/req/blob/7616d399914eb28377d9fa7fdb0b0a0273e181cb/lib/req/request.ex#L977 would this not be a breaking change.

A docs PR would be appreciated!


feat: new OnchainName component

What changed? Why?
Adding the first OnchainName component of our  Identity Kit 👤
The OnchainName component primarily focuses on showcasing ENS names for given Ethereum addresses, and defaults to displaying a sliced version of the address when an ENS name isn't available.
import { OnchainName } from '@coinbase/onchainkit';

<OnchainName address="0x1234567890abcdef1234567890abcdef12345678" sliced={false} />;

Notes to reviewers
How has it been tested?

Unit tests only.

Before we merge, let's have also a quick review from @cnasc, @robpolak, @wespickett and @Sneh1999 on this epic first Identity component.

lgtm. We ended up switching to extend the next/jest config in build-onchain-apps, but if tests run successfully as is, then it should be fine with the current config https://github.com/coinbase/build-onchain-apps/blob/main/template/jest.config.js#L1


Fixed #32669 -- Detection of non-django modules when started with "python -m" in autoreloader.

Overview
This patch fixes the issue described in ticket #32669.  In contrary to the maintainer's statement, this is actually a regression that I'd rather see this fixed in 3.2.

Can you provide a sample project? see comment.

@moriyoshi Can you provide a sample project? If not I can push final edits and merge this to Django 4.0.


JsEvent: Use IAsyncDisposable

Description
Logic aligns with the rest of the services
Type of Changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[x] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Documentation (fix or improvement to the website or code docs)

Checklist

[x] The PR is submitted to the correct branch (dev).
[x] My code follows the code style of this project.
[ ] I've added relevant tests.

Added to the v8 migration guide at https://github.com/MudBlazor/MudBlazor/issues/9953


[FEATURE] Have a turn-key training demo

I would appreciate it if you could provide a turn-key demo that showcases the training. This will help any prospective contributor, like myself, to have a quick idea about the repo.

Does Easy mode fit this ask?
If not, it'd help to hear what other things you'd like to see to help you out

Almost, yes. But something I can run locally. The desired workflow experience is below (following your README)

Clone the repo
Create the nam environment
Download input.wav and demo_output.wav to a designated folder, e.g. data/demo . Note that providing both input and output samples is important for smooth developer experience.
Run demo_train.py (training runs on CPU because we want to ensure it works from the start. We can set the max epochs to a low number just to show the process flowing)

Having those, I can immediately jump into demo_train.py, place debug points in the code, and start analyzing the variables, dependencies ...etc. in no time. I can start implementing my changes and test the pipeline without having to figure out quirks of reamping my guitar or finding a sample output.wav from the facebook group ...etc.
I hope this makes sense

@sdatkinson see this PR as a candidate solution

Gotcha.
Like I said in the PR, I suspect that the direction under Train models (Python script) then might be a better starting place to get there?
The feedback about providing some ready-to-go audio files sounds good to me--and perhaps the most substantial change to get this there. I could link up a pair from my Google Drive in the README so that they should drop right in?

Here's some ingredients:

Input audio file: v1_1_1.wav
Output audio file: overdrive.wav

These can be dropped into single_pair.json with no other changes (user would do this according to how they wanted to organize their audio files).
But you could PR in the following changes to the model & learning JSONs:
On the model side, tweak wavenet.json to the "feather" architecture by:

Halve the 16's and 8's used in channels, head_size, and input_size to 8 & 4

Then for the learning config, drop "max_epochs" from 100 to 10.
In fact, instead of modifying the existing JSONs (which mirror the configuration used as default in easy_colab.ipynb and the GUI trainer), you could PR in copies of the model & learning jsons as e.g. demo.json under their respective directories and modify the parameters as above for explicit use as a lightweight demo.

@sdatkinson noted. I will update my PR and resubmit accordingly.

@sdatkinson please see this new PR which implements the changes that you mention.


Add SMA Muhammadiyah 1 Jakarta to List

the school official website URL: https://smamuhammadiyah1jkt.sch.id/
the school street address, including city and country: Jalan Kramat Raya No.49 RT.03/RW.04 Kec. Kramat Kel. Senen - Central Jakarta - Indonesia
an URL of a page on the official website where the school offers an IT-related long-term (>1 year) course Here
a proof, which shows that the school recognizes the domain you are submitting as an official email domain for the students. Here

@samdgea Thank you for your patience while waiting for a review and processing your request. Pull request merged.