Actions changed since MC191185 and Roadmap ID 55102.

Block Sender and Review is only options now. Also please note, you require now to sign into Quarantine portal, where previously you didn't - Great from a mobile device. Not now :(
The list doesn't include Size as well now

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

ID: eedcd379-0c7e-5b68-be04-e272ac53638d
Version Independent ID: 664acd84-b4df-c943-e027-677f4340768e
Content: Use user spam notifications to release and report quarantined messages in Office 365
Content Source: microsoft-365/security/office-365-security/use-spam-notifications-to-release-and-report-quarantined-messages.md
Service: o365-seccomp
GitHub Login: @MSFTTracyP
Microsoft Alias: tracyp

@DavidTaig - Thank you for engaging with the community here for the docs.
I know the product teams are always looking for user feedback and feature requests on how to make Microsoft 365 better. They keep a close tab on user feedback and it would be awesome if you could add your voice in UserVoice.
You might find others have made a similar request that you can add to, or you can open a new one. Let us know here if you do so we can up-vote your request.
Thank you for your contribution to make the docs better! Much appreciated!

All my users as of 24 hours ago were able to release quarantine email directly from their inbox.  The release button at a minimum  needs to be restored! Please restore these options.  Asking a user to sign in to release a quarantined email just increased the probably of falling for a malicious phishing campaign. Lastly- thanks for the notification about this change.

@jptechie - We suggest for you to submit your feedback via UserVoice. Thank you!


Modified three files to fix the bibliography section.

Modified three files to fix the bibliography section.
(1) According to a Jupyter Book documentation page (https://jupyterbook.org/en/stable/content/citations.html), it is possible to add a reference section at the end of each page, by adding a filter to the bibliography directives:
:filter: docname in docnames

To test this behavior, I added this to the "pubchem.md" file.  And for comparison, I added the bibliography section (without the filter) to the "bibliography.md" file.
(2) I removed the DOI information from the papers in the "references.md" file.  The links to the papers will be shown as "URL: ......", not "DOI:.....".

Accepted! Lets see how it looks...


Active Callback not Working

Issue description:
The Toggle and switch do not take the 'default' value into consideration. If I set it to 1 it's disabled if I set the 0 it's also disabled it doesn't matter which one. if the Switch/toggle has an active callback it doesn't display.
Version used:
(Did you try using the develop branch from github? There's a chance your issue has already been addressed there)
I'm currently embedding into the theme, I've tried the lastest and dev branches
Using theme_mods or options?
theme_mods
Code to reproduce the issue (config + field(s))
Kirki::add_field( 'malinois', array(
	'type'        => 'color',
	'settings'    => 'body_border_color',
	'label'       => __( 'Body Border Colour', 'my_textdomain' ),
	'section'     => 'settings',
	'default'     => '#000000',
	'priority'    => 7,
	'choices'     => array(
		'alpha' => true,
	),
) );

Kirki::add_field( 'malinois', array(
	'type'        => 'switch',
	'settings'    => 'body_border',
	'label'       => __( 'Body Border (Passepartout)', 'my_textdomain' ),
	'section'     => 'settings',
	'default'     => '1',
	'priority'    => 6,
	'choices'     => array(
		'on'  => esc_attr__( 'Enable', 'my_textdomain' ),
		'off' => esc_attr__( 'Disable', 'my_textdomain' ),
	),
) );

and
Kirki::add_field( 'malinois', array(
	'type'        => 'color',
	'settings'    => 'body_border_color',
	'label'       => __( 'Body Border Colour', 'my_textdomain' ),
	'section'     => 'settings',
	'default'     => '#000000',
	'priority'    => 7,
	'choices'     => array(
		'alpha' => true,
	),
) );

Kirki::add_field( 'malinois', array(
	'type'        => 'switch',
	'settings'    => 'body_border',
	'label'       => __( 'Body Border (Passepartout)', 'my_textdomain' ),
	'section'     => 'settings',
	'default'     => '1',
	'priority'    => 6,
	'choices'     => array(
		'on'  => esc_attr__( 'Enable', 'my_textdomain' ),
		'off' => esc_attr__( 'Disable', 'my_textdomain' ),
	),
    'active_callback'    => array(
    	array(
    		'setting'  => 'body_border_color',
    		'operator' => '==',
    		'value'    => '1',
    	),
    ),
) );

Hopefully ive got the active_callback right.

Can you please try using a boolean value for your defaults?
So true or false instead of '1' or '0'

@aristath Sure ill try that, ill let you know if this works, but 1 / 0 is in the docs. So the docs might need updating? https://aristath.github.io/kirki/docs/controls/switch.html

Yes, the docs are definitely wrong.... Docs for some controls (including toggle/switch) have not been updated in 2 years
I have started slowly improving them these days but it's an ongoing process, it's going to take me some time.

@aristath Unfortunately this hasn't worked.
Kirki::add_field( 'malinois', array(
	'type'        => 'color',
	'settings'    => 'body_border_color',
	'label'       => __( 'Body Border Colour', 'malinois' ),
	'section'     => 'settings',
	'default'     => '#000000',
	'priority'    => 7,
	'choices'     => array(
		'alpha' => true,
	),
) );

Kirki::add_field( 'malinois', array(
	'type'        => 'switch',
	'settings'    => 'body_border',
	'label'       => __( 'Body Border (Passepartout)', 'malinois' ),
	'section'     => 'settings',
	'default'     => false,
	'priority'    => 6,
	'choices'     => array(
		'on'  => esc_attr__( 'Enable', 'malinois' ),
		'off' => esc_attr__( 'Disable', 'malinois' ),
	),
    'active_callback'    => array(
    	array(
    		'setting'  => 'body_border_color',
    		'operator' => '==',
    		'value'    => true,
    	),
    ),
) );

It still shows the body border colour even when disabled?
Thanks Jake.

Closed this one by mistake, reopening.

@JakeHenshall I'm sorry but I just noticed this... It was so obvious that I missed it.
You have a switch and a color control.
You want to show the color control when the switch is on.
The way this works is the reverse of what you have on your code.
Kirki::add_field( 'malinois', array(
	'type'        => 'color',
	'settings'    => 'body_border_color',
	'label'       => __( 'Body Border Colour', 'my_textdomain' ),
	'section'     => 'settings',
	'default'     => '#000000',
	'priority'    => 7,
	'choices'     => array(
		'alpha' => true,
	),
	'active_callback'    => array(
		array(
			'setting'  => 'body_border',
			'operator' => '==',
			'value'    => 1,
		),
	),
) );

Kirki::add_field( 'malinois', array(
	'type'        => 'switch',
	'settings'    => 'body_border',
	'label'       => __( 'Body Border (Passepartout)', 'my_textdomain' ),
	'section'     => 'settings',
	'default'     => '1',
	'priority'    => 6,
	'choices'     => array(
		'on'  => esc_attr__( 'Enable', 'my_textdomain' ),
		'off' => esc_attr__( 'Disable', 'my_textdomain' ),
	),
) );

You don't tell the switch to turn on or off other controls. Instead you have to tell the other controls to watch the switch's value so that they may be show or hidden based on the switch's value. I don't know if that sentence makes a lot of sense, I hope it does 😄
See the active_callback is a set of conditions that apply to the control and decide if the control will be shown or not.
Tested the code I just posted and it works fine so I'll go ahead and close this ticket 👍

@aristath Ahh awesome, works perfectly, thanks again.


Are there any plans to have this fetch jobs from AWS/EMR?

I could see a pretty compelling use case for running Dr Elephant on top of AWS to analyze Spark/MR jobs running on EMR.
What I have in mind is, Dr Elephant would be installed in a stand-alone box, and periodically poll the AWS API to check for alive clusters via DescribeCluster, get the hostname for each of those, and automatically fetch jobs running on each cluster and analyze them. The idea is when you have lots of short-running EMR clusters, you can have 1 centralized location with all the results. Optionally, maybe integrate with AWS Data Pipeline to figure out workflows.
Right now the way we have it setup is to run Dr Elephant on each EMR cluster, but this is far from ideal because we lose the results once the cluster goes down unless we export it, and have to reinstall it on every new cluster. It still works because we can have it running in a long-standing staging environment and make sure things are green before they go to prod. But in order to identify trends over multiple days this breaks down.
I haven't dug into the code yet, but what do you think about this idea? I believe there is currently no way to do such a thing, but have you ever had this request or is it something you would be open to consider in Dr Elephant? Happy to help contributing to that once I start looking at the code if you think it would be valuable.

@cmenguy, that sounds like a good idea. It will be helpful to many who are trying to setup Dr. Elephant on AWS/EMR. Feel free to initiate and contribute to it. We would be glad to include this feature.
I myself haven't worked on AWS but would be happy to discuss and review this further.

I've actually been running Dr. Elephant on EMR for > 6 months now.  I've used a bootstrap step to install it on the master node of each cluster, (OK, the bootstrap installs my CM tool, which in turn adds Dr. Elephant).  It's pretty trivial to do this.

Hey Brian,
if you can share the details it would be easy for new comers to set Dr.Elephant in EMR. can you share us your bootstrap script and how did you set the below values in EMR
$> export HADOOP_HOME=/path/to/hadoop/home
$> export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
$> export SPARK_HOME=/path/to/spark/home
$> export SPARK_CONF_DIR=/path/to/conf

Hi Selmna,
We have been running Dr Elephant on AWS EMR for past 8-9 months. We have created our own executable file to run Dr elephant on AWS. PM me, I will share the executable with you.

Hi Tushar,
Are you running Dr elephant on a persistent cluster or transient clusters ?
Emailed you.
Thanks.

Hi Akhil,
Share the file over mail. Lets discuss over there.
Thanks.


[Spike] Grant Detail Page v1.0 (MVP)

Background
We'd like to spike the Eng requirements and questions for the MVP of a dedicated Grant Detail Page. The MVP will be Option A in the following PRD: https://www.notion.so/usdr/Grant-Detail-Page-v1-b3459ab7c01b48a484a1d2873e9b88ef?pvs=4
The goal of the spike is: (a) to estimate ENG LOE of delivering the requirements of Option A, which will inform prioritization and timing; (b) identify open questions and ideas related to implementation; and (c) recommend an implementation approach along with a breakdown of Eng tasks.
To note: Designs may not completed when the spike is ready to start. If so, estimates will necessarily be a bit more fuzzy. We do know that we want to keep the content and feature set the same as the current modal UX for the MVP so design changes will be UI focused. Per Caitlin, this may be the first two-column page view we design in the app.
Product Requirements (Option A)
https://www.notion.so/usdr/Grant-Detail-Page-v1-b3459ab7c01b48a484a1d2873e9b88ef?pvs=4#102129a3db42494aa3d44e516c15a5be
Acceptance Criteria

LOE of delivering Option A is estimated (high-level guesstimate)
Open questions / risks identified
Story tickets broken down
TBU by Ty: Explore opps to refactor

@TylerHendrickson Can you have a look at this when you get a chance?
@Lawrence Zhen: Can you drop in your design file :)?
cc @ClaireValdivia

Design file for grants details page: https://www.figma.com/file/yQx55VTr5awPYClHIJCz8y/Grant-Details?type=design&node-id=505-6848&mode=design&t=Kj86V37D5HgoocDU-0
Design currently not finalized but I've been working in the "cw scratch 2" Figma page

Design file for Grant Details, to be reviewed on Mon 1/15:
https://www.figma.com/file/yQx55VTr5awPYClHIJCz8y/Grant-Details?type=design&node-id=1110-2419&mode=design


Storefinder redirects to wrong URL / should work without e2econfigurationwebservices

We received this bug report in Spartacus slack.
Core Spartacus should work purely with OCC and not with extra services like e2econfigurationwebservices. Maybe chat with Walkers or Tobias to see how we can split this out.

1: When I click on Find store button/ Use my location option, it redirects to a wrong url i.e
https://localhost:9002/e2econfigurationwebservices/e2econfiguration/e2egoogleservices.storesdisplayed
and gives a CORS error.
2: View all stores option actually comes up with the response i.e list of stores but didn't show it on the
storefront.
What I found out was there is a findStores() in StoreFinderService which calls getConfiguration() from OccE2eConfigurationService and creates this url /e2econfigurationwebservices/e2econfiguration/e2egoogleservices.storesdisplayed. I am not sure what it's purpose is, any suggestions are appreciable!

Not sure it should be same issue, but if there is anything that directly needs walker's e2e module, that's going to cause a problem. maybe talk with walkers and/or tobias if so.


DropBlocks

hi, this interesting wrapper no longer maintained?

Well I haven't really paid any attention to it in a while (since I haven't used Dropbox in any of my projects for some time). Are you having an issue with it?


