PDB delete/lifecycle

When deleting a PDB Kubernetes resource like the one below, I would expect the PDB to be deleted in the database. Would say that is the expected behaviour when working with Kubernetes. It also enables cleanup of ephemeral environments by deleting a namespace, without having to manually clean up all PDBs provisioned within it.
apiVersion: database.oracle.com/v1alpha1
kind: PDB
spec:
  pdbName: pdb1
  action: Create
status:
  action: CREATE
  msg: Success
  phase: Ready

Here is the operator log from deleting pdb above:
2024-02-14T15:17:15Z INFO controllers.PDB Reconcile requested {"multitenantoperator": "oracle-database-operator-system/pdb1"}
2024-02-14T15:17:15Z INFO controllers.PDB PDB Resource Not found {"multitenantoperator": "oracle-database-operator-system/pdb1", "Name": ""}

and the state of the db after deleting the Kubernetes resource:
SELECT PDB_NAME FROM DBA_PDBS ORDER BY PDB_ID;
PDB_NAME
--------------------------------------------------------------------------------
PDB$SEED
PDB1

Current behaviour
action: Delete
Deleting a pdb by specifying action: Delete does not work, and results in the following:
status:
  action: DELETE
  msg: >-
    ORA-65179: cannot keep datafiles for a pluggable database that is not
    unplugged

    ORA-06512: at line 3
  phase: Failed

EDIT: It does work when also having dropAction: "INCLUDING".
action: Unplug
It results in Error "Required value: Please specify XML metadata filename" for field "spec.xmlFileName". Adding xmlFileName: foo.xml seems to avoid the issue, resulting in the following status:
status:
  msg: Waiting for PDB to be unplugged
  phase: Unplugging

When it succeeds unplugging, the operator also deletes the PDB resource, and the PDB is gone from the database.

What is the sequence of event leading to the ORA-65197? can you please specify list of kubectl commands used? did you attempt to delete resource using "kubectl delete pdbs pdbs1 -n ..... " ?

What is the sequence of event leading to the ORA-65197? can you please specify list of kubectl commands used? did you attempt to delete resource using "kubectl delete pdbs pdbs1 -n ..... " ?

I forgot dropAction: "INCLUDING", so modifying to action: Delete and dropAction: "INCLUDING" avoids having to unplug it.

Issue reproduced in house working on it
`
kubectl get pdbs -n pdbnamespace
NAME   CONNECT_STRING                                                                                CDB NAME   PDB NAME   PDB STATE    PDB SIZE   STATUS   MESSAGE
pdb1   (DESCRIPTION=(CONNECT_TIMEOUT=90)(RETRY_COUNT=30)(RETRY_DELAY=10)(TRANSPORT_CONNECT_TIMEOUT=70)(LOAD_BALLANCE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=scan12.testrac.com)(PORT=1521)(IP=V4_ONLY))(LOAD_BALLANCE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=scan34.testrac.com)(PORT=1521)(IP=V4_ONLY))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=pdbdev)))   DB12       pdbdev     READ WRITE   0.78G      Ready    Success
kubectl apply -f pdb_issue84.yaml
pdb.database.oracle.com/pdb1 configured
cat pdb_issue84.yaml
apiVersion: database.oracle.com/v1alpha1
kind: PDB
metadata:
name: pdb1
namespace: pdbnamespace
labels:
cdb: cdb-dev
spec:
cdbResName: "cdb-dev"
cdbNamespace: "cdbnamespace"
pdbName: "pdbdev"
action: "Delete"
pdbTlsKey:
secret:
kubectl get pdbs -n pdbnamespace
NAME   CONNECT_STRING   CDB NAME   PDB NAME   PDB STATE    PDB SIZE   STATUS   MESSAGE
pdb1                               pdbdev     READ WRITE   0.79G      Failed   ORA-65179: cannot keep datafiles for a pluggable database that is not unplugged
`

Issue reproduced in house working on it

Sweet! Would be nice to be able to just action: Delete it, without requiring it to be correct configured for deletion.
But I also want to clarify that what I really need is the ability to delete the CDB by simply deleting the resource (or the namespace), not modifying it's spec.
Let's say I spin up a review environment with a PDB and Deployment for each branch in my git repo, and use Renovate for dependency updates. Whenever a PR is merged, the branch and namespace is deleted. If the PDB inside the DB is not also deleted, a lot of them will build up. I cannot manually go into all review environments and delete the PDB before merging the PRs.

If you forget to specify the r.Spec.DropAction when you delete database
then you get the default value which is KEEP.