Fixed digit precision

Is there the possibility of having fixed digit precision?

input
output

20
20.00

1.3
1.30

You can use the code below:
#import "@preview/oxifmt:0.2.1": strfmt
#strfmt("{:.2} {:.2}", 20.0, 1.3)

Though you will need to write 20.0 (i.e. specify a float) rather than 20. This is consistent with Rust's (our inspiration) behavior, though we could reconsider whether we want to adhere so strictly to that. That could be a separate issue though.

Thank you for the quick reply!
I think sticking to the Rust implementation is a good idea, because it simplifies the package


A scheme for client to realize effective-once

Motivation
In the scenario where Pulsar publishes data, how does Pulsar ensure that data continues to be sent from the previous location when the client crashed? To achieve effectively-once, the data source must be replayable first. For example, let's say we are reading records from a file and publishing a message for each record we read. If this application crashes and restarts, we want to resume publishing from record next to the last successfully published record before the crash. Pulsar provides a deduplication method based on sequenceid. For this, we could use the record offset in the file as the sequence ID and, through that ID, recover which offset we need to read from after the crash:
ProducerConfiguration producerConf = new ProducerConfiguration(); producerConf.setProducerName("my-producer-name");
Producer producer = client.createProducer(topic, producerConf);
// Fictitious record reader class
RecordReader source = new RecordReader("/my/file/path");
long fileOffset = producer.getLastSequenceId(); if (fileOffset > 0) {
    source.seekToOffset(fileOffset);
}
while (source.hasNext()) {
        long currentOffset =            source.currentOffset();
        Message msg = MessageBuilder.create()
        .setSequenceId(currentOffset)
        .setContent(source.next()).build();
        producer.send(msg);
}

Now, let's consider the requirement that there are multiple files. We need to read the records in these files and publish them evenly to a multi partition topic. When the program crashes, we need to know which file and record we published last time? Therefore, we need to map these two data attributes to sequenceid. Let's go further. When users need more data attributes to describe the location of data, users need to map more data attributes to sequenceid. We find that there are some difficulties that make us unable to meet this demand. We list the problems as follows:
1.Users need to map multiple data attributes to sequenceid every time they publish, which may be a time-consuming operation, may have performance problems, and it is difficult to map multiple data attributes to a monotonically increasing 64 bit ID
2.Current producer Getlastsequenceid() can only get the maximum sequenceid of successful publishing of each partition. In the case of multi partition and asynchronous publishing, we can't guarantee that the data of a fileoffset is published successfully, and all previous data are published successfully. Suppose that a record of a smaller fileoffset in a partition is not sent successfully, The larger fileoffset in the other partition was sent successfully, and we restarted from producer If the fileoffset corresponding to getlastsequenceid() continues to be published, data will be lost.
Goal
In order to solve the above problem,We propose a solution:publish with progress.The following changes will be made:
We abstract a Progress interface for users to implement. For example, in the above example, the Progress class implemented by the user needs to include filePath and fileOffset. Each piece of data published by the user needs to carry a Progress object that identifies the piece of data. The new publishing interface will be as follows: sendSync(T msg, Progress progress). We maintain the mapping relationship between the latest sequenceId and the Progress object that has been successfully released inside the sdk, and regularly check this mapping relationship for use in recovery. In this way, the user only needs to carry the Progress when sending, and when recovering, read the minimum publishing progress of each partition from the checkpoint and continue to send.
API Changes
Let's introduce some concepts first:
Progress:
The Progress interface is implemented by the user. By implementing the fields defined in the class, the user can locate a unique piece of data, and use this to locate the next data to be sent.
In order to better understand the Progress interface, we give two examples:
For example, the log collection service collects data from multiple log files and sends them to topics. Progress can be implemented as follows:
public class LogProgress implements Progress{
    long timestamp;
    long inode;
    long offset;

    @override
    public int compareTo(Progress progress) {
        LogProgress other = (LogProgress) progress;
        if (inode = other.inode) {
            if (offset > other.offset) {
                return 1;
            } else if (offset < other.offset) {
                return -1;
            }
            return 0;
        } else {
            if (timestamp > other.timestamp) {
                return 1;
            } else if (timestamp < other.timestamp) {
                return -1;
            }
            return 0;
         }
         return 0;
     }
}

These three fields can uniquely identify the location of a piece of data. After restarting, the information and the corresponding sequenceId can be obtained from the checkpoint (vide infra) and can continue to be sent.
For example, a scenario of streaming Computing: subscribe data from a topic A and publish it to topic B. progress can be realized as follows:
public class SCProgress implements Progress{
    long timestamp;
    MessageId messageId; // subscribed from topic A
    @override
    public int compareTo(Progress progress) {
        SCProgress other = (SCProgress) progress;
        if (timestamp > other.timestamp) {
            return 1;
        } else if (timestamp < other.timestamp) {
            return -1;
        }
        return messageId.compareTo(progress.messageId);
     }
}

ProgressInfo:
It is not exposed to users. It contains the fields of progress and sequenceid, which are used to associate progress and sequenceid.
Progress persistence:
Start the checkpoint thread in the producer, and periodically save the latest published Progress and sequenceId of each partition through the saveProgressInfo of the ProgressInfoStore interface. By default, we provide a way to persist to files, and users can also implement the ProgressInfoStore interface to customize the persistence method. In addition, users can customize the save method through the binary data of ProgressInfo returned by the producer's saveProgressInfo interface.
Progress recovery:
The progress information is loaded into the memory from the persistent place, including the Progress and sequenceId of the last save of each partition, and then set to the initSequenceId of each partition. The user can implement the ProgressInfoStore interface to customize the loading method, and the user can also directly pass in a binary data through the producer's loadProgress(ProgressInfo progressInfoByte) to restore.

1.ProducerConfigurationData Changes
Add the configuration item needProgress to identify whether to enable the publishing mode with progress.
progressCheckpointIntervalSecondes configures the persistence period of progress information, which will be persisted to the local file by default. Users can implement the custom persistence method of ProgressInfoStore.
private boolean needProgress = false;
private long progressCheckpointIntervalSecondes = 60;

2.Add Progress interface
It is implemented by the user adding the required fields, representing the progress information of the user data, and needs to implement the compareTo, deserialize, serialize interfaces.
package org.apache.pulsar.client.api;

import java.io.Serializable;
/**
* Represents the message location, can locate a unique message, must have the characteristics of sequential increase
*/
@InterfaceAudience.Public
@InterfaceStability.Stable
public interface Progress extends Comparable, Serializable {

    /**
    * Serialize the progress object
    * @return the binary data obtained by serializing the progress object
    */
    public byte[] serialize();

    /**
    * Deserialize progressByte to progress object
    * @return object obtained by deserializing progressByte
    */
    public Progress deserialize(byte[] progressByte);
}

3.Add ProgressInfo
Including two members, Progress and sequenceId, this object is stored when doing checkpoint.
package org.apache.pulsar.client.impl;

import org.apache.pulsar.client.api.Progress;

/**
 * A class that maintains the correspondence between progress and sequenceId
 */
public class ProgressInfo {

    private Progress progress;
    private long sequenceId;

    public Progress getProgress() {
        return progress;
    }

    public void setProgress(Progress progress) {
        this.progress = progress;
    }

    public long getSequenceId() {
        return sequenceId;
    }

    public void setSequenceId(long sequenceId) {
        this.sequenceId = sequenceId;
    }
}

4.Add ProgressManager
A class for managing progress-related operations, where lastProgressPublished represents the progress and sequenceId of the successfully published msg, and lastProgressPushed represents the progress and sequenceId of the msg that has been sent but has not yet received an ack.
package org.apache.pulsar.client.impl;

import org.apache.pulsar.client.api.Progress;

public class ProgressManager {

    /**
     * ProgressInfo of the message that has been sent and received an acknowledgment
     */
    public ProgressInfo lastProgressInfoPublished;

    /**
     * ProgressInfo has been sent for messages that have not yet received an acknowledgment
     */
    public ProgressInfo lastProgressInfoPushed;

    public void updateLastProgressInfoPublished(Progress progress, long sequenceId) {
        lastProgressInfoPublished.setProgress(progress);
        lastProgressInfoPublished.setSequenceId(sequenceId);
    }

    public void updateLastProgressInfoPushed(Progress progress, long sequenceId) {
        lastProgressInfoPushed.setProgress(progress);
        lastProgressInfoPushed.setSequenceId(sequenceId);
    }

    public ProgressInfo getLastProgressInfoPushed() {
        return lastProgressInfoPushed;
    }