// +kubebuilder:validation:Enum=INCLUDING;KEEP
DropAction string `json:"dropAction,omitempty"`

   if action == "DELETE" {
               if r.Spec.DropAction == "" {
                       r.Spec.DropAction = "KEEP"
                       pdblog.Info(" - dropAction : KEEP")
               }

As per oracle documentation  keep option must be used after unpluging
database. This is the way the story goes at database level.
SQL> show pdbs

  CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
       2 PDB$SEED                       READ ONLY  NO
       3 PDBDEV                         MOUNTED

drop pluggable database pdbdev keep datafiles;
*
ERROR at line 1:
ORA-65179: cannot keep datafiles for a pluggable database that is not unplugged

SQL>  alter pluggable database pdbdev unplug into '/tmp/pdbdev.xml';

Pluggable database altered.

SQL> show pdbs

  CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
       2 PDB$SEED                       READ ONLY  NO
       3 PDBDEV                         MOUNTED
SQL> drop pluggable database PDBDEV keep datafiles;

Pluggable database dropped.

So we have to choices here

Set the default to "including" (action delete is designed to drop database regardless the
unplug. For unplug there is a specific action)
Throw an error when you attempt to apply a payload without DropAction

Fix will be available in the next release

Any update on if deleting the PDB resource in Kubernetes can result in the PDB being deleted in the database server? (not having to update the Kubernetes PDB resource's action field to Delete for the PDB to be deleted in the database server)

This will not be implemented . If you need to delete a pluggable database then you need to apply a yaml file including action : "delete" + the other options associated to the delete command

I'm sorry to say that doesn't work for us. It's not the common declerative way of managing infrastructure (and does not support cleaning up resouces by deleting the Kubernets objects). I would strongly suggest that you internally re-evaulate the approach, and read up on Kubernetes patterns. Particularly https://kubernetes.io/docs/concepts/overview/working-with-objects/finalizers regarding the deletion of objects and making sure the PDB is removed from the database server before it's fully removed from Kubernetes.

and that's exactly what we have in the code ... we make sure it's remove from server before removing from k8s
`
func (r *PDBReconciler) deletePDB(ctx context.Context, req ctrl.Request, pdb *dbapi.PDB) error {
    log := r.Log.WithValues("deletePDB", req.NamespacedName)

    err := r.deletePDBInstance(req, ctx, pdb)
    if err != nil {
            log.Info("Could not delete PDB", "PDB Name", pdb.Spec.PDBName, "err", err.Error())
            return err
    }

    if controllerutil.ContainsFinalizer(pdb, PDBFinalizer) {
            log.Info("Removing finalizer")
            controllerutil.RemoveFinalizer(pdb, PDBFinalizer)
            err := r.Update(ctx, pdb)
            if err != nil {
                    log.Info("Could not remove finalizer", "err", err.Error())
                    return err
            }
            pdb.Status.Status = true
            err = r.Delete(context.Background(), pdb, client.GracePeriodSeconds(1))
            if err != nil {
                    log.Info("Could not delete PDB resource", "err", err.Error())
                    return err
            }
    }

`

Thats nice, meaning it's not a technical issue! The thing we disagree about is then only declerative vs imperative management of the PDB resource. We would like it to behave like all other infrastructure managed in Kubernetes, that the existence and deletion of a PDB in the dbserver to be declerative in Kubernetes. I.e. when the PDB resource exists in Kubernetes, it exists in the dbserver, and when it is deleted from Kubernetes, it is removed from the dbserver. We do not want to imperatively perform an action telling the operator to delete the PDB in the dbserver.
See e.g. to Crossplane and their deletionPolicy which tells the Provider what to do after deleting the managed resource. https://docs.crossplane.io/latest/concepts/managed-resources/#deletionpolicy

We adopted the declarative approach long ago. Even if mixed object management it's not recommended https://kubernetes.io/docs/concepts/overview/working-with-objects/object-management/ I'm starting internal discussion . But just to set the expectation it will not be available in a short run.

I too have the requirement to delete a PDB when it's kubernetes resource is deleted.
Please add a parameter to the PDB resource like "drop-pdb-when-resource-deleted" so we can have a choice.
My problem is that after creating and using multiple environments that include PDBs, I somehow need to drop them again. The propagation is done through helm charts. After using those installations, they get deleted/uninstalled by helm.
It's nagging me that all PDBs have to be manually deleted too and I can imagine that other customers feel the same, just look at tenstad's enquiry for that.

Hi Ilfur I'm testing the following option for cdb (the rest server) DeletePDBCascade (boolean) if it's true all the pdb associated to the cdb will be dropped when you delete the cdb (kubectl delete cdb mycdb....) .
It will be possible  to implement your request as well .... If  I have understood  correctly you want us to adopt the declarative approach (kubectl delete pdb mypdb ---> drop database on the db container) .
PS no idea about the timeline

Hello Matteo,
yes absolutely, the declarative approach of deleting the database/pdb on the CDB as soon as the kubernetes resource is deleted is what I desire :-)
Exactly as You wrote:
kubectl delete pdb mypdb ---> drop database(pdb) on the db container(cdb)

I am patient about the timeline, I will manually work around the problem in my next projects: first place a "action: Delete" (not to forget INCLUDING datafiles) in the yaml and apply, then delete the application/helm chart.
And forbid others to delete the helm chart by themselves.
Best regards,
Marcel
Gesendet: Dienstag, 13. August 2024 um 16:48 Uhr
Von: "matteo malvezzi" @.>
An: "oracle/oracle-database-operator" @.>
Cc: "ilfur" @.>, "Comment" @.>
Betreff: Re: [oracle/oracle-database-operator] PDB delete/lifecycle (Issue #84)

Hi Ilfur I'm testing the following option for cdb (the rest server) DeletePDBCascade (boolean) if it's true all the pdb associated to the cdb will be dropped when you delete the cdb (kubectl delete cdb mycdb....) .
It will be possible to implement your request as well .... If I have understood correctly you want us to adopt the declarative approach (kubectl delete pdb mypdb ---> drop database on the db container) .
PS no idea about the timeline
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: @.***>

Just a quick recap: in the next release there will be two parameters .

For PDB assertivePDBdeletion if it's true then the command kubectl delete pdb ... automatically drop crd & pdb
For CDB deletePdbCascade if it's true then the command kubectl delete cdb automatically delete all pdbs (CRD/PDB/datafiles) associated to the CDB

Wonderful! Cant wait for it :) Thank You!

Gesendet: Dienstag, 15. Oktober 2024 um 09:53 Uhr
Von: "matteo malvezzi" @.>
An: "oracle/oracle-database-operator" @.>
Cc: "ilfur" @.>, "Comment" @.>
Betreff: Re: [oracle/oracle-database-operator] PDB delete/lifecycle (Issue #84)

Just a quick recap: in the next release there will be two parameters .
For PDB assertivePDBdeletion if it's true then the command kubectl delete pdb ... automatically drop crd & pdb
For CDB deletePdbCascade if it's true then the command kubectl delete cdb automatically delete all pdbs (CRD/PDB/datafiles) associated to the CDB

—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: @.***>


Add release-please

I've used it in projects before and its probably the nicest semantic release system with high degree of control.
Will try to install it here too
Some docs: https://github.com/googleapis/release-please/blob/cb106cd0b5ae5c3e2a3b015487dc615eba72b842/docs/manifest-releaser.md

What about lerna (https://lerna.js.org) and lerna changelog (https://github.com/lerna/lerna-changelog)?

Can it create PRs like this where it aggregates changes published thus far? https://github.com/spion/wsrun-ng/pull/7

I can see using lerna publish instead of bun wsrun -s -c publish but I don't understand why it insists on incrementing the version too https://lerna.js.org/docs/features/version-and-publish#publishing-to-npm


add angularjs module

I just created a module for angularjs that wraps your functionality. Awesome radio slider 👍

@wodka Awesome initiative, However, I suggest you create it as a separate repo, and I'll include a link in the README, what do you think?

I'll do that :)


add internft.md

Grant Application Checklist

[x] The application-template.md has been copied, renamed ( "project_name.md") and updated.
[x] A BTC or Ethereum (DAI) address for the payment of the milestones is provided inside the application.
[x] The software of the project will be released under the Apache license version 2.0 as specified in the terms and conditions.
[x] The total funding amount of the project is below USD $30k for initial grant applications and $100k for follow-up grants.
[x] The initial PR contains only one commit (squash if needed before submitting your PR).
[x] The grant will only be announced once we've successfully delivered the first milestone.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Thanks for the application, but we would need more details in order to consider the application. For example how exactly does ccp work? How is it different from this relayer written in go? Also as far as I know, snowfork is currently working on an nft example based on their bridge. What would be the advantage of using your solution? Do you have mockups for the front-end? Could you add the license, documentation, etc. to your delivery, see the template?

Thanks for the review @Noc2

Thanks for the application, but we would need more details in order to consider the application. For example how exactly does ccp work? How is it different from this relayer written in go? Also as far as I know, snowfork is currently working on an nft example based on their bridge. What would be the advantage of using your solution? Do you have mockups for the front-end? Could you add the license, documentation, etc. to your delivery, see the template?

Thanks for the review @Noc2

CCP is a modular multi-directional blockchain bridge to allow data and value transfer between any number of blockchains.  There are bridge contract (or pallet in Substrate) on each chain，The bridge  is maintained through a set of relayers that are authorized to make & process transfers across the different blockchains, random relayer using VRF.
Like Snowfork, CCP was inspired by Chainbridge, thanks to their work.
We believe that the security of NFT assets being transferred across chains is very important, low trust cross-chain NFT network are our focus. The CCP is finished  by randomly selecting nodes through VRF,  the security of the network is guaranteed by staking and a strict punitive PoS.
front-end mockups: https://www.figma.com/file/Z1Mdrm0p6XXkeV0QXOeiIu/front-end.
The document has been updated.

Thanks for the quick reply. However, the figman link, which you shared, only shows a single image to me. And since VRFs are currently not part of your grant proposal, I don’t see any advantage in your solution at the moment compared to chainbridge or even snowfork.
Something to be aware of: Snowfork wasn’t inspired by Chainbridge. The bridge is implemented in a completely different way. Could try to improve the application another time, before I share it with the rest of the team?

Thanks for the quick reply. However, the figman link, which you shared, only shows a single image to me. And since VRFs are currently not part of your grant proposal, I don’t see any advantage in your solution at the moment compared to chainbridge or even snowfork.
Something to be aware of: Snowfork wasn’t inspired by Chainbridge. The bridge is implemented in a completely different way. Could try to improve the application another time, before I share it with the rest of the team?

Thanks for the reply.  I have adjusted the latest architecture diagram. The contents of the Figman link have been filled in. I has updated the milestone 1.  Looking forward to your reply.

Thanks for the update. Could you also integrate a comparison with chainbridge/snowfork into the application? For example how is your relayer different from the existing relayers? Independent of it and as promised, I will share your application with the rest of the team.

Thank you Noc2, I updated Ecosystem Fit. This is our first application, we will complete Milestone 1 as soon as possible.

Hi @web3hacker. We really would need more details in order to consider this application. Are you aware of this treasury proposal and the discussion surrounding it that took place on Element a few weeks ago? How is your proposal different to that one? This would be very relevant to your application, which I think in general lacks significant technical as well as theoretical details concerning NFT migration, and seems detached from developments in the community.

Internft is implemented by using the VRF to randomly select a node to attempt to solve the problem of low speed and high Gas for NFT cross-chain transfers, and effectively improve the security of managed assets through Punitive PoS and MultiSig.

How is this done? Do you have documentation, a whitepaper you could share? How does this solve low speed and high gas, and how do you leverage MultiSigs?
Do you have any prior work you could share, or involvement with the community?

Hi @web3hacker. We really would need more details in order to consider this application. Are you aware of this treasury proposal and the discussion surrounding it that took place on Element a few weeks ago? How is your proposal different to that one? This would be very relevant to your application, which I think in general lacks significant technical as well as theoretical details concerning NFT migration, and seems detached from developments in the community.

Internft is implemented by using the VRF to randomly select a node to attempt to solve the problem of low speed and high Gas for NFT cross-chain transfers, and effectively improve the security of managed assets through Punitive PoS and MultiSig.

How is this done? Do you have documentation, a whitepaper you could share? How does this solve low speed and high gas, and how do you leverage MultiSigs?
Do you have any prior work you could share, or involvement with the community?

Thanks for the review.

This treasury proposal  I understand it as a Top-down Design，hope to do a standard. The NFT as we understand it is a Long Tail market. Like the Ethereum ecosystem, NFT can be issued via ERC721, ERC-1155, or ERC20, the COMOS or EOS ecology will also be different.  We hope that through Bottom-up Design, Get the NFTs on the other chains to migrate to the Internft network as soon as possible and then into the Polkadot ecosystem. Such as our Milestone 1 will implement only one ERC721 migration, the Milestone 2/N iteration adapts the migrations of different NFT implementations on different chains.
Milestone 1 acts as a POC, Includes three whitelist nodes.  The node listens for the Deposit event of the NFT asset, which triggers the VRF of Internet Pallet_Bridge to randomly select the whitelist node, and then the asset is cast from this node; the Withdraw request of the user is similar and will be accompanied by the node's signature to verify the signature in the Ethernet contract, cooperate with the front end to complete NFT721 asset transfer for Ropsten and Internft.
Milestone 1 is about 3 weeks old, the tech whitepaper and Multisigs are still in pre-development.
We used to be the core developers of Ares Protocol, recently partnered with the Patract community to implement MakerDAO lending and Oracle feeding, demo

@web3hacker, do you have any online repositories or related profiles that show your involvement in any open source projects?

@web3hacker, do you have any online repositories or related profiles that show your involvement in any open source projects?

Hi @semuelle， I've been involved in some of these. Ares Protocol

A relayer just for NFTs seems way too specialised. This could be accomplished with XCMP or existing bridges. I am also concerned that both the internft and ares organisation have very little activity and few contributors on any of their repos.

A relayer just for NFTs seems way too specialised. This could be accomplished with XCMP or existing bridges. I am also concerned that both the internft and ares organisation have very little activity and few contributors on any of their repos.

I was involved with the ARES project for the purpose of getting started and learning the Substrate framework, but now I am not an organization.
As a programmer, I just had a new idea and wanted to do something. Trust takes time to build, I'm not sure if there are other appropriate funding options for projects that are new to the Web 3.0 ecosystem and don't have much to show for it.
Considering the project itself, If the criteria for funding are not met, thank you very much for your time.

Hi @web3hacker It’s definitely nice that you want to leverage substrate and work on your own project. That’s definitely something we want to support via the grants program. However, the main issue is that we have already funded multiple teams that are working on similar initiatives with a lot more resources and more detailed applications. I therefore suggest to close this application and instead to apply for something else, which is potentially more focused (e.g. a UI for existing pallets) or another more unique/niche project. Feel free to also take a look at our project ideas section.

And feel free to reach out to us if you have any questions.

Thank you very much @Noc2 @semuelle @alxs . I close this application. I will do a preliminary study independently, and I hope there will be an opportunity for cooperation in the near future.


Update config.toml, open rpc_listen_address_admin

based on the latest config.toml set of storage-kv, the storage node's rpc_listen_address_admin needs to be opened

This change is

It is not safe to open admin or debug rpc by default.


moderation: -im flag to invert regex match for clear cmd

This allows users to only clear messages that do not match the given regex.
-im stands for invert regex match, ideally it've just been -i but that was taken already. Happy to bikeshed over naming.
Works fine on selfhost, as far as I can tell.

👍


Dapr: Failed to init input binding with kafka and zookeeper

I have tried to use bindings.kafka with tye following with the configuration file at
https://github.com/dapr/samples/tree/master/5.bindings
I created kafka_bindings.yaml with the same content in the repo above
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: sample-topic
spec:
  type: bindings.kafka
  metadata:
  # Kafka broker connection setting
  - name: brokers
    value: localhost:9092
  # consumer configuration: topic and consumer group
  - name: topics
    value: sample
  - name: consumerGroup
    value: group1
  # publisher configuration: topic
  - name: publishTopic
    value: sample
  - name: authRequired
    value: "false"

And on tye.yaml, I added
- name: zookeeper
  image: wurstmeister/zookeeper:latest
  bindings:
    - port: 2181
      containerPort: 2181
- name: kafka
  image: wurstmeister/kafka:latest
  bindings:
    - port: 9092
      containerPort: 9092
  env:
    - name: KAFKA_ADVERTISED_HOST_NAME
      value: <IP_ADDRESS>
    - name: KAFKA_CREATE_TOPICS
      value: sample:1:1
    - name: KAFKA_ZOOKEEPER_CONNECT
      value: zookeeper:2181

In the application, I have the publisher using dapr-dotnet
await _daprClient.InvokeBindingAsync("sample-topic", notification, null, cancellationToken);

And the subscriber as following
[HttpPost("sample-topic")]
public async Task SubcribeSampleTopic(
    AddStoreProductPriceCommand command)
{
    // do something
    // ...
}

But when I run the application, I can start and run normally, but nothing happens when I InvokeBinding. I examined the logs file for the Dapr proxy and found out the error in there
.
.
[inventory-api-dapr_36a321be-a]: time="2020-05-09T20:27:45.1222329+07:00" level=info msg="found component sample-topic (bindings.kafka)" app_id=inventory-api instance=LAPTOP-7QC3O5QO scope=dapr.runtime type=log ver=0.7.0
.
.
.
[inventory-api-dapr_36a321be-a]: time="2020-05-09T20:27:46.9864866+07:00" level=error msg="failed to init output binding sample-topic (bindings.kafka): kafka: client has run out of available brokers to talk to (Is your cluster reachable?)" app_id=inventory-api instance=LAPTOP-7QC3O5QO scope=dapr.runtime type=log ver=0.7.0
[inventory-api-dapr_36a321be-a]: time="2020-05-09T20:27:47.7493515+07:00" level=error msg="failed to init input binding sample-topic (bindings.kafka): kafka: client has run out of available brokers to talk to (Is your cluster reachable?)" app_id=inventory-api instance=LAPTOP-7QC3O5QO scope=dapr.runtime type=log ver=0.7.0
.
.

My question is:

I have searched around in this repo, but don't have anywhere that mentioned how to use Dapr binding using Kafka so how can I do it?
Could we have to document somewhere about this one? Because I think it is quite popular in the microservice with Dapr.
What I did wrong to make this error happened by using kafka and zookeeper with tye?

Tye: 0.2.0-alpha.20224.3+943b60d39155cdd44bee76daaf47dbc54d55f9e7
Dapr: 0.0.7
Windows 10 OS

I have searched around in this repo, but don't have anywhere that mentioned how to use Dapr binding using Kafka so how can I do it?
Could we have to document somewhere about this one? Because I think it is quite popular in the microservice with Dapr.

Yeah, we haven't gotten the chance to have a sample with Dapr + Kafka. We would gladly accept a sample or recipe if you manage to get that working.

What I did wrong to make this error happened by using kafka and zookeeper with tye?

I'm not sure based on that error. Could you post this sample on git somewhere so I can clone and try locally?

I have tried it at https://github.com/thangchung/practical-dapr/commit/53d091fdeabb65b11b978c34e878ce20c71b86ba
If you have time, please have a look at it.
In the meantime, I will continue to try with it, if that works, I will make a sample and PR

I have managed to use Kafka binding between two ASP.NET Core microservices:
Service with output binding:
var notification = new NotificationData { BookingId = confirmation.BookingId };  await dapr.InvokeBindingAsync("notifications-topic", "create", notification, null, default(CancellationToken));
Service with input binding:
   public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseRouting();

        app.UseCloudEvents();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapPost("notifications-topic", ProcessNotification);
        });

        async Task ProcessNotification(HttpContext context)
        {
            var message = await JsonSerializer.DeserializeAsync<NotificationData>(context.Request.Body, options);

            Console.WriteLine("Hello from Kafka: Booking {0} confirmed.", message.BookingId);
        }
    }