    public ProgressInfo getLastProgressInfoPublished() {
        return lastProgressInfoPublished;
    }

    /**
     *  recover progressInfo from progressByte
     * @param progressByte the binary data obtained by saveProgress
     * @return progressInfo
     */
    public ProgressInfo loadProgressInfo(byte[] progressByte){
        // recover progress from progressByte
        lastProgressInfoPublished = lastProgressInfoPushed = null;
        return lastProgressInfoPublished;
    }

    /**
     * serialize the progressInfo into binary data
     * @return
     */
    public byte[] saveProgressInfo(){
        return null;
    }

}

5.Add ProgressInfoStore interface.
The user implements the persistence method of binary data obtained by calling producer.saveProgress(). We provide the default implementation of ProgressInfoStore, FileProgressInfoStore, which is persisted to local files.
package org.apache.pulsar.client.impl;

/**
 * persistent progressInfo
 */
public interface ProgressInfoStore {

    /**
     * read progressInfo into binary
     * @return
     */
    byte[] readProgressInfo();

    /**
     * persistent progressInfo
     * @param progressInfoByte
     */
    void writeProgressInfo(byte[] progressInfoByte);
}

6.Add ProgressMessageImpl
On the basis of messageimpl, add the member variable progress.
public class ProgressMessageImpl<T> implements Message<T> {

    private final Message<T> msg;

    public Progress progress;

    public ProgressMessageImpl(Message<T> msg, Progress progress) {
        this.msg = msg;
        this.progress = progress;
    }
}

7.Producer interface changes.
/**
* Send a message asynchronously.
*
*
When the producer queue is full, by default this method will complete the future with an exception
* {@link PulsarClientException.ProducerQueueIsFullError}
*
*
See {@link ProducerBuilder#maxPendingMessages(int)} to configure the producer queue size and
* {@link ProducerBuilder#blockIfQueueFull(boolean)} to change the blocking behavior.
*
*
Use {@link #newMessage()} to specify more properties than just the value on the message to be sent.
*
* @param message
* a byte array with the payload of the message
* @param progress
* the attribute of the data used to locate the data
* @return a future that can be used to track when the message will have been safely persisted
*/
CompletableFuture<MessageId> sendAsync(T msg, Progress progress);

/**
* recover the progressInfo of each partition from progressByte, and return the minimum progress
* @param progressByte
* progress information of each partition，this information can be generated by calling saveprogress
* @return the minimum progress
*/
Progress loadProgressInfo（byte[] progressByte);

/**
* serialize the progressInfo of each partition into binary data
* @return binary data composed of the progress and sequenceId of each partition
*/
byte[] saveProgressInfo();

/**
* recover the progressInfo of each partition from progressInfoStore, and return the minimum progress
* @param progressByte
* progress information of each partition，this information can be generated by calling saveprogress
* @return the minimum progress
*/
Progress loadProgressInfo();

/**
* store the progressInfo of each partition into progressStore
* @return binary data composed of the progress and sequenceId of each partition
*/
void saveProgressInfo();

/**
* compare the progress of each partition to return the minimum progress
* @return the minimum progress
*/
Progress getMinProgress();

8.PartitionedProducerImpl and ProducerImpl changs
New method that implements the Producer interface. ProducerImpl adds ProgressManager members. PartitionedProducerImpl will traverse and call the methods of each partition producer to implement its own loadProgress, saveProgress and getMinProgress, and they will eventually call the corresponding methods of ProgressManager.
ProducerBase:
@Override
public CompletableFuture<MessageId> sendAsync(T message, Progress progress) {
    if (!conf.isNeedProgress()) {
        // exception
    }
    try {
        return newMessage().value(message).progress(progress).sendAsync();
    } catch (SchemaSerializationException e) {
        return FutureUtil.failedFuture(e);
    }
}

@Override
public Progress loadProgressInfo() {
    byte[] progressInfo = progressInfoStore.readProgressInfo();
    return this.loadProgress(progressInfo);
}

@Override
public void saveProgressInfo() {
    byte[] progressInfo = this.saveProgress();
    progressInfoStore.writeProgressInfo(progressInfo);
}

PartitionedProducerImpl:
@Override
public void loadProgressInfo(byte[] progressByte) {
    if (!conf.isNeedProgress()) {
        return;
    }
    producers.values().stream().forEach(producer -> {
        byte[] partitionProgressBuf = null;
        // split progressBuf
        producer.loadProgress(partitionProgressBuf);});
}

@Override
public byte[] saveProgressInfo() {
    if (!conf.isNeedProgress()) {
        return null;
    }
    byte[] progressByte = null;
    producers.values().stream().forEach(
            producer -> {
                byte[] partitionProgressBuf = producer.saveProgress();
                // assembling progressBuf
            }
    );
    return progressBuf;
}

@Override
public Progress getMinProgress() {
    Progress minProgress = null;
    for (ProducerImpl<T> producer : producers.values()) {
        Progress progress = producer.queryMinProgress();
        if (minProgress == null) {
            minProgress = progress;
        } else {
            if (minProgress.compare(progress) < 0) {
                minProgress = progress;
            }
        }
    }
    return null;
}

ProducerImpl:
private ProgressManager progressManager;

@Override
public void loadProgressInfo(byte[] progressByte) {
    if (conf.isNeedProgress() && progressManager != null) {
       ProgressInfo progressInfo = progressManager.loadProgress(progressBuf);
        this.lastSequenceIdPublished = progressInfo.getSequenceId();
        this.lastSequenceIdPushed = progressInfo.getSequenceId();
        this.msgIdGenerator = progressInfo.getSequenceId() + 1L;
    }
}

@Override
public byte[] saveProgressInfo() {
    if (conf.isNeedProgress() && progressManager != null) {
        return progressManager.saveProgress();
    }
    return null;
}

@Override
public Progress getMinProgress() {
    ProgressInfo persistentProgressInfos = progressManager.getPersistentProgressInfos();
    if (persistentProgressInfos != null) {
        return persistentProgressInfos.getProgress();
    }
    return null;
}

9.TypedMessageBuilderImpl and TypedMessageBuilder interface changes
Add progress members. Modify getMessage and return the ProgressMessageImpl object if publishing with progress is configured. TypedMessageBuilder:
/**
 * Sets the progress of the message.
 * This progress can locate the message.
 * @param progress the progress of the message
 * @return the message builder instance
 */
TypedMessageBuilder<T> progress(Progress progress);

TypedMessageBuilderImpl:
public Message<T> getMessage() {
    beforeSend();
    MessageImpl<T> messageImpl = MessageImpl.create(msgMetadata, content, schema, producer != null ? producer.getTopic() : null);
    if (progress != null) {
        return new ProgressMessageImpl<>(messageImpl, progress);
    }
    return messageImpl;
}

10.Add ProgressSendCallback
Add progress members based on SendCallback
package org.apache.pulsar.client.impl;

import org.apache.pulsar.client.api.Progress;

/**
 * SendCallback with progress
 */
public interface ProgressSendCallback extends SendCallback{

    /**
     * Set the progress of the message corresponding to this callback
     * @param progress
     */
    public void setProgress(Progress progress);

    /**
     * return the progress of the message corresponding to this callback
     * @return the progress of the message corresponding to this callback
     */
    public Progress getProgress();

}

11.OpSendMsg class changes
Add the lastCallback field, so that it is convenient to get the sendCallback of the last data in the entry when the ack is received.
protected static final class OpSendMsg {
    SendCallback lastCallback;
    static OpSendMsg create(List<MessageImpl<?>> msgs, ByteBufPair cmd, long sequenceId,
                        SendCallback callback, SendCallback lastCallback) {
        OpSendMsg op = RECYCLER.get();
        op.msgs = msgs;
        op.cmd = cmd;
        op.callback = callback;
        op.sequenceId = sequenceId;
        op.createdAt = System.nanoTime();
        op.uncompressedSize = 0;
        op.lastCallback = lastCallback;
        for (int i = 0; i < msgs.size(); i++) {
            op.uncompressedSize += msgs.get(i).getUncompressedSize();
        }
        return op;
    }

    static OpSendMsg create(List<MessageImpl<?>> msgs, ByteBufPair cmd, long lowestSequenceId,
                            long highestSequenceId,  SendCallback callback, SendCallback lastCallback) {
        OpSendMsg op = RECYCLER.get();
        op.msgs = msgs;
        op.cmd = cmd;
        op.callback = callback;
        op.sequenceId = lowestSequenceId;
        op.highestSequenceId = highestSequenceId;
        op.createdAt = System.nanoTime();
        op.uncompressedSize = 0;
        op.lastCallback = lastCallback;
        for (int i = 0; i < msgs.size(); i++) {
            op.uncompressedSize += msgs.get(i).getUncompressedSize();
        }
        return op;
    }
}

12.Add ProgressPartitionMessageRouterImpl
Since each partition maintains the distribution progress independently, it is necessary to ensure that the same data can be sent to the same partition every time.
package org.apache.pulsar.client.impl;

import org.apache.pulsar.client.api.HashingScheme;
import org.apache.pulsar.client.api.Message;
import org.apache.pulsar.client.api.Progress;
import org.apache.pulsar.client.api.TopicMetadata;

import static org.apache.pulsar.client.util.MathUtils.signSafeMod;

public class ProgressPartitionMessageRouterImpl extends MessageRouterBase {
    private static final long serialVersionUID = 1L;

    public ProgressPartitionMessageRouterImpl(HashingScheme hashingScheme) {
        super(hashingScheme);
    }

    @Override
    public int choosePartition(Message<?> msg, TopicMetadata topicMetadata) {
        // If the message has a key, it supersedes the round robin routing policy
        if (msg.hasKey()) {
            return signSafeMod(hash.makeHash(msg.getKey()), topicMetadata.numPartitions());
        }
        if (!(msg instanceof ProgressMessageImpl)) {
            // exeception
        }
        ProgressMessageImpl progressMessage = (ProgressMessageImpl) msg;
        Progress progress = progressMessage.getProgress();
        return signSafeMod(progress.hashCode(), topicMetadata.numPartitions());
    }
}

Implementation

In order to let us understand its principle and implementation details more clearly, let's look at a specific example, which includes the process of publishing, client crashing, and restarting to continue publishing.

The left side of the figure is the user's data, assuming that its progress has only one field. a, b, c, and d represent the value of the progress, and the right side is the two partitions of the topic.

Now we assume that the number of packets is 2 and start sending data.