I have used endpoint without controller and UseCloudEvents().
It works with Tye in Kubernetes (I have deployed Kafka & Zookeeper and Dapr Kafka binding component manually like in
https://github.com/dapr/samples/tree/master/5.bindings).
It also works locally, but without adding Kafka and Zookeeper to tye.yaml file (I have used docker-compose file for Kafka and Zookeeper like in https://github.com/dapr/samples/tree/master/5.bindings), for the rest of my distributed sample app:  tye run).
I also have used Tye Dapr Extension for Dapr 0.8.0 workaround for locally running services (copying components/*.yaml to %UserProfile%.dapr\components https://github.com/dotnet/tye/issues/555).
So it seems there is a problem with Tye and Kafka & Zookeeper in tye.yaml when we use 'tye run'.

I used Kafka with Tye in an other sample application.
- name: zookeeper
  image: confluentinc/cp-zookeeper:latest
  bindings:
    - port: 2181
      containerPort: 2181
  env:
    - name: ZOOKEEPER_CLIENT_PORT
      value: 2181
- name: kafka
  image: confluentinc/cp-kafka:latest
  bindings:
    - port: 9092
      containerPort: 9092
  env:
    - name: KAFKA_BROKER_ID
      value: 1
    - name: KAFKA_ZOOKEEPER_CONNECT
      value: zookeeper:2181
    - name: KAFKA_ADVERTISED_LISTENERS
      value: PLAINTEXT://localhost:9092
    - name: KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR
      value: 1
    - name: KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE
      value: true


Error while authenticating

I have encountered an error while authenticating CapellaConsoleClient. A lot of clients were initiated simultaneously from separate machines so it might be potentially connected to some rate limiting. Most of the authentications passed fine but some of them failed.
Relevant part of the traceback:
  File "/usr/local/lib/python3.11/dist-packages/capella_console_client/client.py", line 83, in __init__
    self._sesh.authenticate(email, password, token, no_token_check)
  File "/usr/local/lib/python3.11/dist-packages/capella_console_client/session.py", line 64, in authenticate
    self._basic_auth(email, password)  # type: ignore
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/capella_console_client/session.py", line 113, in _basic_auth
    resp = self.post("/token", headers={"Authorization": f"Basic {basic_token}"})
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/httpx/_client.py", line 1136, in post
    return self.request(
           ^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/httpx/_client.py", line 821, in request
    return self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/capella_console_client/session.py", line 146, in send
    ret = super().send(*fct_args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/httpx/_client.py", line 908, in send
    response = self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/httpx/_client.py", line 936, in _send_handling_auth
    response = self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/httpx/_client.py", line 993, in _send_handling_redirects
    raise exc
  File "/usr/local/lib/python3.11/dist-packages/httpx/_client.py", line 976, in _send_handling_redirects
    hook(response)
  File "/usr/local/lib/python3.11/dist-packages/capella_console_client/hooks.py", line 26, in translate_error_to_exception
    handle_error_response_and_raise(response)
  File "/usr/local/lib/python3.11/dist-packages/capella_console_client/exceptions.py", line 94, in handle_error_response_and_raise
    error = response.json()
            ^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/httpx/_models.py", line 755, in json
    return jsonlib.loads(self.content.decode(encoding), **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)"

Hi @adam-sikora
Thanks for your message: https://github.com/capellaspace/console-client/pull/54 resolves this, which will be released as part of 0.11.0.

0.11.0 has been released - get it via pip install -U capella-console-client
What you observed is that an access token, which expired after 1 hour was not successfully refreshed, meaning your script would 💥 after 1 hour.
The refresh token has an expiration of 1 day meaning your polling script will 💥 once that said refresh token expires (1 day).
At this point I recommend another basic auth e.g. by instantiating another client = CapellaConsoleClient(email, password).

Do you have an idea of how many clients were simultaneously trying to auth simultaneously? I tested on about ~12 multi-processing-ed clients and didn't hit a limit.
One solution I can think of is to add a re-try with exponential back-off to the auth function to mitigate, but would be nice to know how many simultaneous clients hit these limits so we can set the back-off parameters, I think.

We are using potentially hundreds of workers at the same time as our platform scales dynamically. I unfortunately can not give you anything more specific as we have since added session persistence and retrying so it is no longer an issue for us.
I have reported this issue as the Python package fails to properly raise some subclass of CapellaConsoleClientError and instead fails with JSONDecodeError

We have hit this error again on our platform and retrying did not help. It was happening from 2024-02-20T08:49:31Z to 2024-02-20T08:53:12Z. I don't see any errors outside of this time range in our logs and the requests work correctly now.
This suggests some temporary outage of Capella API and subsequent error in handling of error response.

Thanks for sending this report in. I can try to look at this over the weekend. I’ll set up an experiment and try to trap the point at which we could raise a better error message. More wholistically, I’ll try to investigate to the root cause.
From: Adam Sikora @.>
Date: Tuesday, February 20, 2024 at 1:56 AM
To: capellaspace/console-client @.>
Cc: Shaunak De @.>, Comment @.>
Subject: Re: [capellaspace/console-client] Error while authenticating (Issue #52)
We have hit this error again on our platform and retrying did not help. It was happening from 2024-02-20T08:49:31Z to 2024-02-20T08:53:12Z. I don't see any errors outside of this time range in our logs and the requests work correctly now.
This suggests some temporary outage of Capella API and subsequent error in handling of error response.
—
Reply to this email directly, view it on GitHubhttps://github.com/capellaspace/console-client/issues/52#issuecomment-1953853274, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AATNL2NXANAQWBWSQA4H2QLYURXOHAVCNFSM6AAAAABASWSHZCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNJTHA2TGMRXGQ.
You are receiving this because you commented.Message ID: @.***>


add tooltip warning when recipient address is the same as sender address

addresses #252

Is it possible to not disable the Send button, but just show the tooltip?
Esp on testnets, I often send stuff to myself.

Thanks a lot for the contribution. I get an empty tooltip when I just click in the "amount" field:

Same above the slider:

Also if we ask: "are you sure you want to send.." as a user I feel like I can answer and make that tooltip go away, but I can't and it stays here forever... which I don't find user friendly.
Could we add a way to close it and reformulate it so that it's not a question:
"Warning: You are sending this to yourself" or "Warning: the sender and receiver address are the same"

that's cool.

could we put the warning above the send button?
I keep breaking it sorry, if you enter your own address (it gives the warning) and then you remove it (because you want to correct it) the tooltip is offset due to the old offset from the warning.
Should be:

but is:


Bug Report: FunkinSprite disappear when zooming in

Which target are you using?
[x] Windows
[ ] Linux
[ ] Mac
Explain your issue
Please check first if your issue haven't already been reported yet.
FunkinSprites with zoomFactor 0 for some reason disappear when you zoom in the camera long enough
https://github.com/FNF-CNE-Devs/CodenameEngine/assets/90983918/f2c9c513-5e15-4cc5-bc9d-012049dc5ef1

i literally told yosh about this back in the early codename engine days and he didnt do anything about it
to be honest i am still kinda pissed over that


Update authentication.md

minor update

Docs Build status updates of commit 8168617:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/concepts/authentication/authentication.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


C++ warnings

There are warnings when running dlib on Xcode 8 (here are some of them)
The most occurring one is Implicit conversion loses integer precision: 'integer' (aka 'long') to 'int'

Cool. Submit a pull request :)

Submitted 👍


How to specify a .potx file when creating a new pptx ?

Is there a way to specify an existing .potx file when creating a new pptx?
The way to do this is in VBA is something like this:
    set filepath to ppt template
    Dim filepath As String
    templateFilePath = ThisWorkbook.Path & "\template.potx"

    Open PowerPoint and create new presentation
    Set PP = New PowerPoint.Application
    Set PPPres = PP.Presentations.Add
    PP.Visible = True
    PPPres.PageSetup.SlideSize = 2
    PPPres.ApplyTemplate (templateFilePath)

Below is the only reference I could find regarding .potx and it makes me think this is not a supported feature?
Presumably this python package is using the underlying VBA objects so this should be possible I think?
My current use case is controlling powerpoint from Excel VBA and using excel as my data input to build a slide deck. I would like to port this action to python and read the info from a .xlsx or .csv file.

We’ve called it a template, but in fact it’s just a regular PowerPoint file with all the slides >removed. Actual PowerPoint template files (.potx files) are something a bit different. More on >those later maybe, but you won’t need them to work with python-pptx.
source

You can just save your .potx as a .pptx with no slides and it works fine from there.
 prs = Presentation('template.pptx')
I am a dummy.

A .potx file is the same as a .pptx file excepting the MIME-type (Content-type) of the main presentation part in the package. As far as I can fathom, this is a signal to the PowerPoint app to treat that file a bit differently when it loads, like ignoring any slides it contains I think, but loading in the masters, theme, etc. and creating a new, blank slide. Also I suppose there's the bit about calling the new presentation Presentation1.pptx or something and not overwriting the template itself on save.
These are not terrifically important matters when using a library, and although this feature has been requested at least once, no one has ended up wanting it bad enough to sponsor it. All new development in python-pptx is essentially sponsored by project teams who just need that one or two new features to handle their use case. Individual users just bask in the glory of open-source and get what's grown to be quite a usable subset of all possible features for free. Individual code contributions turn out to be uneconomical, owing to the industrial-grade nature of the project and the testing and code-discipline rigors that imposes.
That's probably more than you wanted to know about the project internal process, but perhaps explains why some features like this seem to take a long time to appear :)

As @scanny pointed out, .potx is basically the same as a .pptx, for those who want to open a .potx like prs = Presentation('Presentation.potx'), the MIME-type CT.PML_TEMPLATE_MAIN needs be added in def _is_pptx_package(prs_part): in pptx/api.py.
I suppose there is a reason why it is currently not included. If somebody could tell me why that is, I could write a small MR, to at least allow certain other formats to be opened (with warning).

As @scanny pointed out, .potx is basically the same as a .pptx, for those who want to open a .potx like prs = Presentation('Presentation.potx'), the MIME-type CT.PML_TEMPLATE_MAIN needs be added in def _is_pptx_package(prs_part): in pptx/api.py.
I suppose there is a reason why it is currently not included. If somebody could tell me why that is, I could write a small MR, to at least allow certain other formats to be opened (with warning).

Is there any update on this issue in particular why .potx is not supported as a template?


Problem with png file

Hi, I use sd_setImageWithURL:completed, It work perfect with almost file but when I load this image. It return nil: http://ucla-production1.s3.amazonaws.com/Upload/93e232a9193edeefd1685118acd101df.png. Can anyone help me?

download the latest version and try again. its working fine on my end


Global color map

NeuQuant produce good quality color map. For local color map, it will better be for one single frame, but may cause color difference between multiple frames. Can we use a global color map here?

Making the color map be the same for all frames is quite easy. In GIFEncoder.js, you can do:
// with variable declarations (line 61)
var nq = null;
exports.reuseColorTable = false;

// in analyzePixels (line 335)
indexedPixels = [];
if (!nq) {
    nq = new NeuQuant(pixels, len, sample); // initialize quantizer
    colorTab = nq.process(); // create reduced palette
}
// map image pixels to new or existing palette
var k = 0;
for (var j = 0; j < nPix; j++) {
	var index = nq.map(pixels[k++] & 0xff, pixels[k++] & 0xff, pixels[k++] & 0xff);
	usedEntry[index] = true;
	indexedPixels[j] = index;
}
if (!exports.reuseColorTable) {
	nq = null;
}
pixels = null;

This is what I'm doing in the application I'm writing. The only downside is that the global color map is based off of the first frame, so if the first frame is not representative of the colors in the rest of the frames, the colors in those frames will be wonky. Other than that it is quite nice because reusing the color map speeds up encoding by about 40%, and static objects no longer have the weird "glimmer" throughout the GIF from the colors changing slightly from frame-to-frame.

@joswhite Thanks for your reply! Just like your said, based off the first frame will behaves incorrectly in some cases. It can be an option, but may not be the default behavior.


Move stuff around a bit

A lot of stuff happening, detailed followup after all the work is done...

I like this structure, but I'd prefer the Illuminator directory to be called src so that the cocoapods copies illuminator/src instead of illuminator/Illuminator.  I'm not going to merge this yet...not until we figure out the ruby gem stuff.

I"m working on the updated command line docs, we should delay merging this until those are in.

#26 may have messed up this PR.  I opened #29 which is this same request but rebased off master.

continue tracking it in https://github.com/paypal/Illuminator/pull/29


MM-19252 - Making max length visible on mobile

Summary
MM-19252 - Making max length visible on mobile
Ticket Link
https://mattermost.atlassian.net/browse/MM-19252
Screenshot

Creating a new SpinWick test server using Mattermost Cloud.

Test server creation failed. See the logs for more information.

Test server destroyed

Creating a new SpinWick test server using Mattermost Cloud.

Test server creation failed. See the logs for more information.

Test server destroyed

Hi @cpanato - setting up a test server is failing on this PR. Can you please help?

Creating a new SpinWick test server using Mattermost Cloud.

Test server creation failed. See the logs for more information.

Test server destroyed

Creating a new SpinWick test server using Mattermost Cloud.

Mattermost test server created! :tada:
Access here: https://mattermost-webapp-pr-3943.test.mattermost.cloud

Account Type
Username
Password

Admin
sysadmin
Sys@dmin123

User
user-1
User-1@123

done @lindy65

/cherry-pick 5.17

Error trying doing the automated Cherry picking. Please do this manually
+++ Updating remotes...
Fetching upstream
Fetching origin
+++ Updating remotes done...
!!! 'upstream/5.17' not found. The second argument should be something like upstream/release-0.21.
    (In particular, it needs to be a valid, existing remote branch that I can 'git checkout'.)

/cherry-pick release-5.17


Build io.js 1.3 binaries

I am using io.js 1.3 on Windows 8.1 64-bit. Node-sass currently fails when installing because the binaries do not exist:
Can not download file from https://raw.githubusercontent.com/sass/node-sass-binaries/v2.0.1/win32-x64-node-1.3/binding.node

This is fixed in node-sass. We will use new naming convention from vNext.


brain_extraction_model weight

hello , where can I found brain_extraction_model.pth.tar?😃

Hi, thank you for your interest. Please refer to the following ticket, I will update the notebook to include it in the future
https://github.com/alanqrwang/keymorph/issues/9

For convenience, I've added the brain extraction model weights to Releases, along with all the other pretrained models: https://github.com/alanqrwang/keymorph/releases/tag/weights.

thanks! that works😁


generate() error has no message

While calling escodegen.generate() it throws an error. try - catch is an empty object. How can I get a little more diagnostics or error messages?

Are you sure? The only objects thrown by escodegen are instances of Error, which should have a message field. Try running Object.getOwnPropertyNames on it if you are currently using Object.keys; the fields are non-enumerable.

Yes, you are right. The is a message. My mistake, I tried to stringify() an Error object and got an empty {}. The message was very short anyway. Something like: Cannot read property 'type' of null so I have to run esvalid in case of error in order to get more info. But it is good. Thank you for help.

Be careful, esvalid hasn't been updated with support for any of the nodes introduced for ES6 support.

woops.  Not even let?

Let uses the existing variable declaration node, so it should be fine. I would love to get a PR that adds ES6 support if someone wants to take it.

We have some volunteers for adding ES6 support, if I understand the following issue correctly: https://github.com/estools/escodegen/issues/221

No, I think #221 expresses a desire to change the implementation of escodegen to make use of ES6 features, not add support for generating programs from ES6 AST nodes.

Does this sound relevant? https://github.com/estools/esvalid/issues/7

Yes.


a way to reread settings for pylance on virtual environment changes

os - win10 2004
pylance: v2020.10.3
vsc: 1.50.1

I've not found any ways to reread my environment when I run pip in console to change modules, when I recreate virtual environment or change python version.
selecting python interpreter or changing it does not trigger any update.
I may be it rereads after some long time, but I havent had time to wait.
I have to close and reopen project for pylance to reread my virtual environment. and then it is all fine.
The output is all red underlined with inaccessible modules which has been changed in current virtual environment.
Nice to get a shortcut to reread for current virtual environment, or pressing the python interpreter status will reread it.
This is a great product and a massive improvement upon the old Python language server.
Thanks

We should already support pip installs via file watching, and the Python extension notifies us when the interpreter changes.
The core extension recently updated; was this working previously or has this only been broken for you for a short time?

Hi
I think I found the error, due to using Darkula Python skin, which has a binding to MagicPython, I removed both, and now things seem to work fine.
I do not have windows at home, but I had the same error here with same vsc + plugins on linux mint. and now changes to pip are reflected in vsc immediately.
I also use both python.pythonPath and python.analysis.extraPaths pointing to the same pyenv environment:
{
    "python.pythonPath": "/home/mortenb/.pyenv/versions/pygame/bin/python",
    "python.analysis.extraPaths": ["~/.pyenv/versions/pygame/bin/python"]
}


Remove-LabVM throws error: "The term 'Get-FormattedMessage' is not recognized as the name of a cmdlet"

In version 0.9.8 Remove-LabVM throws an error
PS C:\> Remove-LabVM -Name WIN10-10586-3 -Verbose
Get-FormattedMessage : The term 'Get-FormattedMessage' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling o
f the name, or if a path was included, verify that the path is correct and try again.
At C:\Program Files\WindowsPowerShell\Modules\Lability\Src\LabVM.ps1:672 char:38
+             $verboseProcessMessage = Get-FormattedMessage -Message ($ ...
+                                      ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Get-FormattedMessage:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Appear to be a simple typo. I will commit a fix and submit a PR in a moment.

Argh balls. How did something so simple get through? Are there no tests for Remove-LabVM?! Would you mind adding a test to catch a future recursion? Thanks!

I have very limited Pester experience, but guess it will make for a good learning experience. I'll try to come up with something :smile:

It will make good experience ;)
You should "just" be able to call Remove-LabVM to catch this. If the test passes and you revert your change - and the test fails - task accomplished!
That's assuming there's no test coverage at present? If you need a hand, let me know. Thanks again for your help.

Have added pester tests now for Remove-LabVM, and for New-LabVM as well. Currently I have specified a valid MediaId in the test for New-LabVM, but considering that the media ID's might change at some point, its better to mock that part as well. I will look into that next.

Added mocking of Get-LabMedia to pester tests for New-LabVM.
Let me know if you are OK with the added tests.

Closed by pull request #86


[#118837191] Create space users

What
As a Paas Team Member in order create users for an organisation I want to run a simple process to create a new user(s)
How to review
Run the script and check if it creates unprivileged user.
Prerequisites:

You must have installed the latest AWS client and CF client.
You must have your AWS credentials exported and login into CF with an admin user.
You have to export aws region export AWS_DEFAULT_REGION=eu-west-1
Your email account must be verified as a account to receive emails from SES.
You can do it with:

aws ses verify-email-identity --email-address<EMAIL_ADDRESS>--region eu-west-1

Then run the script to create your account. You will get an email with the credentials

./scripts/create-tenant.sh -m -o orgname -e<EMAIL_ADDRESS> Now check if you are not an Organisation manager

## Who can review

Not @timmow or @combor

LGTM, but just one comment:
There is a flaw here. If the org-manager decides remove sandbox and add, for instance: dev, staging and prod, whenever we create a new developer user we will add a space called "sandbox" and add the user to that space.
Does not it make sense to make the script:

If the org does not exist, create it.
If the space does not exist and there is no other space, create it
add the new user to all the spaces.

This way the user will always be added to all the spaces, and if they deleted sandbox, it won't be created.

@combor @timmow should non-org-managers be added to a space at all? Isn't that up to the org-manager to do?

We discussed this with @dcarley and @Rory80Hz and decided that it's OK to assign users to the sandbox space by default. It will change in the future with invitation UI.

merging in that case


fix: unable to find instance in case of ng17 control flow

ViewContainerRef actually returns the wrong length in case of Angular 17 Control Flow. By checking that the returned value is not null we should be safe.
Solves #7216

@satanTime apparently I'm not sure how the test-setup should be here, where should I add the test so that:
a) we get coverage report for it correctly
b) it works for a16 and below

Thank you a lot for the contribution!

v14.12.2 has been released and contains a fix for the issue. Feel free to reopen the issue or to submit a new one if you meet any problems.


Can we make sync from demo.noms.io faster now?

Everything else is so fast, I want downstream sync to be faster. I can currently pull sf-crime at ~2MB/s. It would be sweet to be able to go faster.

Closing until we get more specific bugs.


[Integ] Consolidation of integration tests covering the AD integration.

IMPORTANT NOTE: This change implies the overall integration tests framework to move from a class-scoped VPC stack to a shared-session-scoped VPC stack. For this reason it cannot be merged until we adapt all the integ tests to use a single regional session-shared VPC stack.
Description of changes
The high level goal of this PR is to consolidate the integration tests covering the AD integration.
This consists in:

Create a single regional directory per type (one MicrosoftAd and one SimpleAD), instead of provisioning one per test. This requires to revise the overall provisioning of AD infrastructure and to move VPC stacks from a class-scope to a shared session scope.
Define all the resources related to the AD infrastructure within a single CFN stack (currently we use 2 stacks + some resources being provisioned/deprovisioned via dedicated fixtures). To this aim we used the template adopted in our AD tutorial (with some adaptations w.r.t the already reviewed version, see diffs below).
Related to the previous point, we removed the pytest option ldaps-nlb-stack-name because that stack has been consolidated within the single directory stack.
Remove all the logic that used to provision resources outside the AD infra stack (certificate, secrets, ...); we can do that because such resources are now part of the single AD stack.
Remove the script used to publish the number f compute nodes to CW, as these metrics were introduced during initial debugging and are now unused.
Improve the cluster config files by removing useless properties, i.e. LdapTlsCaCert is required only when we want LDAPS with certificate verification, otherwise it can be omitted.

Tests

Manually launched ad integration tests with parallelism=8 and verified that (1) they succeed, (2) a single regional VPC is created, (3) a single regional directory per type is created (4) tests teardown do not leave zombie resources because they are all included within a single AD stack.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
Signed-off-by: Giacomo Marciani<EMAIL_ADDRESS>
Diffs between the stack used in integ test and the one provided in our AD turorial

Support the creation of both MicrosoftAD and SimpleAD directories
Support the creation of users within both MicrosoftAD and SimpleAD; notice that the administrative user in MicrosoftAd is Admin, whereas in SimpleAD it is Administrator;
Provide a way to create more than one user;
Provide the user password as output because it is defined at session scope, but it needs to be retrieved at class scope.
Provide the ReadOnly canonical name in MicrosoftAD or SimpleAD format;

diff /Users/mgiacomo/workplace/aws-parallelcluster/tests/integration-tests/resources/templates/active-directory.cfn.yaml /Users/mgiacomo/workplace/aws-parallelcluster/cloudformation/ad/ad-integration.yaml
22c22
<     Description: Cluster users that are created in the Active Directory (separated by blank space).
---
>     Description: Cluster user that is created in the Active Directory.
26c26
<     MaxLength: 6400
---
>     MaxLength: 64
230d229
<               directory_type = directory['Type']
252,256d250
<                   response_data['DirectoryType'] = directory_type
<                   if "MicrosoftAD" in directory_type:
<                     response_data['AdminUserName'] = 'Admin'
<                   else:
<                     response_data['AdminUserName'] = 'Administrator'
262c256
<     Type: AWS::DirectoryService::{{ directory_type }}
---
>     Type: AWS::DirectoryService::MicrosoftAD
267,270d260
<       {% if directory_type == "SimpleAD" %}
<       Size: Small
<       {% endif %}
<       {% if directory_type == "MicrosoftAD" %}
272d261
<       {% endif %}
393d381
<               echo "Users: " ${UserName}
402c390
<               echo $ADMIN_PW | sudo realm join -U ${AdminUserName} ${DirectoryDomain}
---
>               echo $ADMIN_PW | sudo realm join -U Admin ${DirectoryDomain}
405c393
<               echo $ADMIN_PW | adcli create-user -x -U ${AdminUserName} --domain=${DirectoryDomain} --display-name=ReadOnlyUser ReadOnlyUser
---
>               echo $ADMIN_PW | adcli create-user -x -U Admin --domain=${DirectoryDomain} --display-name=ReadOnlyUser ReadOnlyUser
407,411c395,396
<               for user in $(echo ${UserName} | tr " " "\n"); do
<                 echo "Registering $user..."
<                 echo $ADMIN_PW | adcli create-user -x -U ${AdminUserName} --domain=${DirectoryDomain} --display-name=$user $user
<                 sleep 1
<               done
---
>               echo "Registering User..."
>               echo $ADMIN_PW | adcli create-user -x -U Admin --domain=${DirectoryDomain} --display-name=${UserName} ${UserName}
431d415
<                 AdminUserName: !GetAtt Prep.AdminUserName,
520c504
<               users = event['ResourceProperties']['UserName']
---
>               user_name = event['ResourceProperties']['UserName']
522d505
<               admin_user_name = event['ResourceProperties']['AdminUserName']
533,536c516,517
<                   ds.reset_user_password(DirectoryId=directory_id, UserName=admin_user_name, NewPassword=admin_password)
<                   for user in users.split(" "):
<                     ds.reset_user_password(DirectoryId=directory_id, UserName=user, NewPassword=user_password)
<                     time.sleep(1)
---
>                   ds.reset_user_password(DirectoryId=directory_id, UserName=user_name, NewPassword=user_password)
>                   ds.reset_user_password(DirectoryId=directory_id, UserName='Admin', NewPassword=admin_password)
552d532
<       AdminUserName: !GetAtt Prep.AdminUserName
881,882d860
<   UserPassword:
<     Value: !Ref UserPassword
889,893d866
<       {% if directory_type == "SimpleAD" %}
<       - cn=ReadOnlyUser,cn=Users,dc=${dc}
<       - { dc: !Join [",dc=", !Split [".", !Ref DomainName ]] }
<       {% endif %}
<       {% if directory_type == "MicrosoftAD" %}
896d868
<       {% endif %}

This draft is not valid anymore as we decided to proceed differently.


systemd::user_service broken for puppet running in background

Affected Puppet, Ruby, OS and module versions/distributions

Puppet: 7.24
Ruby: 2
Distribution: RHEL9
Module version: 7.0.0

How to reproduce (e.g Puppet code you use)
systemd::user_service { "gitlab-podman-auto-update.timer":
  ensure  => true,
  enable  => true,
  unit    => podman-auto-update.timer,
  user    => 'gitlab-runner',
}

Run puppet agent in background, i.e pkill -SIGUSR1 puppet and not puppet agent -t -v
What are you seeing
The service does not start, the type fails to check the status of the service assumes it is not running and then
fails to start it.  ( In fact the service is running however that is some what immaterial if puppet can't detect that.
What behaviour did you expect instead
The service should be  started and enabled enabled correctly.
Output log
Apr 29 19:38:46 cirunner01.example.ch puppet-agent[1816569]: (/Stage[main]/Hg_punch::Cirunners/Systemd::User_service[gitlab-runner-podman-auto-update.timer]/Exec[Start user service podman-auto-update.timer for user gitlab-runner]/returns) Failed to start transient service unit: Transport endpoint is not connected
Apr 29 19:38:46 cirunner01.example.ch puppet-agent[1816569]: '["systemd-run", "--pipe", "--wait", "--user", "--machine"<EMAIL_ADDRESS>"systemctl", "--user", "start", "podman-auto-update.timer"]' returned 1 instead of one of [0]
Apr 29 19:38:46 cirunner01.example.ch puppet-agent[1816569]: (/Stage[main]/Hg_punch::Cirunners/Systemd::User_service[gitlab-runner-podman-auto-update.timer]/Exec[Start user service podman-auto-update.timer for user gitlab-runner]/returns) change from 'notrun' to ['0'] failed: '["systemd-run", "--pipe", "--wait", "--user", "--machine"<EMAIL_ADDRESS>"systemctl", "--user", "start", "podman-auto-update.timer"]' returned 1 instead of one of [0] (corrective)

Note the error:
 Failed to start transient service unit: Transport endpoint is not connected

Any additional information you'd like to impart
Expanding the underlying exec it is:
systemd-run --pipe --wait --user --machine<EMAIL_ADDRESS>systemctl --user   is-active podman-auto-update.timer

This command is fine from the cmd line:
# systemd-run --pipe --wait --user --machine<EMAIL_ADDRESS>systemctl --user   is-active podman-auto-update.timer
Running as unit: run-u10229.service
active
Finished with result: success
Main processes terminated with: code=exited/status=0
Service runtime: 7ms
CPU time consumed: 6ms

Just will not run in background puppet exec.

The  full SYSTEMD_LOG_LEVEL=debug enabled log is
podman auto update for test-user]/returns) Bus n/a: changing state UNSET → OPENING
podman auto update for test-user]/returns) sd-bus: starting bus with systemd-run -M.host -PGq --wait -pUser=test -pPAMName=login systemd-stdio-bridge "-punix:path=\${XDG_RUNTIME_DIR}/bus"
podman auto update for test-user]/returns) Successfully forked off '(sd-busexec)' as PID 7041.
podman auto update for test-user]/returns) Bus n/a: changing state OPENING → AUTHENTICATING
podman auto update for test-user]/returns) Bus n/a: changing state UNSET → OPENING
podman auto update for test-user]/returns) sd-bus: starting bus by connecting to /run/dbus/system_bus_socket...
podman auto update for test-user]/returns) Bus n/a: changing state OPENING → AUTHENTICATING
podman auto update for test-user]/returns) Bus n/a: changing state AUTHENTICATING → HELLO
podman auto update for test-user]/returns) Sent message type=method_call sender=n/a destination=org.freedesktop.DBus path=/org/freedesktop/DBus interface=org.freedesktop.DBus member=Hello cookie=1 reply_cookie=0 signature=n/a error-name=n/a error-message=n/a
podman auto update for test-user]/returns) Got message type=method_return sender=org.freedesktop.DBus destination=:1.113 path=n/a interface=n/a member=n/a cookie=4294967295 reply_cookie=1 signature=s error-name=n/a error-message=n/a
podman auto update for test-user]/returns) Bus n/a: changing state HELLO → RUNNING
podman auto update for test-user]/returns) Sent message type=method_call sender=n/a destination=org.freedesktop.systemd1 path=/org/freedesktop/systemd1 interface=org.freedesktop.systemd1.Manager member=StartTransientUnit cookie=2 reply_cookie=0 signature=ssa(sv)a(sa(sv)) error-name=n/a error-message=n/a
podman auto update for test-user]/returns) Bus n/a: changing state RUNNING → CLOSING
podman auto update for test-user]/returns) Failed to start transient service unit: Connection reset by peer
podman auto update for test-user]/returns) Bus n/a: changing state CLOSING → CLOSED
podman auto update for test-user]/returns) Bus n/a: changing state AUTHENTICATING → CLOSING
podman auto update for test-user]/returns) Failed to start transient service unit: Transport endpoint is not connected
podman auto update for test-user]/returns) Bus n/a: changing state CLOSING → CLOSED
"--pipe", "--wait", "--user", "--machine"<EMAIL_ADDRESS>"systemctl", "--user", "start", "podman-auto-update.timer"]' returned 1 instead of one of [0]
podman auto update for test-user]/returns) change from 'notrun' to ['0'] failed: '["systemd-run", "--pipe", "--wait", "--user", "--machine"<EMAIL_ADDRESS>"systemctl", "--user", "start", "podman-auto-update.timer"]' returned 1 instead of one of [0] (corrective)

Trying newer systemd and different puppet versions:

Agent OS
**Agent Version **
** Server Version **
**systemd version **
pass/fail

EL9
7.24
7.24
252 (our production)
fails

Fedora 40
8.5.1
8.6.0
255
passes

Fedora 40
7.30
8.6.0
255
passes

Fedora 40
7.24
8.6.0
255
passes

TBD - check puppet 8 on EL9 but looks to be something fixed between systemd 252 and 255.

Unfortunately upgrading systemd from source to 256~rc1  and reboot on EL9 does not resolve the situation.


Make a TestUtil to reduce repeated code in tests

Almost every test has the same structure. To test before -> after:

parse the 'before' string
flatten it to the structure we use for mathsteps
call the function we're testing
assert that the printed result is the same as the 'after' string

e.g. here are two real test function in the code right now
function testArithmetic(exprStr, outputStr) {
  it(exprStr + ' -> ' + outputStr, function () {
    assert.deepEqual(
      print(evaluateArithmetic(flatten(math.parse(exprStr))).newNode),
      outputStr);
  });
}

function testSimplify(exprStr, outputStr) {
  it(exprStr + ' -> ' + outputStr, function () {
    assert.deepEqual(
      print(simplifyBasics(flatten(math.parse(exprStr))).newNode),
      outputStr);
  });
}

We should make a TestUtil to reduce copying this structure around everywhere (i.e. the code DRY).
So the testArithmetic could look something like:
function testArithmetic(originalStr, expectedOutputStr) {
    TestUtil.testSimplification(evaluateArithmetic, originalStr, expectedOutputStr);
}

and then we could do a similar for one testing substeps (which also shows up in a bunch of places in the code - adding constant fractions is a good example)

Marking this as small because I don't think you have to know much about the code to do this, but it does touch a lot of code so in that sense it's not that small.

Can I be assigned for this?

Yes! Thanks :)

Work in progress just wanted to confirm that this is how the blueprint would look like for the util functions after reducing the code in tests :
'use strict';
const {canSimplifyPolynomialTerms} = require('../../lib/checks');
const {simplifyPolynomial} = require('../TestUtil');

function testCanCombine(exprStr, canCombine) {
  simplifyPolynomial(canSimplifyPolynomialTerms, exprStr, canCombine);
}

describe('canSimplifyPolynomialTerms multiplication', function() {
  const tests = [
    ['x^2 * x * x', true],
    // false b/c coefficient
    ['x^2 * 3x * x', false],
    ['y * y^3', true],
    ['5 * y^3', false], // just needs flattening
    ['5/7 * x', false], // just needs flattening
    ['5/7 * 9 * x', false],
  ];
  tests.forEach(t => testCanCombine(t[0], t[1]));
});

This also eliminates the additional imports in all the test files. Placing all of them in a single util file For eg -
require('assert');
require('math');
require('print');
require('flatten');

This would help me in writing the better and neat test. I am also using destructuring assignments wherever necessary.

testCanCombine is a little different because it's not comparing nodes/strings, it's checking true/false. I think you should probably leave that test the way it is for now, or come up with a general function that would be used like:
function testCanCombine(exprStr, canCombine) {
  TestUtil.testBooleanFunction(canSimplifyPolynomialTerms, exprStr, canCombine);
}

(not sure if testBooleanFunction is the best name, but it's all I could think of right now)

for substeps, I'd expect:
function testCollectAndCombineSubsteps(exprString, outputList, outputStr) {
  TestUtil.testSubsteps(collectAndCombineSearch, exprString, outputList, outputStr);
}

I think it'd be best if you put up your code in a pull request and we can talk about it there - will be easier to point out things :)

Also that I have written the test coverage for other functions that are separated, should I merge them along?

That's awesome! That's related to an assigned issue #58, so I'd say put it up in a separate pull request from this change to add the TestUtil - make sense?

Let me know if you have any questions!

I'll write a more general method for

I think you should probably leave that test the way it is for now, or come up with a general function that would be used like:

Right now I am clearing my messy code. But soon it will be up for the PR.

That's awesome! That's related to an assigned issue #58, so I'd say put it up in a separate pull request from this change to add the TestUtil - make sense?

Your point is valid.

sounds good. looking forward to the PR!

done! thanks so much @nitin42


uWSGI Worker Crashes on Frequent OpenSearch Requests via opensearch_dsl

What is the bug?
I am running a Python Flask server in a uWSGI workers.
The uWSGI crushes when the server makes a lot of requests to OpenSearch (50 requests in 40 seconds.)
It is worth noting that when I send a lot more requests to the server (200 in 40 seconds), but without the server calling the OpenSearch, the uWSGI does not crushes, indicating a problem in calling OpenSearch.
also, the open search does not show logs of errors.
This is the code:

from opensearch_dsl import Search, Q
…
    @cached_property
    def opensearch_client(self):
        secret = self.vault_client.read_secret(OPENSEARCH_AUTH_VAULT_LOCATION)
        return OpenSearch(hosts=config.get('OPENSEARCH_URLS_LIST'),
                             http_auth=(secret.get('opensearch_user'), secret.get('opensearch_password')))

     def get_recording_metadata_by_file_uuid(self, file_uuid):
        s = Search(using=self.opensearch_client, index=self.custom_index).query(Q('term', id__keyword=file_uuid))
        response = s.execute()
        if response.hits:
            return response.hits[0].to_dict()
        else:
            return None

How can one reproduce the bug?
send multiple requests to the flask server.
What is the expected behavior?
The uWSGI should not crush.
What is your host/environment?
Debian GNU/Linux 9
Do you have any screenshots?
No. the uWSGI just crashes.
Do you have any additional context?
The server runs in a docker container.

Hello @zaalgol, please take a look at opensearch-py. The dsl client was merged into that repo and deprecated here.


Show URL when hovering over links

Summary
Show URL when hovering over links, similar to the web app.
Details
At the moment you have to copy the link and paste it somewhere in order to see what the link is.
Until #123 has been addressed, in some platforms copying doesn't work (PR submitted in #272). Hence, you must click on the URL to find out what it's linking to, which is a bad user experience.
Given it has been brought up from a few sources, creating an issue here to track.

Anyone from the community interested to work on this?

@Razzeee referred to update-target-url event that might be useful to show URLs when hovering over links.

I'm willing to try this one, still have not got my first PR in.

That would be awesome! All yours @rico042002!

@jasonblais don't mean to be a bother. But what branch is the issue on? I'm having a hard time locating it, I already forked it and I have been searching through the src/browser branch. I'm still new to this.

@yuya-oc would you be able to help?
Thank you for working on the improvement, highly appreciate it @rico042002!

@rico042002  src/browser/index.jsx is the entry point of UI, so you will add the new element/component into MainPage component in order to show a URL. As it's large and has complicated callbacks, it might be hard. First, how about you subscribe the update-target-url event or add the placeholder to show a URL?

Hey @rico042002, were you able to locate the issue? Any help or guidance we can provide?

Setting up my environment to modify the app. Never dealt with C++ before, plus I have to install python. It's a little much for a newbie like me but I have a friend helping me so I will still be taking care of the issue @jasonblais

Thanks @rico042002, much appreciated! Please let us know if there's anything we can help with.
You're also welcome to join the Mattermost Deskop community channel, if you're not already a member. A good place to ask questions and discuss the future of the desktop project.

@rico042002 Are there any updates? I would like to take this because the next release is upcoming.

Closed by #372

Thanks @rico042002 for your interest earlier. If you'd be interested in helping with another pull request, we'd be more than happy to help you out

Hey, thanks all for adding this feature. I was sorely missing it when seeing Markdown links in chat.
I do have one minor frustration with it that I wonder if can be fixed. When the URL indicator is visible, it covers up the typing status indicator under the input field.
For the case of hovering over a URL in the message area, I don't think this is a huge deal. What makes it frustrating is when hovering over the sidebar, where nearly every pixel is a link. If I change channels and leave my mouse in place while reading what I've missed in that channel, the URL indicator just stays there, preventing me from seeing if anyone is typing.
Would it be possible (and if possible, desirable) to not show the URL indicator for things in the sidebar? It seems of low value to me to reveal the internal channel/user URLs, which are safe and predictable, compared to whatever URL someone might put in a Markdown link.

Thanks @Scotchester for the feedback! We've got a related issue here: https://github.com/mattermost/desktop/issues/427
At the moment, the app can identify the URL string only, so the only way is pattern matching to not show internal URLs. The issue is with embedded links where you'd want to show the URL on hover, ex.
[here's the team invite link](link to team)

D'oh! Sorry I didn't catch that.

Not to worry! :)


[SPARK-27655][SQL] Persistent the table statistics to metadata after fall back to hdfs

What changes were proposed in this pull request?
It's a real case. We need to join many times from different tables, but the statistics of some tables are incorrect. So this job need 43 min. It only need 3.7 min after set spark.sql.statistics.persistentStatsAfterFallBack=true. But the newly calculated statistics just for this SparkSession. So we need to recalculate statistics in the next time we start a new SparkSession.
This PR adds a switch to start a new thread to persistent statistics to the Hive metastore.
This is our job:

default(spark.sql.statistics.persistentStatsAfterFallBack=false):

spark.sql.statistics.persistentStatsAfterFallBack=true:

How was this patch tested?
unit tests and manual tests

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/10526/
Test PASSed.

Test build #105245 has started for PR 24551 at commit a0afbf2.

Test build #105245 has finished for PR 24551 at commit a0afbf2.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/105245/
Test PASSed.

Build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/14116/
Test PASSed.


.NET 7: Add customizing the cookie consent value

Customize the cookie consent value

https://github.com/dotnet/aspnetcore/issues/40164
https://github.com/dotnet/aspnetcore/pull/40213

I'm not sure the best place to document this. Add links to where we document it to the following:

What's new in ASP.NET Core 7.0 preview
EU General Data Protection Regulation (GDPR) support in ASP.NET Core
Use cookie authentication without ASP.NET Core Identity
Work with SameSite cookies in ASP.NET Core
Share authentication cookies among ASP.NET apps

@Tratcher  please suggest the primary doc to add this information.

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

ID: ed83a5ff-cb3a-8655-9f9a-a441da52424e
Version Independent ID: ed83a5ff-cb3a-8655-9f9a-a441da52424e
Content: What's new in ASP.NET Core 7.0
Content Source: aspnetcore/release-notes/aspnetcore-7.0.md
Product: aspnet-core
Technology: aspnetcore-releasenotes
GitHub Login: @Rick-Anderson
Microsoft Alias: riande

@daviddesmet can you suggest where this should be documented?

@Rick-Anderson I think it should be in EU General Data Protection Regulation (GDPR) support in ASP.NET Core since is related to the cookie consent.


Change strategy for optional abstract mixin methods

Given:
class Mixin extends React.Component {
  method() {
    if (this.optionalAbstract) {
      this.optionalAbstract(42);
    }
}
ReactSupport.declareMixin(Mixin);
/**
 * @param {number} x
 */
Mixin.optionalAbstract;

class Comp extends React.Component {}
ReactSupport.mixin(Comp, Mixin);

We now generate something along the lines of:
/** @interface */
function MixinInterface() {}
MixinInterface.prototype {
    method: function() {},
};
/**
 * @param {number} x
 */
Mixin$$optionalAbstract;
/** @type {typeof Mixin$$optionalAbstract|undefined} */
MixinInterface.prototype.optionalAbstract;

class Mixin extends React.Component {
  method() {
    if (this.optionalAbstract) {
      this.optionalAbstract(42);
    }
}
/** @type {typeof Mixin$$optionalAbstract|undefined} */
Mixin.prototype.optionalAbstract;
ReactSupport.declareMixin(Mixin);
/**
 * @param {number} x
 */
Mixin.optionalAbstract;

/** @implements {MixinInterface} */
class Comp extends React.Component {}
ReactSupport.mixin(Comp, Mixin);
/** @type {typeof MixinInterface.prototype.optionalAbstract} */
Comp.prototype.optionalAbstract;

This one needs more work. It is only clearing the duplicate property when there is a mixin target.
They problem is that we need to keep the info around in memory but we don't want to output the code for it. I will need to refactor to keep the state and the prototype literal separate.

TBR


Simplify/automate implementation of IsSubclassable

https://github.com/gtk-rs/gtk/tree/master/src/subclass has a lot of similar code, but still leaves various gtk widgets impossible to subclass from Rust (with safe code anyway).
I'm not sure exactly what difficulties are involved, but that should probably be automated as much as possible (in gir, a macro, etc.) so as little work as possible is needed to support sub-classing a new type.

See https://github.com/gtk-rs/gir/pull/604
The "empty" case without virtual methods is easy to automate, the problems come with the virtual methods. Often those are not very bindings friendly and require custom implementations. Those are the bad cases and you can find quite a few in gio, gtk and GStreamer.
Another problem is that it's not clear from the introspection data which virtual methods are optional and which are mandatory, or what the "default" behaviour (and return value) would be. That's a more fundamental problem with gobject-introspection missing information.
And last, the annotations for virtual methods are generally lacking in all the libraries. Which of course should be fixed, but prevents autogeneration too right now.


How to access to Handle props?

Hey @moklick,
I need to access to isValidConnection to have access on my custom node to display a tooltip on the hover of the handle.
To resume: access isValidation inside of a custom node OR do same like a custom Node but for handle.
The goal is to display a tooltip if my handle is not valid.
And how to have the validation not only on the hover on the handle but at the start of the Dnd?

I have this same question for the same reason. Commenting to follow along.

@moklick Any suggestions?

when do you want to display a tooltip? When user drags an edge above the handle or just on mouse enter?

On the hover of invalid handle.

Inside a custom node you should have all the information you need to clarify what kind of connections a handle could accept. You don't need the isValidConnection function.

Thks @moklick


Not compatible with English version

I use nlp2021_latex_template for writing the English version. But the figure/table caption and reference section title are compiled in characters (like 表１/　図１/ 参考文献). Could you please help to solve this problem? (I hope the latext_templete can be compiled as Table 1/ Figure 1 / Reference.) Thank you in advance!

Same as the standard LaTeX classes, you can change those names by redefining \tablename etc. in your preamble, e.g.,
\renewcommand{\contentsname}{Table of Contents}
\renewcommand{\refname}{References}
\renewcommand{\indexname}{Index}
\renewcommand{\listfigurename}{List of Figures}
\renewcommand{\figurename}{Figure}
\renewcommand{\listtablename}{List of Tables}
\renewcommand{\tablename}{Table}


Please add a license file and a screenshot, and consider renaming the repository

I'd like to add this to awesome-zsh-plugins, but the name is awfully generic. Please consider renaming it to something descriptive, or even just name it after your github username.
I also prefer to add themes with screen shots in their readme so that users can see what they look like without having to install them.
Finally, please add a license file, some people won't use any code that doesn't have a license. If you don't have one in mind, https://choosealicense.com is a good resource to help you select an appropriate one.
Thanks!

I can’t imagine many people will be interested in this, but I guess you never know. A little clean up was easy enough. Thanks for the interest.


use Terraform based aws runner with autoscaling

Based on https://github.com/philips-labs/terraform-aws-github-runner

Looks good to me! Would you want to roll this into the ops repo and we can have directories for the different pieces? action-runners github awsmegatests

yeah, could probably add this. I wanted this PR mainly to document the current setup


In src/views/TargetsDetailsView.vue

we can obtain this data from the store, avoid hard coding here

inside optionBar we have data like
...
xaxis: {
          categories: [21, 22, 53, 80, 443, 62],
...
seriesBar: [{
        name: 'series-1',
        data: [62, 44, 38, 50, 78, 57]
      }],
...

that we are using to render the chart,
we can get that from the store and then in the integration get that from the backend


Exception with angular 1.3.8 , ui-tree  2.1.5 , IE11

An exception is thrown when I'm trying to use your demo at https://github.com/JimLiu/angular-ui-tree/tree/master/demo with current latest versions of angular (1.3.8) and ui-tree (2.1.5) (using Visual Studio 2013 with Internet Explorer 11 as a debug target)
Unhandled exception at line 3066, column 13 in http://localhost:27517/angular.js
0x800a01b6 - JavaScript runtime error: Object doesn't support property or method 'contains'

The line 3066 in angular.js version 1.3.8 is:
if (!related || (related !== target && !target.contains(related))) {

This happens when i click (and eventually try to drag) any of the tree nodes.
It turns out that if I configure $compileProvider in the following way, the problem disappears:
angular.module("app").config(['$compileProvider', function ($compileProvider) {
        $compileProvider.debugInfoEnabled(false);
    }]);

Here you can find example (open it with Internet Explorer 11) - unfortunately I cannot reproduce this error every time using Plunker, but it happens always when I use Visual Studio and IE11 and most often when you open developer tools of IE11 and refresh the page (without using Visual Studio).
http://plnkr.co/edit/tLM0YhlXmPNPmq5ZD6lW?p=preview
Just try to drag some of the nodes - IE11 will (eventually) stop on the line 3066 in angular.js.
This is a screenshot of what happens - in the "Watches" window the "target" variable is expanded - it seems that it contains the document element, which don't have "contains" method:

:

The same issue is reported earlier:
https://github.com/JimLiu/angular-ui-tree/issues/298

Is this a dupe of #10259?

Closing this issue due to inactivity. See #815 for more information.
Please create a new issue is this still occurs with the current version of the component.


caffe android demo app showed error

I would like to use Caffe builded version in my Android application.for this purpose I downloaded https://github.com/sh1r0/caffe-android-demo demo project from this given link. But while run the corresponding downloaded project in Android Studio It showed the error as below
03-26 14:46:35.697    2800-3042/com.sh1r0.caffe_android_demo A/libc﹕ Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 3042 (AsyncTask #1)  please help me to run the demo application successfully.

I updated the jni libs and the related part in this project. Please follow README to get correct models and try to re-build this project. Everything should be fine :)
Thanks.

Sh1r0,
I have downloaded your recent code which contains some latest commits. It is running successfully without any issue what I mentioned before.
But here I have some doubts
return caffeMobile.predictImage(strings[0]);
The predictImage(strings[0]) method always returning a constant Integer value 672
IMAGENET_CLASSES[672] = mountain tent
So the mountain tent String is shown for all the images either captured from Camera or selected from Gallery
steps I followed to run the Demo Project
1.https://github.com/sh1r0/caffe-android-demo downloaded a project from above link
2.Created a folder with the name caffe_mobile in device SdCard
3. Copied the bvlc_reference_caffenet folder from this link https://github.com/sh1r0/caffe/tree/mobile/models  and pasted into caffe_mobile folder
4.Cleaned  and run the code.

Sorry, but as far as I have tested on several phones, I did not encounter such problems. Could you provide some more details? Or you can try this caffe example image, the result is likely to be tabby, tabby cat.

Sh1r0,
As I didn't include bvlc_reference_caffenet.caffemodel  file in my bvlc_reference_caffenet folder, I kept on getting answers as only "mountain tent" for all the results.After that
I had download bvlc_reference_caffenet.caffemodelfile and included in bvlc_reference_caffenet folder after these processes It  work's great. Thanks for your support to execute the project.
I would like to use caffe in my Android project,for this purpose I will send some input to  Caffe and It will return results for that sent input.so I need to know about what are the methods used in built sos
libcaffe.so
libcaffe_jni.so
I would like to know what are the method used by you,so that there will be no use for me to go on with the building process once again.
need information about Caffe IOS framework
Is there a demo application to execute the caffe framework in IOS ?
Or else can you please provide the build steps to create the framework or .a file to execute the caffee framework with sample ?

libcaffe.so is solely the ported (pruned) Caffe. libcaffe_jni.so simply wraps some simple interfaces to use Caffe lib, and might not always suit for your needs. You can take a look at these 3 files, caffe_jni.cpp, caffe_mobile.hpp and caffe_mobile.cpp, for more information.
Sorry, I don't know if there is any existed ported Caffe for iOS. But for static libs (.a), this Makefile might give you some clues, and likely, you'll need iOS cross compliation toolchain.

Okay thanks for your valuable reply.

Sh1r0,
I need to know whether these(set_mode,SetDevice,set_phase,Net,Layer,MemoryDataLayer) are the Caffe methods are there in libcaffe.so. So please confirm it.
Thanks

Yes, those are Caffe methods. Custom methods used for jni lib are at these 3 files, caffe_jni.cpp, caffe_mobile.hpp and caffe_mobile.cpp, as I mentioned before.
Thanks.

Thanks


unable to send messages to everyone on company communicator app

unable to send messages to everyone on company communicator app on 4 tenants

Hi @SheetalMahanta16 ,
Thanks for raising the query. Could you please share more details on this issue and supporting screenshots would be more helpful.


How to apply gradient on Progress bar?

Please feel free to extend the library, would love to get this to everyone


Update the README.md file to describe the repo.

@Kwameoab Approved! You can click Merge pull request above to submit your changes now that one of us has approved the PR. After that make sure to checkout the master branch in your cloud shell and run git pull to ensure your local master branch is up-to-date with the master branch on GitHub.


The split operation documentation contains the example for another operations merge

https://kotlin.github.io/dataframe/split.html#split-horizontally

NOTE: it should be deleted

Also, the limit = argument does not exist on the site

After investigation: it's not incorrect. The documentation just shows how the merged df is created before showing how it can be deconstructed again using Regex. That said, since users can now see the input DF, we can probably remove the first step for clarity.


OLS-652 - Removing test get cluster id function

Description
as it's not relevant as its not expected for k8s and cluster utils to have the same cluster id
Type of change

[x ] Refactor - removing unused test (not relevant)
[ ] New feature
[ ] Bug fix
[ ] CVE fix
[ ] Optimization
[ ] Documentation Update
[ ] Configuration Update
[ ] Bump-up dependent library
[ ] Bump-up library or tool used for development (does not change the final image)
[ ] CI configuration change
[ ] Konflux configuration change

Related Tickets & Documents

Related Issue #
Closes #

Checklist before requesting a review

[ ] I have performed a self-review of my code.
[ ] PR has passed all pre-merge test jobs.
[ ] If it is a core feature, I have added thorough tests.

Testing

Please provide detailed steps to perform tests related to this code change.
How were the fix/results from this change verified? Please provide relevant screenshots or results.

/approve

/test e2e-ols-cluster-4-15
/test e2e-ols-cluster-4-16
/override "Red Hat Konflux / ols-enterprise-contract / lightspeed-service"
/lgtm

/test e2e-ols-cluster-4-16

/override "ci/prow/e2e-ols-cluster-4-17"
/override "ci/prow/images"


cannot find re-activate/deactivate button on web ui

I remove webhooks from gitlab by mistake, and i want to re-activate a project to re-create the hook intead of creating it on gitlab by myself... So i have to do that though api, that's really inconvenient..
That also happends if drone host:port changes without changing DB.

could you try to use the API to activate it again? http://readme.drone.io/api/repos/post/, to ensure it the API works.
curl -X POST "https://drone.io/api/repos/github.com/foo/bar?access_token=<your token>"

I've tried and it worked. What i meant above is nothing but inconvenient.

duplicate of #523

drone:0.4
I tried following request, but the webhook didn't appear.
curl -X POST "https://drone.myhost.com/api/repos/my/repo?access_token=$DRONE_TOKEN
...
< HTTP/1.1 409 Conflict
...
Repository already exists.


✨ feat(none): hono and autocannon benchmark

Initial checklist

[x] I read the support docs
[x] I read the contributing guide
[x] I agree to follow the code of conduct
[x] I searched issues and couldn’t find anything (or linked relevant results below)
[x] If applicable, I’ve added docs and tests

Description of changes
TODO

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

Comparison is base (08862cb) 85.36% compared to head (45bbb4d) 85.36%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##             main     #202   +/-   ##
=======================================
  Coverage   85.36%   85.36%
=======================================
  Files          13       13
  Lines         246      246
  Branches       38       38
=======================================
  Hits          210      210
  Misses         36       36

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Need to agree on a mocking framework to use for tests

Certain tests (e. G ui device extensions) require a mocking framework. We need to decide on one.

@goktugyil what's your plan on that?

The main caveat of a traditional mocking framework is that swift is not support reflection for writes - http://blog.pragmaticengineer.com/swift-the-only-modern-language-with-no-mocking-framework/.
We might have to resort to compile time code generation - https://github.com/SwiftKit/Cuckoo. I am not sure if that is the right approach. As a degenerate case we might have to just write fakes manually.

I believe the best way to approach this problem would be to write a prototype with a chosen framework (declare it before hand in this issue) and submit a pull request. If consensus is achieved we can declare that as our framework of choice.
I will pick  https://github.com/SwiftKit/Cuckoo for testing.

I agree with Khalian. Test a couple frameworks separately, merge the best one to master and continue using that.

My status for this right now:-
Podfile :
target 'EZSwiftExtensions-iOS' do
platform :ios, '8.0'
use_frameworks!
pod "Cuckoo"
project "EZSwiftExtensions.xcodeproj"
end
I was able to get the Cuckoo sources down. However this seems extremely counterproductive (requiring the pod sources will add non trivial amounts of time to travis build).
Is there a maven equivalent to the IOS dev ecosystem? Maven just downloads the repos in a directory and defines the JVM classpath to point from that. Given travis's architecture, the cache wont keep getting wiped across builds.

I have almost zero knowledge in devops for iOS, so I don't think I can help much

@pixel4 any help?

I'm not a fan of Cuckoo to be honest.
I know the question was more regarding the issue with having to download the pod source every time, so answering the right question: That's how cocoapods works, you can always commit the /Pods directory to solve this but I don't recommend doing so. Have you tried Carthage? It's not centralized like cocoapods, you could build Cuckoo framework and just commit it in the project. Not so bad to commit a framework in the project, IMO.
My going back to Cuckoo, just to give some context on why I don't like it:
As you said, Swift wasn't designed to support reflection and there's a reason for that. I'm not a fan of going against this principle by generating files on runtime to support mocking. I'm more inclined to embrace the language and follow its guidelines. Reference: http://masilotti.com/better-swift-unit-testing/
Out of curiosity, why do we need UI Test mocking for EZSwiftExtensions?

@pixel4 The sole reason is to increase unit test coverage for most of the UIKit extensions.

@pixel4 Whats your take on increasing test coverage on APIs where mocking is necessary (e.g UIDeviceExtensions). I dont like code gen mockups either, but I dont see a way out short of creating my own stubs/spys.

Exactly.. that's the only way out. On the projects I work on I usually have a system in place with protocols to allow stubbing but to be honest I mostly use on network related code.

Ok I will write something and send out a PR. Let the collaborators take a look at the writing custom shims approach.


Use is-object-like for object/fn detection

Code is unchanged, just have written this a few times and made a module for myself

Sure. But not interested having nested deps for something as simple as this. Instead of depending on is-object, just have the exact same function as current inlined here.

Amended w/ requested changes

Awesome :)

Just FYI is-obj is exactly the same as is-object-like :)

Oh, but is-object-like is misleading. They're not object-like, they are objects. Almost everything in JS are objects.

@bendrucker
is-object-like should probably let null return true as null is object-like?

Per the description, my intent was to cover things that can take arbitrary properties as if they were plain objects


Would MustNewEvent be used for listening for transaction events from a contract?

If so is there an example somewhere of how to implement?
Thanks

w3 does not support subscriptions yet (#38). However, the w3.Event can be used to decode an event-log retrieved from a tx receipt (eth.TxReceipt(...) or filter quer (eth.Logs(...)). Event decoding works analogous to function decoding: you pass the log, followed by the events arguments to set the values of the passed args: Event.DecodeArgs.


This website has been broken for ages

jboski producing error messages does not necessarily indicate invalid Lojban, so the parsed text should still be shown. This happens when a sentence does not have a selbri or when jai is used on its own for abstraction like in sentences such as ".i mi jai ciska". Both are fully grammatical Lojban according to the CLL.
The old interface would show both error messages and parsed output when an error message was present, which was much more usable and would reliably parse grammatical Lojban, no matter what that grammatical Lojban was.
I know there's another issue for this but this problem has remained unfixed for months and was introduced when the new interface was released.

For posterity, see #1