The data is sent successfully, we update the progress of each partition, for example, the partition1 is (progress:b, sequenceId:2).Assuming that checkpoint is triggered at this time, the persistent progress information of each partition is partition1:(progress:b, sequenceId:2), partition2:(progress:d, sequenceId:2).

Several pieces of data msg5~msg8 were released.

The client crashed. We noticed that the client's persistent progress information at this time is partition1:(progress:b, sequenceId:2), partition2:(progress:d, sequenceId:2). The lastSequenceId of both partitions of the broker is 4

The client executes loadProgress to recover the progress information from the checkpoint and loads it into memory. Obtain the minimum publishing progress b at this time, and find the last published data according to the progress b and resend it.

Continue to publish msg3, and msg3 is routed to partition2. Since the progress c of msg3 is not greater than the progress d of partition2, it is deduplicated.

Continue to publish msg5 and msg6, their progress is greater than the progress b of partition1, and will not be deduplicated by the client, but because their sequenceId is not greater than 4 in the broker, they are deduplicated by the broker.

Continue to publish msg7 and msg8. Their progress is greater than the progress d of partition2 and will not be deduplicated by the client, but because their sequenceId is not greater than 4 in the broker, they will be deduplicated by the broker.

Continue to publish msg9 and msg10, the comparison progress and sequenceId will not be deduplicated, the publish is successful, and the progress information will be updated

Demo
PulsarClient client = PulsarClient.builder()
    .serviceUrl(url)
    .authentication(AuthenticationFactory.token("eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9..."))
    .build();
Producer<byte[]> producer = client.newProducer()
    .topic(topic)
    .producerName("test")
    .create();
// Recovery progressInfo to memory from progress store and get the current minimum progress
Progress minProgress = producer.loadProgressInfo();
// Get the next message to be sent and the corresponding progress according to the minProgress
// ...
// progressAfterMinProgress1 is the next send position of minProgress
producer.send(msg1, progressAfterMinProgress1);
producer.send(msg2, progressAfterMinProgress2);
// ...

If you need pdf. here:
A.plan.for.client.to.realize.effective-once.pdf

@1559924775 - are you able to make this plain markdown? It'd be easier to review, searchable within github, and wouldn't require downloading a pdf. Thanks.

@michaeljmarshall  OK.


[BUG] Failing to create Tests using REST API - but can create Load Tests

Describe the bug
I am using an Azure App Registration to create Azure Load Tests. I am able to create a Load Test and retrieve it.
However when I attempt to create a test on that load test using the dataPlaneUri, I am denied access.
My App has scopes for loadtests.read and loadtests.write.
To Reproduce

Create an Azure app registration
Add Apis for loadtests.read and loadtests.write
Authenticate from Postman and receive bearertoken
Create Load Test and receive dataplaneuri
Create Test using Patch instruction
Error

Error message
Bearer error="invalid_token", error_description="S2S17001: SAL was able to validate the protocol, but validation failed as none of the inbound policies were satisfied. Validation failures: '6ddb9c11-a689-43ec-b923-c673c49dea0c: InvalidAudience."
Additional context
My bearertoken will allow me to create the load tests, but not to create the tests on the load test.
AB#1680254

@patmci... does your app have the required roles? can you refer this

@patmci Can you try generating the access token with scope "https://cnt-prod.loadtesting.azure.com/.default"? I assume the token generated did not use any scope/audience

@patmci... does your app have the required roles? can you refer this

Hi, thanks for this - I can confirm that the App has the contributor role on Load Test

@patmci Can you try generating the access token with scope "https://cnt-prod.loadtesting.azure.com/.default"? I assume the token generated did not use any scope/audience

How would I add a scope like this in an Azure App Registration?

@Harshan01 can you please help with this?

Thanks I got this working. I needed token with a resource of https://management.azure.com/ to create the load test.
As per @Harshan01 I was missing the scope https://cnt-prod.loadtesting.azure.com/.default for the PATCH operation.
So I ended up with 2 tokens, 1 with the resource in the header to get the dataplaneuri from LoadTest and one with the scope in the header using the dataplaneuri to create the test


Readme docs

update readme

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

Project coverage is 93.49%. Comparing base (2c530e5) to head (30a53e6).

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##             main       #2   +/-   ##
=======================================
  Coverage   93.49%   93.49%
=======================================
  Files           1        1
  Lines         338      338
=======================================
  Hits          316      316
  Misses         16       16
  Partials        6        6

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


MySQL error

Description
I have a problem with LuckPerms reading mysql database. Also, according to luckperms wiki with mysql issues, everything should be working. MySQL connection limit is also enough as all luckperms instances own fifth of whole limit. I can't join server because of that error and I need it to work
Reproduction Steps
Will not be possible for you so I will tell how I made it:
-Installed bungee on my whole network (also in bungeecord plugins itself)
-Changes server names to correct ones
-Set storage system to MySQL and paste all data needed
Also maybe worth noting that:

My bungee and hub is hosted on hosting, survival server connected to bungee is hosted on VPS
Other plugins that need to use MySQL are working without any issue on the same database

Expected Behaviour
I expect MySQL to work so i can normally configurate bungee permissions
Server Details
Paper version git-Paper-790 (MC: 1.16.5) (Implementing API version 1.16.5-R0.1-SNAPSHOT)
LuckPerms Version
BG: 5.3.75 HUB: 5.3.74 SV: 5.3.47
Logs and Configs
https://paste.gg/p/anonymous/c8e3a8df4bb04501a79a42814ec25f66
Extra Details
As in description, I have checked wiki and every step is correct in my situation. No idea what could be wrong. Also I know that you may not have much time to check, answer etc. but please help ASAP cuz I need it as soon as possible :f

This particular 'failure to connect' error is caused by javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
If you don't want to use SSL, set useSSL in the config to false.
Also, you mentioned that you installed "bungee" on all the servers - if you want to use LP properly, you install LP-Bungee only on the proxy (bungee, waterfall, etc) and then you install LP-Bukkit on each backend. Then you connect each server to the same database.
Hope this solves your issue - please let me know if it does!

Yes it did work, thank you so much mate :D


Can't fetch Shopify schema

apollo-codegen introspect-schema http://<IP_ADDRESS>:8080/api/shopify/graphql-proxy --output 123.json
error: Errors in introspection query result: [object Object]

No, it's my proxy bugoing


Skip the problematic getClass() definitions in Scala 2 prim classes.

Review by @nicolasstucki

this should be reopened, I didn't see the review notice


[top_earlgrey,tests] Fix clkmgr_external_clk_src_for_sw_slow_test_fpga_cw310_test_rom

Description
This test is failing on the cw310 fpga: only the main clk gets a measurement error, all others clocks are okay. The ...for_sw_fast..." test works okay.

It turns out the measurements of main in slow speed correspond to the expected values for fast. This means the main clk seems to be running at 96 MHz rather than the expected 48 MHz. In sim_dv main runs at the expected 48 MHz. Seems like an FPGA bug, since in silicon the external clock is used for calibration, and that flow works.

The FPGA doesn't support a physical external clock, nor having the main clock at a lower frequency. I think we can close this and accept that the test is not supported on FPGA, then. Throwing in an alternate clock and muxing it out would consume already very impacted clocking resources on the CW310.


Comment experiment integration

Can view comments of an experiment. "View My Experiments" is still hardcoded.

Fixed merge conflicts. Mostly small differences:

Location of semicolons
differences in imports
differences in code comments


Module not found: Error: Cannot resolve 'file' or 'directory' ./../../../node_modules/css-loader/index.js

New to webpack but after several tries I can't manage css-loader to work.
For example I want to use, this example:
https://github.com/ShMcK/WebpackAngularDemos/tree/master/Part3
And after try to run webpack I receive several errors, related to css-loader & style-loader, every other loader seems to be working fine.
ERROR in ./core/nav/nav.scss
Module not found: Error: Cannot resolve 'file' or 'directory' ./../../../node_modules/css-loader/index.js in C:\xampp\htdocs\webpack/app\core\nav
@ ./core/nav/nav.scss 4:14-126 13:2-17:4 14:20-132
Enviroment:

Tested on two separate environments:
Windows 10Pro & 8.1 Pro
npm 3.3.10
node 4.2.1

I also has this issues

I also has this issues

Same issues for me.
https://github.com/opendivision/React-ES6-Boilerplate
Tried "--save", "--save-dev", but no change.

change APP = __dirname + '/app'; to var APP = path.resolve(__dirname, 'app')

I am experiencing the same issues:
Windows 10 Pro
npm 2.14.12
node 4.3.0

For me in Windows 8.1 inside webpack.config.js after doing following change solved issue above:
context: path.resolve(__dirname, 'app')

@bharatpatil Thank you, this works for me.
I have windows environment.

:+1:

@bharatpatil Thank you, this works for me.


Color variable seemingly not passed to generated button element

Ionic version:  (check one with "x")
(For Ionic 1.x issues, please use https://github.com/ionic-team/ionic-v1)
[ ] 2.x
[ ] 3.x
[x] 4.x
I'm submitting a ...  (check one with "x")
[x] bug report
[ ] feature request
Please do not submit support requests or "How to" questions here. Instead, please use one of these channels: https://forum.ionicframework.com/ or http://ionicworldwide.herokuapp.com/
Current behavior:

The generated button element does not display the passed primary-text-md-light color but instead looks to prefer the regular primary color when inspecting the generated css:
.button-clear-md {
    border-color: transparent;
    color: var(--ion-color-md-primary,var(--ion-color-primary,#488aff));
    background-color: transparent;
    box-shadow: none;
    opacity: 1;
}

Additionally, neither of the components in @ionic/core seems to respond to using color literals, eg. #fff, #ffffff, rgb(255, 255, 255) or rgba(255, 255, 255, 1), as arguments for the color property, is this a bug or by design?
Expected behavior:

The button element should display the passed primary-text-md-light color.
Steps to reproduce:

Related code:

$colors: (
  primary:               #488aff,
  secondary:             #32db64,
  danger:                #f53d3d,
  light:                 #f4f4f4,
  dark:                  #222,
  primary-text-md-light: rgba(#000000, 0.871)
);

<ion-button color="primary-text-md-light" fill="clear">Button text</ion-button>

Other information:

Ionic info: (run ionic info from a terminal/cmd prompt and paste output below):
cli packages: (C:\Users\Jacob\AppData\Roaming\npm\node_modules)

    @ionic/cli-utils  : 1.19.1
    ionic (Ionic CLI) : 3.19.1

global packages:

    cordova (Cordova CLI) : 8.0.0

local packages:

    @ionic/app-scripts : 3.1.8
    Cordova Platforms  : android 7.0.0
    Ionic Framework    : ionic-angular 3.9.2

System:

    Android SDK Tools : 26.1.1
    Node              : v6.5.0
    npm               : 5.5.1
    OS                : Windows 10

Environment Variables:

    ANDROID_HOME : C:\ProgramData\Android\android-sdk

Misc:

    backend : pro

I am not sure if you are trying to use just a css file or SCSS but in SCSS I do:
.button-clear-md {
    border-color: transparent;
    color: color($colors, 'primary-text-md-light');
    background-color: transparent;
    box-shadow: none;
    opacity: 1;
}

Additionally, as far as I know when it comes to the color property on buttons you need to use variable colors not actual colors.

I see, that doesn't really help me though as I need to set the color via TypeScript.

Not quite sure what you mean, you could bind the color to a variable and set the variable value to the name of your scss variable ie: primary?

Hey maybe I can help out here. Apologies for the lack of documentation on this, I am hoping to get to putting together something more visible soon, but for now here are the main points.
With ionic 4 there was a move to pure CSS for theming. Ionic itself, internally, is using sass but when compiled out it is all pure CSS.
Out of the box you will have the following color options available.
primary
secondary
tertiary
success
warning
danger
light
medium
dark

Those are translated to css variables in the following form
--ion-color-primary
--ion-color-secondary
--ion-color-tertiary
...

So setting --ion-color-primary anywhere in your application would cascade down and apply to any element under it. For example using :root would apply to everything
:root {
  --ion-primary-color: #ff0000;
}

or you could target a specific button by class if needed
.my-fancy-button {
  --ion-primary-color: #ff0000;
}

This can also be done at runtime using setProperty
const el = document.querySelector('.my-fancy-button');
el.style.setProperty('--ion-primary-color', '#ff0000');

It is also important to remember that an ionic color is not just one value. It is actually 5, and it is important to set all of these colors as they are always considered to be in sync. A color should be made up of base, contrast, shade, tint and rgb. They are broken down as follows
--ion-color-[name]-[variation]

base is always the variable name without a variation
For example primary would look like the following
*base*: --ion-color-primary
*contrast*: --ion-color-primary-contrast
*shade*: --ion-color-primary-shade
*tint*: --ion-color-primary-tint
*rgb*: --ion-color-primary-rgb

in CSS they would look like this
--ion-color-primary: #488aff;
--ion-color-primary-rgb: 72,138,255;
--ion-color-primary-contrast: #ffffff;
--ion-color-primary-shade: #3f79e0;
--ion-color-primary-tint: #5a96ff;

I know this might seem a bit confusing, and sadly it all comes down to CSS not supporting any color modification methods (mixing colors, tint, shading, etc) but its really not to bad, here is a general rule on how to create these.

base: The main color you would like to use.
contrast: A color then when applied over base would result in readable text
shade: A slightly darker version of base. Ionic defaults to base mixed with 12% black
tint: A slightly lighter version of base. Ionic currently defaults to base mixed with 10% white
rgb: The RGB list version of base. This is used to allow variable alpha colors

Looking back at your code example I am seeing that you are attempting to add a new color to the color map. This is not possible in CSS but would be possible in SCSS. In order to do this you would need to rebuild ionic from source with your new color map variable.
Again ionic uses SCSS but it only compiles out CSS, so if you want your custom color to be applied in all the right styles you would need to do this compilation step. Hopefully you are able to use one of the colors provided in css (maybe secondary or tertiary?) otherwise you are always welcome to tinker with the SCSS in the source itself and pump out some custom CSS for your specific application.
In the Ionic 4 source you no longer need to provide everything to the color map. You are able to simply take over a single color or just add one of your own. For example to add a custom quaternary color it could look like this
$colors:              (
  quaternary: (
    base: #ff0000,
    contrast: #ffffff,
    base: #ae0000,
    base: #ff3633,
    rgb: unquote("255,0,0")
  )
)

I hope this helps, if you have any other questions I will do my best.

Thanks for the issue! I am going to close this as the original issue should be resolved by switching to css variables. Please see my comment here for how to add a new color: https://github.com/ionic-team/ionic/issues/14624#issuecomment-402795342
If you are still seeing an issue with the latest beta please create a new issue. Thanks!


WebAPI connector error suggesting to use itself.

The learn more link points directly to the Load from the web section which contradictory to the error message.

To load a JSON file from the web, select the Web connector, enter the web address of the file, and follow any credential prompts.

Another matter I'm facing is figuring out hosts and headers relevant for setting the right CORS policies on the backend (APIM), the closest I've gotten so far is the application ids used by the different services providing dataflows. Supported workflow.  Information or reference on this subject would be useful.

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

ID: cb0f1a2b-b9a7-5fad-546b-007cf208df47
Version Independent ID: aa7c597e-2dea-b0d8-ba9b-65b4f9aaaca8
Content: Power Query JSON connector - Power Query
Content Source: powerquery-docs/Connectors/JSON.md
Service: powerquery
GitHub Login: @bezhan-msft
Microsoft Alias: bezhan

Thanks @Hjaf for your dedication to our documentation. Unfortunately, at this time we have been unable to review your issue in a timely manner and we sincerely apologize for the delayed response. However, this appears to be product feedback or a request for product support. For information about customer support for Power Query connectors, go to Power Query connector feedback.
We are closing this issue for now, but if you feel that it's still a concern, please respond and let us know. If you determine another possible update to our documentation, please don't hesitate to reach out again. #please-close


Implement Discovery Section

This implements the Discovery Section.
Note the approach to clearing the other and dgmqid fields when the Discovery Process select box is changed.  If this approach seems valid, it should be implemented elsewhere as well.

Nice! I did simplify your batching logic just a bit, but otherwise this looks good to go!

Thanks, @noranda.  That's weird, because I swear when I tried to take those if statements out before, it was clearing the other field even if I selected Other again (instead of changing it to something else).  And with those conditionals in there, it felt a little too much for inlining.  But... of course, with your change that's not happening so... 🤷♂.


Suggestions for documentation

I noticed some things while going through your (very impressive) project:

I would suggest to edit this line https://github.com/gustaveroussy/sopa/blob/3577f9d93a82af96e8a15d3b1f4a607e017b34a2/workflow/config/example_commented.yaml#L86 to make it more clear that this is telling Sopa about the state that the reference scRNA is in and not what action should be performed on the reference, that was confusing to me

In the Snakemake tutorial https://gustaveroussy.github.io/sopa/tutorials/snakemake/ I would also add the line

# this generates a 'tuto.zarr' directory
sopa read . --sdata-path tuto.zarr --technology uniform

from the CLI tutorial, as the code below otherwise wont work

In the html report you show the Per-cell intensity for every channel, but there is no legend mapping the colors in the diagram to the channels

Hello @pakiessling,
Thanks for this very relevant advice:

Indeed, it was not clear. I updated it, what do you think?
https://github.com/gustaveroussy/sopa/blob/67c877c37531d2c4f26c36e1d766031651d9a0fa/workflow/config/example_commented.yaml#L86
Yes I realized this, it was fixed in a previous commit: I updated the Snakefile so that snakemake doesn't complain for the tutorial. The line you mentioned should not be necessary anymore. Can you try with the latest version (or pull from master, if you cloned the repo)?
Good catch: I provided the legend, but my "HTML engine" was not detecting and thus not displaying the legend

Everything should be fixed in the master branch, and I will soon release a new version :)

I like it a lot!


Openstack Keystone V3 Credential validation was not successful with domain different than default

Hello,
I'm currently testing the version of ManageIQ Euwe-RC2.
It is not possible to add a cloud provider with this configuration:

type : Openstack
API version : KeystoneV3
Region:regioOne
Keystone v3 Domain ID : domain different than default (for example companyName)
zone : default (can't be changed in grey)
with admin credentials of the domain

Indeed, with this configuration the system is returning:

However, I can add the cloud provider with the default domain:

type : Openstack
API version : KeystoneV3
Region:regioOne
Keystone v3 Domain ID : default
zone : default (can't be changed in grey)
with admin user credentials
The credential validation is successful.

@miq-bot assign @aufi

@verlaine Hi, two possible reasons come to my mind.

The field Keystone v3 Domain ID should contain ID of domain, not name (default domain is a special case, it has name Default and ID default), please ensure you enter domain ID there (hash-like string).

Please check if your user, which you use in create provider form, has an admin role on given domain.

Let me know if it works, thanks!

Out of interest, is "Zone" used in this configuration now?

Hello @aufi
1- I tried with the domain id instead of the domain. But I still get the login failure message.
2- I also confirm that the user I'm using is an admin of openstack (admin role)
Do you have some ideas ?
Best,

Then please check evm.log if there is something interesting. Currently I have no other ideas. Maybe @petrblaho did use Keystone v3 domains recetly, would you have any ideas Petr?

Hi @verlaine , is this still the issue?
As @aufi wrote, please, check evm.log and fog.log for errors or post these files somewhere and we can help.

Hi everyone,
I'm facing similar issue with latest ManageIQ release (euwe-1) when trying to connect an Openstack resource using Keytone v3. I'm unable to connect MIQ to it using V3 (required as I'm using multi-domain/tenant feature).
From what I saw until now, V3 require Domain ID/name and Project ID/name as mandatory fields in request form. It results a credential error falsely reported (error 401).
Using v3 with default admin domain & project works without problem.
[----] E, [2017-01-17T09:16:57.085882 #2990:f0b8c4] ERROR -- : MIQ(ManageIQ::Providers::Openstack::CloudManager#verify_api_credentials) Error Class=Excon::Error::Unauthorized, Message=Expected([201]) <=> Actual(401 Unauthorized) excon.error.response
  :body          => "{\"error\": {\"message\": \"The request you have made requires authentication.\", \"code\": 401, \"title\": \"Unauthorized\"}}"
  :cookies       => [
  ]
  :headers       => {
    "Connection"             => "close"
    "Content-Length"         => "114"
    "Content-Type"           => "application/json"
    "Date"                   => "Tue, 17 Jan 2017 08:16:56 GMT"
    "Server"                 => "Apache"
    "Vary"                   => "X-Auth-Token"
    "WWW-Authenticate"       => "Keystone uri=\"http://<IP_ADDRESS>:5000\""
    "x-openstack-request-id" => "req-6990d773-b30b-4e6a-a6b0-aacc51e29e4d"
  }
  :host          => "<IP_ADDRESS>"
  :local_address => "<IP_ADDRESS>"
  :local_port    => 48404
  :path          => "/v3/auth/tokens"
  :port          => 5000
  :reason_phrase => "Unauthorized"
  :remote_ip     => "<IP_ADDRESS>"
  :status        => 401
  :status_line   => "HTTP/1.1 401 Unauthorized\r\n"

[----] W, [2017-01-17T09:16:57.085953 #2990:f0b8c4]  WARN -- : MIQ(ManageIQ::Providers::Openstack::CloudManager#authentication_check_no_validation) type: ["default"] for [] [mos] Validation failed: invalid, Login failed due to a bad username or password.
[----] E, [2017-01-17T09:16:57.086103 #2990:f0b8c4] ERROR -- : MIQ(ems_cloud_controller-create): Credential validation was not successful: Login failed due to a bad username or password.

Openstack CLI have the same requirement when using it with Keystone v3.

Hi, in ManageIQ only Domain ID should be needed. This strongly depends on Openstack Keystone User configuration. Can you check if the user you are using has an admin role on given domain? CloudForms can do different calls to different services than some basic Openstack CLI commands. That could cause auth failures depending on keystone policy file.

@aufi Our Openstack is configured to restrict access per scope per project (project-scope). User I've been using since then only have admin access to some project and since ManageIQ API request is domain-scoped, it failed (error 401).  That's the reason why I talked about the Project ID/name. In fact, when using Openstack client and API with v3, both of them require to specify Domain and Project ID/name.
Since then, I tried with an account with admin role on the domain, and MIQ gave me the following message:

Having a closer look on what ManageIQ send (dump), I see the following:

Token request  (POST /v3/auth/tokens, domain-scoped), endpoints received
Request project list from user (GET /v3/users//projects), project list received
Request a new token using previous token (project-scoped), endpoints received

And then nothing more. Logs are not really helpful:

[----] I, [2017-01-25T17:33:29.431406 #2943:10a46b8]  INFO -- : MIQ(ManageIQ::Providers::Openstack::CloudManager#with_provider_connection) Connecting through ManageIQ::Providers::Openstack::CloudManager: []
[----] E, [2017-01-25T17:33:29.949995 #2943:10a46b8] ERROR -- : MIQ(ManageIQ::Providers::Openstack::CloudManager#verify_api_credentials) Error Class=MiqException::ServiceNotAvailable, Message=MiqException::ServiceNotAvailable
[----] W, [2017-01-25T17:33:29.950094 #2943:10a46b8]  WARN -- : MIQ(ManageIQ::Providers::Openstack::CloudManager#authentication_check_no_validation) type: ["default"] for [] [] Validation failed: invalid, Unexpected response returned from system: MiqException::ServiceNotAvailable
[----] E, [2017-01-25T17:33:29.950226 #2943:10a46b8] ERROR -- : MIQ(ems_cloud_controller-create): Credential validation was not successful: Unexpected response returned from system: MiqException::ServiceNotAvailable

Just for information, Openstack works without problem with other CMP.

Hi @cepedajc, thanks for detailed description. ManageIQ does not require Project ID because it tries autenticate user, list all projects available for him and get auth tokens for all accessible projects.
The ServiceNotAvailable Error can use caused by missing Keystone v3 service or endpoint in Openstack catalog. If it looks to be missing in your Openstack deployment, try
$ keystone service-create --name keystonev3 --type identityv3 --description "Keystone Identity Service v3"
$ keystone endpoint-create --region regionOne --service keystonev3 --publicurl "http://10.0...:5000/v3" --adminurl "http://192.0....:35357/v3" --internalurl "http://172.16...:5000/v3"

Hi @aufi, thanks for the answer. Problem was indeed related to keystonev3 service missing. Now ManageIQ seems to work. Only remains the "problem" to use a domain admin account to connect resource.
Thanks again! Problem resolved!

@cepedajc I'm happy to hear that! The problem with admin role access will most propably persist for some time due to current architecture of the Openstack provider.

According to https://github.com/ManageIQ/manageiq/issues/13135#issuecomment-275379254 the issue seems to be resolved, closing.
@miq-bot close_issue


French Translation

Whole french translation translated by Esieespace Association.
Thanks to :

People
Translations

loann.boudin
371

remi.boidet
168

johana.cohen
104

alexandre.guignard
69

taha.bentahir
60

antoine.bessiere
53

louis.desplanche
37

wallerand.delevacq
9

thomas.verite
2

@wallforfry Thanks to everyone who was involved in this translation!


Protein fit tools and objects

This PR contains a number of enhancements to, and bug fixes for, the protein objects available in molgroups.mol.
ProteinBox -- a Box2Err that allows for H and D nSLDs as well as volume fraction specification.
TetheredBoxDouble -- a Box2Err constrained to lie between two fixed points in space (useful for composite objects where the fixed points might move around)
ContinuousEulerMissingResdiues -- a composite object containing a ContinuousEuler object and any number of missing residues represented by TetheredBoxDouble and thus tethered to the z-positions of the residues to which they are attached.
BLMProteinComplex and Hermite also have a few bug fixes with the volume calculations and the recalculate flag, and ContinuousEuler.pdbto8col has a bug fix.

molstat conflict can be ignored. It's a one-line change which I will make in the scattertools repo

Sounds good. Thanks a lot for the commits.
--
Frank Heinrich
e-mail: @.***
Carnegie Mellon University
Physics Department
Pittsburgh PA 15213
NIST Center for Neutron Research
100 Bureau Drive
Gaithersburg MD 20899 - 6102
phone: ++1<PHONE_NUMBER>
fax:       ++1<PHONE_NUMBER>

On Jun 2, 2023, at 4:09 PM, David P. Hoogerheide @.***> wrote:
molstat conflict can be ignored. It's a one-line change which I will make in the scattertools repo
—
Reply to this email directly, view it on GitHub https://github.com/criosx/molgroups/pull/56#issuecomment-1574258762, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACNKEAYGMWHXBBGD7DLZRO3XJJB6ZANCNFSM6AAAAAAYYXVTUM.
You are receiving this because you are subscribed to this thread.


[Feature, Request], When, to, support, Vue, 2.4.x

Existing Component
否
Component Name
no
Description
I wan't to use the vue 2.4.x syntax on element component.
But I see the<EMAIL_ADDRESS>dependencies<EMAIL_ADDRESS>thanks.

You can use Vue 2.4.x syntax.

sorry, i use the v-on={} syntax in the table component , but didn't take effect.
you can see: https://jsfiddle.net/2yevmqwj/
when i select the checkbox, thehandleSelectionChange function doesn't execute.

https://jsfiddle.net/2yevmqwj/1/

oh, my mistake, thanks very much.


Fix verify_memorybackend in riak_test for RIAK-2061

Add riak_core_vnode:get_modstate/1 to expose underlying module state
for testing

For complete details see https://github.com/basho/riak_test/pull/821

:+1: 8ca135e

@borshop merge


feat(deps): adopt flatten plugin and google-cloud-shared-dependencies

@stephaniewang526 @chingor13

Blocked by bad IT test

tests are being addressed in #164

 java.lang.AssertionError: Operation failed: Error{errors=[Errors{code=RESOURCE_IN_USE_BY_ANOTHER_RESOURCE, location=null, message=The network resource 'projects/gcloud-devel/global/networks/test-network-d07a4442' is already being used by 'projects/gcloud-devel/global/firewalls/test-network-d07a4442-ew5artidjtpbhbxye3jxlwmi'}]} looks there is still one IT failure


Update AI Ship Design To Commit to Beams or Torpedoes on a single design

Mixing torpedo and beam weapons is not a viable ship design in Stars! Recommend updating the AI ship design to commit to either beam or torp weapons for a single design. I don't know how to code, so you'll have to figure out items in brackets. Hope this helps.
craig-stars/cs/shipdesign.go
case HullSlotTypeWeapon:
			[make decision matrix beams vs. missiles, or keep it random for now, if designed in an odd year, make torpedos, if even make beams?]
			//hull should commit to a single weapon type
			if [beam ship/even year/whatever] {
				slot.HullComponent = beamWeapon.Name
				numBeamWeapons++
			} else {
				slot.HullComponent = torpedo.Name
				numTorpedos++
			}

General slots for fighter-type hulls should be set to weapons, to maximize combat ability. Added case ShipDesignPurposeFighter to do this. This would impact the design of destroyers, cruisers, and dreadnaughts only.
case HullSlotTypeGeneral:
			switch purpose {
			case ShipDesignPurposeFuelFreighter:
				slot.HullComponent = fuelTank.Name
				numFuelTanks++
			case ShipDesignPurposeColonizer:
				// balance fuel and cargo, fuel firsts
				if numFuelTanks > numCargoPods && cargoPod != nil {
					slot.HullComponent = cargoPod.Name
					numCargoPods++
				} else {
					slot.HullComponent = fuelTank.Name
					numFuelTanks++
				}
			case ShipDesignPurposeFighter:
				//adds the same weapons in GP slots for fighters
				if numTorpedos > numBeamWeapons {
					slot.HullComponent = torpedo.Name
					numTorpedos++
				} else {
					slot.HullComponent = beamWeapon.Name
					numBeamWeapons++
				}
			case ShipDesignPurposeFighterScout:
				if numScanners == 0 {
					slot.HullComponent = scanner.Name
					numScanners++
				} else {
					slot.HullComponent = beamWeapon.Name
				}
			default:
				if numScanners == 0 {
					slot.HullComponent = scanner.Name
					numScanners++
				} else {
					slot.HullComponent = fuelTank.Name
					numFuelTanks++
				}
			}
		}

Only destroyers have straight mechanical slots. If it is a beamer ship, it should have a jet or thruster, if not you can put on a fuel tank. Added case ShipDesignPurposeFighter to do this, but I didn't know how to write the code to add thrusters.
case HullSlotTypeMechanical:
			switch purpose {
			case ShipDesignPurposeFuelFreighter:
				slot.HullComponent = fuelTank.Name
				numFuelTanks++
			case ShipDesignPurposeFreighter:
				fallthrough
			case ShipDesignPurposeColonistFreighter:
				// add cargo pods to freighters if we have a ramscoop
				if engine.FreeSpeed > 1 && cargoPod != nil {
					slot.HullComponent = cargoPod.Name
					numCargoPods++
				}
			case ShipDesignPurposeColonizer:
				if colonizationModule != nil && numColonizationModules == 0 {
					numColonizationModules++
					slot.HullComponent = colonizationModule.Name
					slot.Quantity = 1 // we only need 1 colonization module
				} else {
					// balance fuel and cargo, fuel firsts
					if numFuelTanks > numCargoPods {
						slot.HullComponent = cargoPod.Name
						numCargoPods++
					} else {
						slot.HullComponent = fuelTank.Name
						numFuelTanks++
					}
				}
			case ShipDesignPurposeFighter
				//Destroyers are the only Fighter Hull that has a straight mechanical slot
				if [beam ship/even year/whatever] {
					[add maneuvering jet or overthurster]
				} else {
					slot.HullComponent = fuelTank.Name
					numFuelTanks++
				}
			default:
				slot.HullComponent = fuelTank.Name
				numFuelTanks++
			}

Are there use cases where you'd want beams over torpedos or vice versa? Are beams better for attack ships or defense ships? I tend to pick beams if I have a high enough movement, but eventually go all torpedo once delta+ are there.

Most fights take place at either beam range or torpedo range, so mixing the two doesn't work. Either going full torpedoes or full beams is superior to a mix.
Before capital ship missiles, (tech 12) and their double damage against unshielded targets, I generally go beams as well. The last time the beams are effective (without chaff) one-v-one is probably tech 16. But I am not an expert player.
However, beam fleets are cheaper, and have less mass (and thus gatable by non-IT folk), so they can serve as a "barbarian horde" strategy (i.e., smaller fleets of ships hitting you everywhere). AIs that want to make a lot of smaller invasion fleets might lean into beams, while AIs making super big fleets should probably go with torpedoes.


Hack for multi-target postgrestd

To use this make sure that if you're on x86_64, then the environment is like

CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc
CARGO_TARGET_AARCH64_POSTGRES_LINUX_GNU_LINKER=<same thing>
And vice versa for x86_64. Then it should work. Depends on https://github.com/tcdi/postgrestd/pull/18

Thanks for the PR.  I'm taking this over as part of an upcoming PR.


Azure Update Management - Automation account stuck at loading

Version (1.3.2105.24004)
To Reproduce
Steps to reproduce the behavior:

Go to my server
Click on update, sign in Azure account, Update Now to
Centrally manage updates on all of your servers by using Azure Update Management
Choose my Azure Subcription, use my log analytics workspace, use my automantion account
stuck on loading for my automation account

Expected behavior
I'm try to add local servers in my Azure Update Management from WAC. When I arrive to Automation Account, it stuck at loading. No error message, just looping. We already have 10 local (physical and VM) servers in my Azure Update Management.
I found that we have some UI error in the event log : msft.sme.windows-update
source : appErrorHandler
timestamp :<PHONE_NUMBER>385
message : ajax error 400
or
msft.sme.packetmon!main: RemoteException: The term 'pktmon' is not recognized as the name of a cmdlet
and in the dev tool of the browser (Firefox or Edge) we have this :
{"error":{"code":"AuthenticationFailed","message":"Authentication failed. The 'Authorization' header is missing."}}
Screenshots & Additional context

Hello @gbelangeiro,
This has been fixed. We will push out an update to the extension soon.

When will this be pushed? Im having problems adding a customers server to Azure Update Management, its exactly this issue. Its been almost 3 weeks since you wrote that it would be pushed out "soon".

@trungtran-msft  @andersgidlund
Can confirm I'm also having this issue, first server add OK but then after that others do not and get stuck. I'm on version 1.3.2111.01001

Just updated WAC to latest version 2110 and it appears to have lost connectivity to Azure Update Management. I'm trying to fix it but experiencing the same issue as this post - stuck at loading existing automation accounts.

Hello @gbelangeiro,
This has been fixed. We will push out an update to the extension soon.

How is it going with this issue?

@andersgidlund The problem is always there.
@trungtran-msft Any update ???

Still an issue today.  Automation fails with invalid request.

Receiving a 400 error when trying to load the automation accounts. It appears that the API version is not compatible with the resource provider.
{"error":{"code":"NoRegisteredProviderFound","message":"No registered resource provider found for location 'westcentralus' and API version '2020-03-01-preview' for type 'automationAccounts'. The supported api-versions are '2015-01-01-preview, 2015-10-31, 2017-05-15-preview, 2018-01-15, 2018-06-30, 2019-06-01, 2020-01-13-preview, 2021-04-01, 2021-06-22'. The supported locations are 'japaneast, eastus2, westeurope, southafricanorth, ukwest, switzerlandnorth, brazilsoutheast, norwayeast, germanywestcentral, uaenorth, switzerlandwest, japanwest, uaecentral, australiacentral2, southindia, francesouth, norwaywest, westus3, swedencentral, southeastasia, southcentralus, northcentralus, eastasia, centralus, westus, australiacentral, australiaeast, koreacentral, eastus, westus2, brazilsouth, uksouth, westcentralus, northeurope, canadacentral, australiasoutheast, centralindia, francecentral, jioindiawest, jioindiacentral, canadaeast'."}}

Still a problem

Has this been fixed yet?

I apologize for the delay. The fix went out in November but it appears that the fix for this has been regressed. I've already made the engineers aware and will hopefully have it fixed.

Thanks @trungtran-msft for the update.

I apologize for the delay. The fix went out in November but it appears that the fix for this has been regressed. I've already made the engineers aware and will hopefully have it fixed.

What does this mean exactly? Was it fixed and pushed but  then the same error arised again or was the fix missed in the November update?

I apologize for the delay. The fix went out in November but it appears that the fix for this has been regressed. I've already made the engineers aware and will hopefully have it fixed.

Could you provide an update please? Are we waiting on a new update for WAC to be released?

Saw that a patch was released for WAC but no mention of this being fixed.

Saw that a patch was released for WAC but no mention of this being fixed.

@MarcLaf I have applied the WAC update, but this is still an issue. (I believe its isolated down to the extension its self.)
I find it disappointing that this has been an issue for over 6+ months with no fix in sight. I'm aware that I can manually link the servers to Azure Update outside of WAC, but if MS actually wants us to use this tool and, more importantly, convince others to do so as well then we need more communication and updates. (At least the long running RBAC bug that was introduced a while ago after an update was addressed in this update!)

@winmasterxp I'm beginning to think it was caused by permission requirement changes in Azure but haven't been able to pinpoint where or what. Every so often I try looking around to verify that it's all setup properly but it's a bit of a jumble.

Resource to 2110.2 release blog: https://techcommunity.microsoft.com/t5/windows-admin-center-blog/windows-admin-center-version-2110-2-is-now-generally-available/ba-p/3294253

Hi @RebeccaMbulaMs thank you for getting in touch. I'd love to be able to test it in the new release but the auto update function still isn't working and the scheduled install date is the 12th on my console. I would try to manually install it however the quest to find the install file has put me on a wild goose chase around in circles with zero luck. I keep getting redirected to either https://www.microsoft.com/en-us/download or running Windows Server on Azure. I'm starting to think I'm losing my mind. Even the direct link https://www.microsoft.com/en-us/windows-server/trial which I thought had the files doesn't. There's not even a "download" on this page.

Yes, just checked and confirmed the link to the .2 release is not accessible. I am really sorry about this. I have filed an bug on the updates issue and put it for triage. I will get you a working link.

@MarcLaf I've always used the https://aka.ms/wacdownload webpage. This gives me the 2110.2 download.

Thank you @jkoch22 , yes, this is the link for the 2110.2 release. @MarcLaf would you mind if you could try it and send me an update to see if the issue is still present?

@RebeccaMbulaMs I'm currently on 2110.2 and my update extension is version 2.9.0. Unfortunately, it doesn't work.

@winmasterxp Thank you for confirming this to me. I will file this as a bug and hopefully have updates on it soon!

@RebeccaMbulaMs I just tested and yes it's the same for me too - hangs at loading automation account.

@MarcLaf Thank you for that.
Just looked into the bug from our end and it was marked as resolved. I have reopened it and we are looking into it.
Thank you for your patience!

Hello everyone,
Yesterday on a whim, I decided to see if this was still and an issue and to my surprise, I was able to add several severs to Azure Update Management. I checked and I'm still on build 2110.2 (Version 1.3.2204.19002) & my update extension is still 2.9.0 so I'm guessing the issue was resolved on the back end.

@winmasterxp I just tried it and although it doesn't spin anymore and I can proceed with the option to add a server to AUM (and it says successful), after refreshing the page it appears to not stick. The server doesn't actually get added to AUM and I can go through the steps again with the same results. So it looks half fixed for me.

WAC works fine right now after update can add systems to update


[Question]: Session Manangement using Redis Chat Store with ChatMemoryBuffer guide

Question Validation

[X] I have searched both the documentation and discord for an answer.

Question
Im building a enterprise grade chatbot using llamaindex condense context chat engine, python and using redis chat store for chat conversation memory..i need to ensure session management which includes both Chronological Messaging and Concurrent Session management capabilities
any guidance for that

@dosu im using redis hosted in Azure so i have passed redis url and created chat store
chat_store = RedisChatStore(redis_url=REDIS_CONNECTION_STRING, ttl=300)
chat_memory = ChatMemoryBuffer.from_defaults(
token_limit=3900,
chat_store=chat_store,
chat_store_key="user1",
)
chat_engine = index.as_chat_engine(
chat_mode="condense_plus_context",
memory=chat_memory,
llm=llm,
context_prompt=ContextPrompt,
condense_prompt= CondensePrompt,
streaming = True,
verbose=True,
)
should i pass session id in chat engine?

@dosu this will preserve the session id, user id and conversation history in redis ?
all of them
per user
per session?

Thanks

@dosu chat_store = RedisChatStore(redis_url=url, ttl=300) This doesnt connect to Redis for me cant we pass ssl or other params with this

@dosu llamaindex chat_engine.chat do not take session id as a parameter

@dosu but i also want to take into account user id per session id to maintain both chronology and concurrency
both session id and user id will be needed correct?

@dosu url = f"redis://:{REDIS_PASSWORD}@{REDIS_HOST}:6379"
def create_key():
session_id = str(shortuuid.uuid())
user_id = str(shortuuid.uuid())
key=f"{session_id}__{user_id}"
return key
chat_store = RedisChatStore(redis_url=url, ttl=300)
chat_memory = ChatMemoryBuffer.from_defaults(
token_limit=3900,
chat_store=chat_store,
chat_store_key=create_key()
)
the chatbot is working and i can have a conversation but i cant see any writes in azure redis
its not giving any errors also...but i cant see anything getting written in azure redis as well
if i do chat_store.get_keys() i see the keys created, in the chat_store.get_messages(key) i see  conversation but nothing in azure redis

@dosu but here we are using Redischatstore to enable the storage of chat history chat_store = RedisChatStore(redis_url=url, ttl=300)
should the redis kv store be used to store chat conversations?

@dosu how to manually persist and load the chat history in a remote db
pls show

@dosu How can I integrate RedisChatStore in query engine instead of chat engine?


Exception running gettext.extractor with no parameters.

I am testing GetText.NET.Extractor but I cannot make it work:
dotnet tool install --global GetText.NET.Extractor
gettext.extractor --version
1.0.5+d63f2976f1

However If I run gettext.extractor with no parameter, I get:
Unhandled exception: System.ArgumentException: The SetHandler call for command 'GetText.Extractor' is missing an Argument or Option for the parameter at position 4. Did you mean to pass one of these?

   at System.CommandLine.Handler.GetValueForHandlerParameter[T](IValueDescriptor[] symbols, Int32& index, InvocationContext context)
   at System.CommandLine.Handler.<>c__DisplayClass23_0`5.<SetHandler>b__0(InvocationContext context)
   at System.CommandLine.Invocation.AnonymousCommandHandler.InvokeAsync(InvocationContext context)
   at System.CommandLine.Invocation.InvocationPipeline.<>c__DisplayClass4_0.<<BuildInvocationChain>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass20_0.<<UseParseErrorReporting>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass13_0.<<UseHelp>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass24_0.<<UseVersionOption>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass22_0.<<UseTypoCorrections>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<UseSuggestDirective>b__21_0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass19_0.<<UseParseDirective>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<RegisterWithDotnetSuggest>b__6_0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass9_0.<<UseExceptionHandler>b__0>d.MoveNext()

This was fixed in v 1.1.4 of the extractor, see here https://github.com/perpetualKid/GetText.NET/issues/33.
To get timely attention to Extractor issues, please post in the related GH repo https://github.com/perpetualKid/GetText.NET


package-lock: Bump autokit to v1.0.33

Change-type: patch
Flashing test results in https://github.com/balena-os/balena-jetson-orin/pull/466#issuecomment-2217768956

superseded by https://github.com/balena-os/leviathan-worker/pull/118


🐞 [Bug]: User can not edit ssh key

Is there an existing issue for this?

[X] I have searched the existing issues

which package/s did you face the problem with?
Dashboard
What happened?
one a user created or import an ssh key he can not edit it or change any field

the ssh key
the name

Steps To Reproduce
No response
which network/s did you face the problem on?
Dev, QA
version
2.4
Twin ID/s
No response
Node ID/s
No response
Farm ID/s
No response
Contract ID/s
No response
Relevant screenshots/screen records

Relevant log output
NA

Work In Progress:

changed fields to be editable.
added save button.
working on error happens because i copy selectedKey from props to track changes done by user.

fixed and verified on devnet
version : 2b7ab4e
field is editable and even you can not change ssh to another created one

https://app.testlodge.com/a/26076/projects/40893/suites/234374?expand_section=430164#case_4293756


Make live demo more prominent in README.md

Also hi Josh!

PTAL @majapw!
(Also hi Maja!)

I think once you rebase, we can merge this in! Probably we want this above the How to use.

Haha I was trying to do this entirely through GitHub's web interface. Guess that's not going to work anymore.
Will do.


QueryDSL generates an extra left join for nested object queries

Observed vs. expected behavior
Checkout the following repository
https://github.com/rburgst/querydsl-join-problem
this shows problem when generating
a JPA query for a nested object graph.
QGrandChild grandChild = QGrandChild.grandChild;
        QChild child = grandChild.child;
        QParent parent = child.parent;
        JPAQuery<QGrandChild> query = new JPAQuery<>(entityManager);

        JPAQuery<Projection> finalQuery = query.from(grandChild)
                .join(child)
                .join(parent)
                .select(
                        Projections.constructor(
                                Projection.class,
                                parent.name,
                                child.name,
                                grandChild.name
                        )
                )
                .where(grandChild.name.isNotNull())
                .orderBy(child.name2.lower().asc());
        return finalQuery.fetch();

For this query QueryDSL causes the JPA query
to contain extra left joins.
How to reproduce

run the application via ./gradlew bootRun
watch the logs

The logs will show the following query:
select p2_0.name, c2_0.name, gc1_0.name
from grand_child gc1_0
         join child c1_0 on c1_0.id = gc1_0.child_id
         join parent p1_0 on p1_0.id = c1_0.parent_id
         left join child c2_0 on c2_0.id = gc1_0.child_id
         join parent p2_0 on p2_0.id = c2_0.parent_id
where gc1_0.name is not null
order by lower(c2_0.name2)

Notice the 2nd left join to the child table.
Expected behavior
The query should not contain the 2nd left join.
select p.name, c.name, gc.name
from grand_child gc
         join child c on c.id = gc.child_id
         join parent p on p.id = c.parent_id
where gc.name is not null
order by lower(c.name2)

Steps to reproduce

Environment
Querydsl version: 5.0.0
Querydsl module: com.querydsl:querydsl-jpa:5.0.0:jakarta
Database: h2
JDK: 17
Additional details

the problem seems to go away if I create aliases
    public List<Projection> findAllProjectionsSorted() {
        QGrandChild grandChild = QGrandChild.grandChild;
        QChild child = grandChild.child;
        QChild aliasChild = new QChild("c");
        QParent parent = child.parent;
        QParent aliasParent = new QParent("p");
        JPAQuery<QGrandChild> query = new JPAQuery<>(entityManager);

        JPAQuery<Projection> finalQuery = query.from(grandChild)
                .join(child, aliasChild)
                .join(parent, aliasParent)
                .select(
                        Projections.constructor(
                                Projection.class,
                                aliasParent.name,
                                aliasChild.name,
                                grandChild.name
                        )
                )
                .where(grandChild.name.isNotNull())
                .orderBy(aliasChild.name2.lower().asc());
        return finalQuery.fetch();
    }
    ```

Querydsl doesn't generate the SQL by itself, that is done by Hibernate. Probably what is going on here is that by the definition of the JPQL query language the attribute name gets precedence over the entity name.

I disagree. The code path that causes this is in querydsl


Adjust BDD tests for operator changes

Many thanks for submitting your Pull Request :heart:!
Please make sure that your PR meets the following requirements:

[ ] You have read the contributors' guide
[ ] Pull Request title is properly formatted: [KOGITO-XYZ] Subject
[ ] Pull Request contains a link to the JIRA issue
[ ] Pull Request contains a description of the issue
[ ] Pull Request does not include fixes for issues other than the main ticket
[ ] Your feature/bug fix has a unit test that verifies it
[ ] You've tested the new feature/bug fix in an actual OpenShift cluster

Do not merge yet....

[WIP]


Ubuntu22.04.1 display error

myAvalonia app set
Setter Property="SystemDecorations" Value="None"
it works well  on windows/Ubuntu20.04.3 ,
but it works badly on Ubuntu22.04.1  some areas become tansparent or black when i scroll the listbox how can i fix the problem?
here are the show pictures

It seems when  thecontrol's background is set to Transparent, it will cause this problem,how can i fixed it?

Disable GPU rendering. It happens on all Linux distros I've tried with GPU rendering enabled.
BuildAvaloniaApp().With(new X11PlatformOptions { UseGpu = false }).StartWithClassicDesktopLifetime(args);


Add another overloading of CommandAPI.fail to take an argument of a supplier for failure message

Please describe your suggestion
The idea is to allow a developer to supply a message with a supplier to provide the failure message of a command. This could be useful for language systems where the plugin may send the command result to each player in a different language.
Possible code option
public static void fail(Supplier<String> messageSupplier) throws WrapperCommandSyntaxException {
    throw new WrapperCommandSyntaxException(new SimpleCommandExceptionType(new LiteralMessage(messageSupplier.get())).create());
}

Hold on. What's to stop you from say, using this:
CommandAPI.getInstance().register("locale", null, (s, a) -> {
    Player p = (Player) s;
    CommandAPI.fail(I18N.getErrorMessage(p.getLocale()));
});

where I18N is some generic I18N class:
class I18N {
    public static String getErrorMessage(String locale) {
        switch(locale) {
            case "en_us":
                return "An error message";
            case "fr_fr":
                return "Un message d'erreur";
            //Insert other cases here
            default:
                return "This locale is not supported";
        }
    }
}

If my understanding is correct, the idea of using a supplier is such that when the error executes, it can generate a String at runtime (i.e. at the time when the command is run). This is currently the case when using a regular String.
This basically makes it no different to using a String verses using a Supplier<String>
This code is basically the same as using the following - there's no benefit over using a Supplier<String> over a regular String
CommandAPI.fail(() -> I18N.getErrorMessage(p.getLocale()));

Due to the reasons stated above, there's no benefit to overloading CommandAPI.fail with a Supplier<String> argument, because the CommandAPI.fail method should be used whilst a command is running (i.e. inside the command executor lambda), which is evaluated at execution time (which is the same time when the supplier would be evaluated).
Since they're both being evaluated at the same time, this makes the Supplier redundant.
Therefore, I will not be implementing a Supplier<String> method for the upcoming 2.1 release or any future releases.


Add label 'name' to tasks metric

This PR adds a second label name to the celery_tasks metric.

@rangermeier Thank you again and sorry for the delay. I will try to take a look at it this week :)


Data extraction notebook

Added notebook for data extraction. Comments and text describing process is also provided. One can easly recreate this workflow.

Hi @space-lab-sk, I have added readme file.


The initials are same for every participant (regardless of their names) in CallComposite

We are using the CallComposite component to join to an already existing teams meeting created through the Graph API.
When the user joins, all the participants that are already in the call and also the ones that join after, have the same initials in their avatar as what the user itself has.
Expected behaviour would be for all the participants to have their own correct intials shown in their corresponding avatar.

@azure/communication-react npm package version : 1.17.0

OS: Windows 10 on PC

Browser: Google Chrome

Browser Version: 126.0.6478.62

Hi I'm looking into the issue, thanks for bring it up!

Hi do you mind sharing some code snippets of how you are using the calling composite so we can debug what's the issue here?

@carocao-msft
I have found the problem, it was on our end.


Add ecto 1.1.0 support

The upgrade to new phoenix (1.1) fails with error:
Looking up alternatives for conflicting requirements on postgrex
Activated version: 0.9.1
From mix.exs: >= 0.0.0
From ecto v1.1.0: ~> 0.10
From scrivener v1.1.0: ~> 0.9.0
** (Mix) Hex dependency resolution failed, relax the version requirements or unlock dependencies

@TakteS I actually just upgraded Scrivener to 1.1.1 to fix this issue. Please trying using 1.1.1 and let me know if it is still a problem.

Ok, I'll try

Yah. This helped. Update version to in the your README.md in the installation section :)

The version in the README uses the pessimistic operator ~> 1.0 and would pick up this new version. I'm going to go ahead and close this issue. Thanks!