[RFC] Support for transactions' actions

Current views for refund / return&refund are strictly dedicated to payment plugins and sinle payment attached to the order. The proposed changes introduce better flow of handling transactions' actions like capture or refund and returns.
The design changes: https://www.figma.com/file/ZSAaKFWi05Weyuyy7GsAR4/Saleor-Dashboard-v4.0?node-id=13029%3A71454
Proposed changes:
Grant Refund

Grant refund mutations
The new object will be assigned to the order. It determines the amount of the refund granted for the order. The next step is to trigger a refund.
input.amount is an amount of granted refund
input.message is the short description of the granted refund, like: incorrect product/ included shipping costs etc

type GrantedRefund {
  amount: Money
  requester: App | User
  message: String
  created: DateTime
}

type Mutation{
  orderGrantRefundCreate(
    id: ID!,
    input: {
      amount: Money
      message: String
    }
  ): GrantedRefund

  orderGrantRefundUpdate(
    id: ID!,
    input: {
      amount: Money
      message: String
    }
  ): GrantedRefund

Note requester: App | User will work only if App /User exists. I think this is enough for now. In the future we could consider extending this part, to provide some denormalized data related to user/app.

Order changes

"""Represents an order in the shop."""
type Order implements Node & ObjectWithMetadata {
  id: ID!

  ...
  """List of all granted refunds"""
  grantedRefunds: [
    GrantedRefund!
  ]!
  """ Total amount of granted refund """
  grantedRefund: Money!

  """Sum of  order.transactions.all().refundedAmount"""
  settledRefund: Money!

  """Sum of  order.transactions.all().pendingRefundAmount"""
  pendingRefund: Money!

  """Amount that is not yet refunded: grantedRefund - settledRefund - pendingRefund """
  unsettledRefund: Money!
}

Workflow
The idea is that we use grantRefund mutation to declare what amount should be refunded by someone with handle payment permissions. It doesn't have any impact on order values as this is only the "declaration" of future refund.

Manual transactions
We will allow the creation of new transactions by staff users who have assigned permission handle_payments. Previously all transaction mutations  (transactionCreate, transactionUpdate) were requiring an app token.
The idea of this change is to give a staff user the possibility to create a manual transaction in a case when payment has been processed in a different channel than we support (for example: refund has been made in cash etc).

Transaction changes
The transaction object will get a field createdBy that will store User or App object. Depends on who is the creator of the transaction.

type TransactionItem {
   ...
   createdBy: App | User
}

Note createdBy: App | User will work only if App /User exists. I think this is enough for now. In the future we could consider extending this part, to provide some denormalized data related to user/app.

Warning [HELP NEEDED] The one thing that I am worried about with this approach is: that we allow to modify the transaction (transactionUpdate mutation), which means that someone different could modify the transaction's data.  In that case I am not sure if we should track the last editor or only a creator of the transaction. Or maybe we should not allow to modify user's transactions?

Request Refund

Workflow
The idea for requesting a refund is to give a staff user (with handle payments permission) the possibility to trigger a request for a refund. The granted refund amount created in the previous step should be helpful in creating a new request refund.
Calling mutation TransactionActionRequest will also create a  new transactionEvent with status REQUEST, amount and the requester (user/app). The responsibility of the App will be updating Saleor with information that the action is pending. If the refund(action) is pending/success. In case of pending refund, the app should also update pendingRefundAmount for the transaction.

sequenceDiagram
    Staff ->>+ Saleor: Request refund
[transactionActionRequest]
    Saleor ->> Saleor: Create REQUEST event for transaction
    Saleor ->> Saleor: Schedule transaction action webhook
    Saleor -->>- Staff: Requested
    Saleor --) App: Send async action
request webhook
    App ->>+ PaymentProvider: Request refund
    PaymentProvider -->>- App: Processing refund
    App ->>+ Saleor: Update transaction
 with pending status
 and pendingRefundAmount
    Saleor -->>- App: Updated

The user requested a refund, Saleor created a new transactionEvent with status REQUEST, amount equal to provided in the request, and attached user. The webhook is scheduled.
When app receives an async webhook, it starts to process an action (REFUND on the charts). It triggers a refund request on the payment provider side. If the processing refund is not synchronous operation, app should update a Saleor with information that the refund is pending. App should call transactionUpdate mutation with updated pendingRefundAmount, and the transactionEvent with a proper name(like Pending refund) and status: pending.
sequenceDiagram
    PaymentProvider ->>+ App: Refund processed
    App ->>+ Saleor: Update transaction
 status
 and refundedAmount
    Saleor -->>- App: Updated
    App -->>- PaymentProvider: OK

When the app receives an asynchronous notification from payment provider that action has been processed, it should update the amounts and create new transactionEvent with proper name and status: success

transactionItem changes

"""The input used in transactionCreate mutation"""
input TransactionCreateInput {
  ...
  """Amount that defines pending refund"""
  amountPendingRefund: MoneyInput

  """The url that will allow to redirect user to payment provider page with transaction details"""
  referenceURL: String
}

"""The input used in transactionUpdate mutation"""
input TransactionUpdateInput {
  ...
    """Amount that defines pending refund"""
  amountPendingRefund: MoneyInput

    """The url that will allow to redirect user to payment provider page with transaction details"""
  referenceURL: String
}

""" The input used in transactionCreate/transactionUpdate for creating a `TransactionEvent` object """
input TransactionEventInput{
  ...
  """ By providing `actionType` details we will have more context about the event's action that occurred. Like we could make an event with status REQUEST that is related to REFUND actionType.
OR We could make an event with status SUCCESS, with actionType related to CHARGE"""
  actionType: TransactionEventActionType

  """The amount related to this event."""
  amount: Money
}

type TransactionItem implements Node & ObjectWithMetadata {
  ...
   """Amount that defines pending refund"""
  pendingRefundAmount: Money
  """The url that will allow to redirect user to payment provider page with transaction details"""
  referenceURL: String
}

type TransactionEvent implements Node {
  ...
    """ By providing `actionType` details we will have more context about the event's action that occurred. Like we could make an event with status REQUEST that is related to REFUND actionType.
OR We could make an event with status SUCCESS, with actionType related to CHARGE"""
  actionType: TransactionEventActionType

    """The amount related to this event."""
  amount: Money
}

enum TransactionEventActionType{
  CHARGE
  REFUND
  VOID
}
enum TransactionStatus {
  ...
  """The event with this status will be created by Saleor each time when staff user will trigger a transaction action request."""
  REQUEST
}

Return & Replace
The transaction actions are not related to return & replace feature. The one thing is that we need to drop the current refund logic embedded in return views.
Schema changes
type Mutation{
...
  """DEPRECEATED. We don't mix in refund & return. The mutation that was creating a RefundFulfillment will be depreceated."""
  orderFulfillmentRefundProducts(
    """Fields required to create an refund fulfillment."""
    input: OrderRefundProductsInput!

    """ID of the order to be refunded."""
    order: ID!
  ): FulfillmentRefundProducts

    orderFulfillmentReturnProducts(
    """Fields required to return products."""
    input: OrderReturnProductsInput!

    """ID of the order to be returned."""
    order: ID!
  ): FulfillmentReturnProducts
}

input OrderReturnProductsInput {
  ...
  """DEPRECEATED. The fields related to refunds will be deprecated. It will not work when the order has attached transactions. It will still allow the processing of old payments. """
  amountToRefund: PositiveDecimal

  """DEPRECEATED. The fields related to refunds will be deprecated. It will not work when the order has attached transactions. It will still allow the processing of old payments. """
  includeShippingCosts: Boolean = false

  """DEPRECEATED. The fields related to refunds will be deprecated. It will not work when the order has attached transactions. It will still allow the processing of old payments. """
  refund: Boolean = false
}

Future steps:

Migrate refund fulfillments and refund&return fulfillments in Saleor 4.0 when we will drop payment plugins.

Example workflow
Return products and refund when payment provider processes refund asynchronously
sequenceDiagram
    Staff ->>+ Saleor: Create return
fulfillments for 2
 products (total : 50 USD)
    Saleor -->>- Staff: Created
    Staff ->>+ Saleor: Create granted
refund of 50 USD
    Saleor -->>- Staff: Granted refund created
    Staff ->>+ Saleor: Request refund
[transactionActionRequest]
    Saleor ->> Saleor: Create REQUEST event for transaction
    Saleor ->> Saleor: Schedule transaction action webhook
    Saleor -->>- Staff: Requested
    Saleor --) App: Send async action
request webhook
    App ->>+ PaymentProvider: Request refund
    PaymentProvider -->>- App: Processing refund
    App ->>+ Saleor: Update transaction
 with pending status
 and pendingRefundAmount
    Saleor -->>- App: Updated
    Note over Saleor,PaymentProvider: Async notification
    PaymentProvider -)+ App: Refund processed
    App ->>+ Saleor: Update transaction
 status
 and refundedAmount
    Saleor -->>- App: Updated
    App --)- PaymentProvider: OK

Return products and refund when payment provider processes refund synchronously
sequenceDiagram
    Staff ->>+ Saleor: Create return
fulfillments for 2
 products (total : 50 USD)
    Saleor -->>- Staff: Created
    Staff ->>+ Saleor: Create granted
refund of 50 USD
    Saleor -->>- Staff: Granted refund created
    Staff ->>+ Saleor: Request refund
[transactionActionRequest]
    Saleor ->> Saleor: Create REQUEST event for transaction
    Saleor ->> Saleor: Schedule transaction action webhook
    Saleor -->>- Staff: Requested
    Saleor --) App: Send async action
request webhook
    App ->>+ PaymentProvider: Request refund
    PaymentProvider -->>- App: Refunded
    App ->>+ Saleor: Update transaction
 with success status
 and refundedAmount
    Saleor -->>- App: Updated

Impact

[ ] New migrations
[ ] New/Updated API fields or mutations
[ ] Deprecated API fields or mutations
[ ] Removed API types, fields, or mutations
[ ] Documentation needs to be updated

Pull Request Checklist

[ ] Privileged queries and mutations are guarded by proper permission checks
[ ] Database queries are optimized and the number of queries is constant
[ ] Database migration files are up to date
[ ] The changes are tested
[ ] GraphQL schema and type definitions are up to date
[ ] Changes are mentioned in the changelog

TransactionCreateInput only accepts amountPendingRefund
"""The input used in transactionCreate mutation"""
input TransactionCreateInput {
  ...
  """Amount that defines pending refund"""
  amountPendingRefund: MoneyInput

  """The url that will allow to redirect user to payment provider page with transaction details"""
  referenceURL: String
}

The one thing that I am worried about with this approach is: that we allow to modify the transaction (transactionUpdate mutation), which means that someone different could modify the transaction's data. In that case I am not sure if we should track the last editor or only a creator of the transaction. Or maybe we should not allow to modify user's transactions?

I think we should allow editing user transactions. It's easy to image a situation where I messed up the transaction amount by one 0 and now I want to fix it. I think it's fine as long, as we store a log of transaction changes.

TransactionCreateInput only accepts amountPendingRefund?
"""The input used in transactionCreate mutation"""
input TransactionCreateInput {
  ...
  """Amount that defines pending refund"""
  amountPendingRefund: MoneyInput

  """The url that will allow to redirect user to payment provider page with transaction details"""
  referenceURL: String
}

@timuric  There are ....It just shows the new added fileds. I didn't add whole input to better show a new ones

The one thing that I am worried about with this approach is: that we allow to modify the transaction (transactionUpdate mutation), which means that someone different could modify the transaction's data. In that case I am not sure if we should track the last editor or only a creator of the transaction. Or maybe we should not allow to modify user's transactions?

I think we should allow editing user transactions. It's easy to image a situation where I messed up the transaction amount by one 0 and now I want to fix it. I think it's fine as long, as we store a log of transaction changes.

@witoszekdev Yeah, that is clear, but the thing that I am worried about is: what should happen with the user attached to the transaction, when someone edit the transaction's data.
Example:
You create a manual capture transaction for 50USD, Saleor attach you to created transaction. Then I am taking transaction created by you, and modify the data like 50USD -> 5USD. Which staff user should be stored in transaction data? You as you are the creator of the transaction OR me as a last editor of the transaction?

Maybe amount and created should be required?
type GrantedRefund {
  amount: Money!
  requester: App | User
  message: String
  created: DateTime!
}

I suggest that we always use the word total for denormalized fields that are sums of other fields (like grantedRefund).
How would settledRefund work? What if the order is $100, I charge $60 and then grant a refund for $40? Do I need to still charge the $40 and immediately refund it for numbers to align?

"""Represents an order in the shop."""
type Order implements Node & ObjectWithMetadata {
...
  """Amount that is not yet refunded: grantedRefund - totalRefunded - totalPendingRefund """
  totalNonIssueRefund: Money!
}

If we have amount of non issued refunds we should also add non granted refunds so that we know if for example a refund was requested inside Adyen / Mollie dashboard but not granted in Saleor. We'll need that on the frontend to display appropriate notification

transaction.actions will be calculated by Saleor based on the amounts that are attached to the transaction

I'm to sure we should do that - some payment methods might not allow transactions to be voided or refunded. To give you and example take a look at Adyen's payment methods list - none of "Cash & ATM payment methods" support refunds.
Inside saleor-app-checkout we set the actions based on response we get from payment provider. I guess we could have a fallback when app doesn't provide such information.

@korycins

You will always know if refund has been requested on payment provider side. New webhook will require pspReference as a response from the App. But we're still discussing about better name for totalNonIssueRefund field

I was talking here from Dashboard perspective, not app developer. We could theoretically calculate this data in dashboard, but since we won't be doing that for non issued refund I think it's a good idea to also add a field for not granted refunds.

I'm not sure if we should do that - some payment methods might not allow transactions to be voided or refunded. To give you an example take a look at Adyen's payment methods list - none of "Cash & ATM payment methods" support refunds.

Hhm, right... I didn't think about this. Do you suggest that transactionEventReport should accept availableActions in that case?
Inside saleor-app-checkout we set the actions based on response we get from payment provider. I guess we could have a fallback when app doesn't provide such information.

@korycins yes, transactionEventReport should accept availableActions, but maybe it should be optional - if it's not used we can have a fallback on Saleor side.

I was talking here from Dashboard perspective, not app developer. We could theoretically calculate this data in dashboard, but since we won't be doing that for non issued refund I think it's a good idea to also add a field for not granted refunds.

I want to display this in dashboard when a refund wasn't granted in Saleor, but it was sent on payment provider side:
What about using totalNonIssueRefund value for that?
This value will be calculated based on:
totalNonIssueRefund  = grantedRefund - totalRefunded - totalPendingRefund
If the value is < 0, it means that you didn't created granted refund, right?

totalNonIssueRefund = grantedRefund - totalRefunded - totalPendingRefund

@korycins right, I forgot that the values can be negative 😅

Saleor will silently accept a call with the same details but no values will be updated for each next call.

Can we add some clue that the call was ignored in the response from transactionEventReport mutation? I can imagine that it might be confusing to app developers why the mutation didn't update anything, because they just forgot they did that same mutation moments ago... app developers = me 🙈

pspReference is required. In case of missing psp reference, the webhook will be treat as undelivered.

Does it mean that Saleor can make another request to app to retry the refund? Or will we create another transaction event that it request to do transaction action failed, and we won't do any retries?

Will this change affect transactionCreate webhook? Will I still be able to create a transaction + an event with it?
Another one: in the new dashboard views we will be able to create a "Manual refund" - that is a transaction with just amountRefunded set by staff member. Will it require a PSP reference to be set?
Example:

@witoszekdev

Saleor will silently accept a call with the same details but no values will be updated for each next call.

Can we add some clue that the call was ignored in the response from transactionEventReport mutation? I can imagine that it might be confusing to app developers why the mutation didn't update anything, because they just forgot they did that same mutation moments ago... app developers = me

Like:
type TransactionEventReport {
  transaction: TransactionItem
  duplicated: Boolean!
  errors: [TransactionRequestCompleteError!]!
}

?

pspReference is required. In case of missing psp reference, the webhook will be treat as undelivered.

Does it mean that Saleor can make another request to app to retry the refund? Or will we create another transaction event that it request to do transaction action failed, and we won't do any retries?

Webhook by default will be retried a couple of times in case of receiving HTTP  error .
By saying  the webhook will be treat as undelivered. I meant, that we will not update PSP reference for the event, so it will be missing for REQUESTED event.
But now after thinking more about this, I am not sure what should be our behaviour when we don't receive a PSP reference. Like:
we can retry the webhook, but we don't know what happen on App side, we don't know if the App already processed the refund and hit the timeout, or if the implementation is missing returning the PSP reference. In that case, App needs to know how to de-duplicate the webhook: we don't want to make the same refund twice. Maybe the app should store in the metadata the list of requested event that has been already processed?

Will this change affect transactionCreate webhook? Will I still be able to create a transaction + an event with it?
Another one: in the new dashboard views we will be able to create a "Manual refund" - that is a transaction with just amountRefunded set by staff member. Will it require a PSP reference to be set?
Example:

You meant transactionCreate mutation right? For transactionCreate the one change that we will add is a giving staff user to call this mutation. No PSP reference will be required here, but availableActions will be set to []

Please change type on transactionEvent.amount to PositiveDecimal like we have on the rest of the transaction ;)

Please change type on transactionEvent.amount to PositiveDecimal like we have on the rest of the transaction ;)

PositiveDecimal is a something that we need to discuss. We need to allow app to report Saleor any new event that happen. For example, If the refund amount that Saleor received is bigger than the total capture amount, we want to show capture as a < 0 value. We can't round it to 0, as we lose precision in that case. So probably all Postivie Decimal fields will need to be converted to standard Decimals.

@witoszekdev  sorry, I forgot to mention you ☝

@korycins
Missing total amounts
2.2.1 - I don't see the other pending amounts for transactions statuses (from TransactionEventTypeEnum):

totalPendingRefund ✅
totalPendingCharge ✅
totalPendingAuthorization ❌
totalPendingCancel ❌
totalPendingChargeback ❌

Same for TransactionItem (2.2.2):

pendingRefundAmount ✅
pengingChargeAmount ✅
pendingAuthorizeAmount ✅
pendingCancelAmount ❌
pendingChargebackAmount ❌

Manual transactions
I'm wondering what should we pass as pspReference when we're creating manual transactions or manual refunds (in Dashboard, by staff members).
For example this is how we create "Manual refunds" (a transaction with just the amountRefunded set by user):
  mutation CreateManualTransactionRefund(
    $orderId: ID!
    $amount: PositiveDecimal!
    $currency: String!
    $description: String
  ) {
    transactionCreate(
      id: $orderId
      transaction: {
        type: "Manual refund"
        status: "Success"
        pspReference: $description
        amountRefunded: { amount: $amount, currency: $currency }
      }
      transactionEvent: { status: SUCCESS, type: REFUND, name: $description }
    ) {
      transaction {
        ...TransactionItem
      }
      errors {
        ...TransactionCreateError
      }
    }
  }

What should we pass as pspReference? Presumably this value is used for deduplication, but what if users use the same pspReference to describe a manual refund? (e.g. "cash"). Maybe this value should be optional for transactions created by users, and we would only use message field for describing the manual transactions?
State machine / invalid states
There are a few edge-cases that our proposed re-calculation (6.4) might not support:
CHARGE_FAILURE → CHARGE_SUCCESS (retried capture)
There can be a situation when a charge initially failed, but after resolving an issue in Adyen can be retried again and can succeed

E.g. Adyen sends CAPTURE notification with success: false and reason. One of them can be Internal error - an issue on Adyen side. On such case a capture can be retried again after an issue is resovled.
Another example could be CAPTURE_FAILED webhook it can also be send due to technical issue. In such a case Adyen will try to fix the issue and re-capture the tnrasaction automatically. If it succeeds then another CAPTURE webhook with success: true is sent. This means in history we'll have 3 events:

CAPTURE
CAPTURE_FAILED
CAPTURE

The end result is that the transaction was captured successfully.

I think a capture should be allowed to be successful again, after a failed attempt (i.e. we shouldn't set the amount to 0)
Cancelling refunds
We have now a CENCEL_* events - but this event IMHO is too generic. Looking at it, you can't tell what was cancelled (a refund? a capture? transaction was voided?).
I think we maybe should have CANCEL for each event type, for example:
For charge:

CHARGE_CANCEL_REQUEST
CHARGE_CANCEL_SUCCESS
CHARGE_CANCEL_FAILURE

For refunds:

REFUND_CANCEL_REQUEST
REFUND_CANCEL_SUCCESS
REFUND_CANCEL_FAILURE

Here are notifications from Adyen with cancellations:

VOID_PENDING_REFUND - send after a refund is cancelled
CANCEL_OR_REFUND
CANCEL
TECHNICAL_CANCEL

This would also mean that we should have more differentiation inside TransactionActionEnum:

CANCEL_CHARGE
CANCEL_REFUND
CANCEL_AUTHORIZATION (aka void)

Chargeback reversal
A chargeback can be reversed in Adyen (CHARGEBACK_REVERSED notification). We should also handle this type of situation in TransactionEventTypeEnum by adding CHARGE_BACK_REVERSED.
A reversed chargeback can also be re-reversed (SECOND_CHARGEBACK notification) which means we should allow a successful chargeback after it was reversed (just like with refunds and charges)

This is pure madness 😈


EnvSubst references don't fail when the environment variable doesn't exist

When using the EnvSubst provider, if an environment variable doesn't exist, it will just pass a blank string to the evaluated file and not error.
To replicate the issue:
echo 'foo: ref+envsubst://$VARIABLE' | vals eval -f -

Result: foo: ""
export VARIABLE=bar
echo 'foo: ref+envsubst://$VARIABLE' | vals eval -f -
unset VARIABLE

Result: foo: bar
2 potential ideas for a backwards compatible way to address this:

Add a new provider called "mustenvsubst" eg: ref+mustenvsubst://$VARIABLE which would fail if the variable is not set
Add a query string like other providers, eg: ref+envsubst://$VARIABLE?must_exist=true

Happy to take a stab at the PR once given guidance on the preferred direction to address this :)
I am performing a vals eval on a JSON source file, so using this script as a workaround:
#!/bin/bash
set -eo pipefail
IFS=$'\n\t'

# This script will parse the JSON file and fail if the requested vals environment variables don't exist.

if [ $# -ne 1 ]; then
    cat <<< "Usage: check_vals_envsubst_exist.sh <json-file-to-be-evaled-by-vals>" 1>&2;
    exit 1
fi

missing_vars=false

while read -r var; do
  if [ -z "${!var}" ]; then
    echo "[MISSING] Environment Variable '$var'"
    missing_vars=true
  else
    echo "[FOUND] Environment Variable '$var'"
  fi
done < <(jq -r '.. | select(type == "string" and test("^ref\\+envsubst://\\$\\w+")) | sub("^ref\\+envsubst://\\$"; "")' $1)

if [ "$missing_vars" = true ]; then
  echo "The [MISSING] environment variables are missing. Make sure they are set so vals can use them. Exiting."
  exit 1
fi

@mumoshu WDYT?
Add a query string like other providers, eg: ref+envsubst://$VARIABLE?must_exist=true
let must_exist defautl be true will be better?
@MattHodge


Feature Request: Total Duration of Queue

Would it be possible to calculate and display the total duration/length of your current queue?

This may be possible, I'll have to investigate. Where were you hoping to see this? It may be something we could add to the json output and other data sources but I'm not sure in the UI where we would add it.

swdelaney2 may have other ideas, but I imagine it showing up below the album name in the queue. I've attached some mock-ups.

Is anyone currently working on this? Looks like the playback API may possibly have to be enhanced

Loving all that data in mockup 1. I would love to see this as well as the total duration of selected songs. For that, there's ample room in the top bar that pops up when you select multiple tracks.


Add new key in store for latest valset

The definitive fix for https://github.com/celestiaorg/orchestrator-relayer/issues/556 would be to store the latest valset in store. Should be included in the next upgrade.

can we add proposal tag to this and discuss it further?

sure, added

no longer needed as we're switching to BlobstreamX


[Feature] Support Global System Table which record metadata of all paimon tables

Search before asking

[X] I searched in the issues and found nothing similar.

Motivation
There are so many paimon tables, and I want to find which paimon tables has 'write-only' = 'true' option.
Currently there is NO system tables provided by paimon, but only T$options system table companion with paimon table.
It is hard for me to get all those write-only paimon tables because I have to iterate all paimon table names, and query its companion T$options system table, then check those options one by one.
If paimon support Global system table just like information_schema.tables in mysql, I can query them quickly by fire the following sql:
select table_name from paimon_catalog.information_schema.tables where option_key = 'write-only' and option_value = 'true'
Solution
No response
Anything else?
No response
Are you willing to submit a PR?

[ ] I'm willing to submit a PR!

the related pr: #1647
The related PR has been merged, you are welcome to try this feature, I will close this issue.


Update s3, sdk-core, sqs to 2.17.50

Updates

software.amazon.awssdk:s3
software.amazon.awssdk:sdk-core
software.amazon.awssdk:sqs

from 2.17.38 to 2.17.50.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "software.amazon.awssdk" } ]

labels: library-update, semver-patch

Superseded by #314.


Infomaniak DNS Challenge

Checklist

Have you pulled and found the error with jc21/nginx-proxy-manager:latest docker image?

Yes

Are you sure you're not using someone else's docker image?

Yes

Have you searched for similar issues (both open and closed)?

Yes

Describe the bug
DNS Challenge from Provider Infomaniak no longer works
Nginx Proxy Manager Version
v2.9.21
To Reproduce
SSL Certificates > Add SSL Certificate > Provider "Infomaniak" > Fails with zope error
Expected behavior
DNS Certificate should be issued
Operating System
Ubuntu 22.04
Additional context
If you add pip install certbot-dns-infomaniak into the docker container it works
Repo of the Provider - it states zope is removed
It's my first issue, please help me out if I made a mistake. :)

Hi all :)
Any progress on this issue ? I consume infomaniak dns challanger plugin but:```
Error: Command failed: certbot certonly --config "/etc/letsencrypt.ini" --work-dir "/tmp/letsencrypt-lib" --logs-dir "/tmp/letsencrypt-log" --cert-name "npm-3" --agree-tos --email "xxx" --domains "xxxxx" --authenticator dns-infomaniak --dns-infomaniak-credentials "/etc/letsencrypt/credentials/credentials-3"
usage:
certbot [SUBCOMMAND] [options] [-d DOMAIN] [-d DOMAIN] ...
Certbot can obtain and install HTTPS/TLS/SSL certificates.  By default,
it will attempt to use a webserver both for obtaining and installing the
certificate.
certbot: error: unrecognized arguments: --dns-infomaniak-credentials /etc/letsencrypt/credentials/credentials-3
at ChildProcess.exithandler (node:child_process:402:12)
at ChildProcess.emit (node:events:513:28)
at maybeClose (node:internal/child_process:1100:16)
at Process.ChildProcess._handle.onexit (node:internal/child_process:304:5)


add_time_derived_measurements breaks if you use _script in the meds_transform_runner

https://github.com/mmcdermott/MEDS_transforms/blob/b43abd18e5018f908546a92af47b4b70baec46ef/src/MEDS_transforms/transforms/add_time_derived_measurements.py#L371
This will fail as _script will be a feature_name in stage_cfg.items()
@mmcdermott

Thanks for catching this! You actually don't need to include _script in the runner for things where the stage name will be the same as the script name, I think  -- it should automatically determine the script for a stage called add_time_derived_measurements.py, but either way the _script param shouldn't propagate into the actual stage_cfg.


Filter only unique uploads (#221)

This solves the problem in #221, in-depth explanation of the cause can be found in the issue.

Released in 7.6.2


Error 0x80070003 when I bash, but totally fine when I manually run Bash on Ubuntu on Windows

Your Windows build number:  (Type ver at a Windows Command Prompt)
Microsoft Windows [Version 10.0.17134.286]

What you're doing and what's happening:
When I run bash from a terminal (either normal cmd or a PowerShell), I am met with this error:

It should be noted that I can select the Bash on Ubuntu on Windows option from the Start Menu and then get into Bash totally fine:

I installed WSL through lxrun /install /y (after enabling Developer Mode and enabling the WSL feature).

What's wrong / what should be happening instead:
I shouldn't be receiving this error when I start bash.

logs.zip

You likely have multiple distributions installed, and one of them seems to be corrupt (0x80070003 is file not found).  Could you share the output of wslconfig.exe /list?

You were right!  I unregistered the entry and bash works fine :smile:


General Tool API

Some simple classes I wrote for my highschool robotics class. Plans to add more to it in the future.

@ArduinoBot

@ArduinoBot

Hello @FXDuke. The automated system here only operates on open pull requests. Since your submission was already accepted and the pull request merged, the bot won't pay any more attention to this pull request.
But this human is happy to provide assistance. Was there something you needed from the bot?


Using RectTransform for UX Elements

Describe the problem
One thing I've been wondering for months now is why MRTK doesn't utilize RectTransform for UX controls and panels. I'm wondering if this is an intentional design decision or if it's perhaps due to a perception that RectTransform only exists for Unity UI?
RectTransform is not explicitly tied to Unity UI. And using RectTransform will not automatically add a Canvas to the scene.
RectTransform is a regular Transform. In fact RectTransform inherits from Transform.
RectTransform can be used any place Transform can, but not the other way around.
The main benefit RectTransform provides that Transform does not is the ability to use Unity's relative layout system. And while I understand Unity filed that article under "Unity UI", all of those layout features can be used without needing Unity UI or Canvas.
I wanted to attach some animations to demonstrate the value. Here is a clip of the HandMenu_Large_WorldLock_On_GrabAndPull prefab.

Notice that the only way to resize this prefab is to scale it. But using scale stretches the object rather than resizing it. If a developer wants to modify this prefab, they must manually resize and reposition each child element in the prefab. This is a lot of work. (Trust me, I've been doing it.)
Here's the same menu prefab but I converted the entire layout to use RectTransform:

Notice there are now actual Width and Height fields that can be modified separate from Scale. And changing those values results in an intelligent relayout of the control.
I can now also set meaningful constraints. For example I can say that the slider collection should always be 0.03 meters from the right edge of its container:

Finally, I'm attaching this zip file:
RectLayout.zip
In it you will find a .unitypackage that includes my redesign of the menu and a test scene.
Describe the solution you'd like
I would like to see all menus, panels, slates and UX controls switch to using RectTransform. I believe this will greatly reduce (if not eliminate) the friction currently experienced when attempting to resize or modify MRTK UX prefabs.
Describe alternatives you've considered
I've spent a lot of time editing existing prefabs and I haven't come up with a better solution. I even tried some dynamic resize scripts.
Additional context
I did spend a bit of time researching RectTransform to make sure it doesn't add a massive performance penalty. So far, other than a very old bug I haven't been able to find any notable performance penalties. Having said that, it would be prudent to do some testing and validation of our own before making a full switch over.

Hey @jbienzms, thanks for this investigation. Flexible prefabs will be achievable in MRTK v3 using new volumetric layout tools.

@jbienzms this is pretty cool. Like @polar-kev said, we're pursuing some new standalone volumetric layout tools, but using built-in recttransforms for layout is neat. I would have figured that this would cause some serious perf issues but I guess not! I'll ping you to chat about this some more.


New version: PawelSalawa.SQLiteStudio version 3.4.7

Created by 🥟 Dumplings in workflow run #9916.

Log
Updated: 3.4.6 → 3.4.7
Submitting WinGet manifests
Creating manifests
Uploading manifests and making commits
Creating a pull request

Microsoft Reviewers: Open in CodeFlow

Automatic Validation ended with:

No errors to post.

(Automated response - build 899.)


Add Saffron Finance (SFI)

Added SFI to token list
Added SFI logo

Hi there, thanks for your interest in Avalanche. We have recently updated the review process for tokens on the Avalanche Bridge. I'm closing all of the pending PRs in this repo now, and someone from our business development team should reach out to you soon if they have not already.


exposing, impress.roots, an window.Impress constructor and Impress.reset helper

The roots object is not exposed, hence it's not very useful if one wants to delete an existing instance. I understand that it's not very practical to have multiple instances of an "impress" object on a single page, it's almost impossible to handle, since each instance manipulates the location.hash value and listen to its changes, and I personally agree, and I think you should just have a single static instance, unless you want to support a light router, i.e. #/:rootId/:step-index
However, since you're already keeping track of each instance, why not construct them the conventional way, (no way is the right-way in JS) using a new Impress( rootId ) syntax, and why not exposing a helper for one to reset or delete one or all instances.
My use case consists changing the impress DOM template, then reloading the deck, without refreshing the page.

Hi @akhoury , in an effort to clear up older issues/PRs we are pinging back to know if you are still tracking this request.
To give a little bit of context, recently a decision was made in the project to make the development more active and the first task is to clear up older PRs like this one to see if the OP is still interested in keep it going.
By the way, this change introduce breaking changes for those who are already using impress.js. We need to weight the cost-benefits of that.

I don't have a strong opinion on this - feel free to proceed as you see fit. Although it would be nice to have a way to refresh the deck without the need to refresh the page.
Thanks for asking.

I have created an issue to track the use case: #517. We might revisit this later if someone bring this up again. Thanks for the feedback!

that works. Thanks


Keystrokes disgarded in popup search field

Using latest version 1.2.5
The filtering is working, however, I am not able to type into the search field of the popup. Pasting in a value works. Backspace works on a pasted string. And the space-bar works. But I am unable to enter any other input.
It seams to me that my key presses are being discarded for some reason. I don't have any key stoke handling in my part of the code so I don't know where this is happening.
Looking for any help I can get and thanks in advance.

Discovered  by accident that this issue was because of the way I was hosting a WPF window in Windows Forms. So no problems here.

Is everything working for you?


🔧 [Refactor] ADMINAREA - check email confirmed before creation and multi creation saved

🔧 Refactor ticket
check on the backend page if the email is confirmed before a creation and multi creation , if not email confirmed, no creation may be performed and an error with info will be returned.

when confirming the transaction in the multiple creation, it is checked whether email is activated. in the current master, it is no longer possible to select a user for multiple creation who does not have a confirmed email.


how to for timezones

hey @denvermb @jeffwmartinez @yutanglin16 can you take a look? would like to merge this sometime this week.
This is my doc update for the month 👍🏽


Can not add custom VirtualHost to RabbitConfiguration

I try to connect my RabbitMQ server but I have received the issue that VirtualHost from my UseRabbitMQTransport() is "/" (default) and I can not custom VirtualHost in RabbitConfiguration. Is there any way to fix this issue?
Many thanks,

hi, I've released a new version, let me know if it fixes your issue: https://github.com/mizrael/OpenSleigh/releases/tag/v2.0.1
thanks!

Thanks for your support! It helps a lot with my project.
many thanks,

thanks for using OpenSleigh!


[BUG] Harvester should be able to create an HA cluster with three nodes

Is your feature request related to a problem? Please describe.
To quote the documentation https://docs.harvesterhci.io/v1.0/host/host/
Harvester is built on top of Kubernetes and uses etcd as its database,
the maximum node fault toleration is one when there are three management nodes.

and yet in the same documentation
The first node always defaults to be a management node of the cluster.
When there are more than three nodes, the two other nodes that first joined
are automatically promoted to management nodes to form a HA cluster.

It should be possible to create an HA cluster with exactly three nodes - having more than three nodes should not be a requirement.
Describe the solution you'd like

I would like to be able to create an HA cluster with exactly three nodes.
I would like to promote nodes 2 and 3 to being management nodes.
Whether this is automatic or manual, I do not mind.

Additional context
This was discussed in Slack: https://rancher-users.slack.com/archives/C01GKHKAG0K/p1650197492586649

Mark - can you elaborate on your request? When deploying a cluster with 3 nodes, it will be HA by default and certainly will tolerate a node failure. The "promotion" takes place automatically when additional management nodes are required and made available. After 3 management nodes are in place, additional nodes would be considered workers.

I have a 3 node Harvester v1.0.0 cluster which has is a master and two workers.
$ kubectl get nodes
NAME           STATUS   ROLES                       AGE   VERSION
harvester001   Ready    <none>                      8d    v1.21.7+rke2r1
harvester002   Ready    <none>                      71d   v1.21.7+rke2r1
harvester003   Ready    control-plane,etcd,master   93d   v1.21.7+rke2r1

The documentation on the page I quoted has said "more than 3 nodes" from the first commit: https://github.com/harvester/docs/blob/41c944c57509bc10e185ce8c87ae107b34a361f6/docs/host/host.md

@himslm01 Could you provide a support bundle? All nodes should become management roles.
BTW, did you delete nodes and rejoin them? From the AGE and host naming, it looks like the first-created one is harvester003, then harvester002, and harvester001.

supportbundle_5bb44244-434e-4530-ad35-35c4ef1ff661_2022-04-26T07-12-31Z.zip

Yes, in this cluster node harvester003 was the first member, then harvester002 then harvester001.
The background to that:

node harvester001 was first built as v0.2.0 and had some workloads running
node harvester002 was first built as v0.3.0 but was really only used for testing and demonstrating bugs
node harvester003 was built as a v1.0.0 and found to be successful and stable
node harvester002 was trashed and re-built as v1.0.0 joining the harvester003 cluster
node harvester001 had the workloads moved/rebuilt into the harvester003 cluster, then trashed and re-built as v1.0.0 joining the harvester003 cluster

I think this might be a bug from old code and cannot be reproduced. I just installed both a 1.0 and a 1.0.1 cluster and the expected behavior of 3 mgmt/worker nodes was deployed.

I don't understand how I can be hitting a v0.2 bug when the cluster is installed from the Harvester ISO for v1.0.0 downloaded on 22nd Jan 2022.

@himslm01 From the support bundle I can confirm harvester002 node is being promoted to the server node. But somehow a rancher plan on that node can't be applied. Because of an issue in v1.0.0, node logs are not included in the bundle. Could you navigate to node harvester002 and provide output of:

sudo systemctl status rancher-system-agent
sudo journalctl -u rancher-system-agent

This could help me debug, Thanks a lot.

Thank you @bk201
The output of those two commands is in the attached tar.
bk202_20220504.tar.gz

After investigating the support bundle and with the user's help to provide some info, we found the rancher-system-agent can not execute plans on node harvester002. And this might be related to the certificate changes:
Restarting rancher-system-agent node:
May 06 07:36:00 harvester002 systemd[1]: Stopped Rancher System Agent.
May 06 07:36:00 harvester002 systemd[1]: Started Rancher System Agent.
May 06 07:36:00 harvester002 rancher-system-agent[22137]: time="2022-05-06T07:36:00Z" level=info msg="Rancher System Agent version v0.1.1 (e54e52e) is starting"
May 06 07:36:00 harvester002 rancher-system-agent[22137]: time="2022-05-06T07:36:00Z" level=info msg="Using directory /var/lib/rancher/agent/work for work"
May 06 07:36:00 harvester002 rancher-system-agent[22137]: time="2022-05-06T07:36:00Z" level=debug msg="Instantiated new image utility with imagesDir: /var/lib/rancher/agent/images, imageCredentialProviderConfig: /var/lib/rancher/credentia>
May 06 07:36:00 harvester002 rancher-system-agent[22137]: time="2022-05-06T07:36:00Z" level=info msg="Starting remote watch of plans"
May 06 07:36:00 harvester002 rancher-system-agent[22137]: panic: error while connecting to Kubernetes cluster: Get "https://<IP_ADDRESS>/version": x509: cannot validate certificate for <IP_ADDRESS> because it doesn't contain any IP SANs
May 06 07:36:00 harvester002 rancher-system-agent[22137]: goroutine 34 [running]:
May 06 07:36:00 harvester002 rancher-system-agent[22137]: github.com/rancher/system-agent/pkg/k8splan.(*watcher).start(0xc0000bc180, 0x1759280, 0xc00040ee00)
May 06 07:36:00 harvester002 rancher-system-agent[22137]:         /go/src/github.com/rancher/system-agent/pkg/k8splan/watcher.go:96 +0xc74
May 06 07:36:00 harvester002 rancher-system-agent[22137]: created by github.com/rancher/system-agent/pkg/k8splan.Watch
May 06 07:36:00 harvester002 rancher-system-agent[22137]:         /go/src/github.com/rancher/system-agent/pkg/k8splan/watcher.go:57 +0xbe
May 06 07:36:00 harvester002 systemd[1]: rancher-system-agent.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
May 06 07:36:00 harvester002 systemd[1]: rancher-system-agent.service: Failed with result 'exit-code'.
May 06 07:36:05 harvester002 systemd[1]: rancher-system-agent.service: Scheduled restart job, restart counter is at 1.
May 06 07:36:05 harvester002 systemd[1]: Stopped Rancher System Agent.

@himslm01 By any chance the server-url Rancher setting is changed to http://<IP_ADDRESS> and then to https://harvester-cluster.lan.lxiv.uk? This might be the reason the agent can't use the internal URL to communicate with the cluster.
For a temporary workaround, you can try log in to harvester002 node.

Backup /var/lib/rancher/agent/rancher2_connection_info.json
Get Rancher internal IP: kubectl get services rancher -n cattle-system, the value of CLUSTER-IP.
Edit /var/lib/rancher/agent/rancher2_connection_info.json and replace server: https://<IP_ADDRESS>\n with https://<Rancher internal IP>\n.
systemctl restart rancher-system-agent

It is distinctly possible that when I built the first node in this cluster I was using an IP address as the Management address in the installer, then later I created a DNS entry and changed the server-url configuration setting to the DNS entry.
I had assumed / hoped that all the places which used the server-url would have been updated when I changed the setting :-)
Between Zoom calls I'll make the work-around change and see what happens.

@bk201 I decided to be slightly adventurous and did something slightly different to your advice.
Instead of getting the Rancher internal IP and replacing it in /var/lib/rancher/agent/rancher2_connection_info.json on one host I decided to make sure all three nodes had the server-uri set to the FQDN DNS entry value harvester-cluster.lan.lxiv.uk.
After editing /var/lib/rancher/agent/rancher2_connection_info.json, the moment (or soon after) I did systemctl restart rancher-system-agent on the two nodes which were not control-plane,etcd,master they got those roles.
I also see from the logs that the Rancher system agent is not in a crash-loop any more.
journalctl -u rancher-system-agent -S '2022-05-09 10:13:31'|less
May 09 10:13:31 harvester002 systemd[1]: rancher-system-agent.service: Scheduled restart job, restart counter is at 51294.
May 09 10:13:31 harvester002 systemd[1]: Stopped Rancher System Agent.
May 09 10:13:31 harvester002 systemd[1]: Started Rancher System Agent.
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=info msg="Rancher System Agent version v0.1.1 (e54e52e) is starting"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=info msg="Using directory /var/lib/rancher/agent/work for work"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=debug msg="Instantiated new image utility with imagesDir: /var/lib/rancher/agent/images, imageCredentialProviderConfig: /var/lib/rancher/credentialprovider/config.yaml, imageCredentialProvide
rBinDir: /var/lib/rancher/credentialprovider/bin, agentRegistriesFile: /etc/rancher/agent/registries.yaml"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=info msg="Starting remote watch of plans"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=info msg="Initial connection to Kubernetes cluster failed with error Get \"https://harvester-cluster.lan.lxiv.uk/version\": x509: certificate signed by unknown authority, removing CA data and
 trying again"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=info msg="Starting /v1, Kind=Secret controller"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=debug msg="[K8s] Processing secret custom-6afa908c52d8-machine-plan in namespace fleet-local at generation 0 with resource version 134167193"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=debug msg="[K8s] Calculated checksum to be dbca27aeb930fcbe817363b947924902387587a9f40a5387b8aa3fde60f5a4ad"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=debug msg="[K8s] Remote plan had an applied checksum value of 2325bdd9b3fb5f778d06860a2bfff974ab20a4c4a254ce5989e3168ed9a17260"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=debug msg="[K8s] Calling Applyinator to apply the plan."
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=info msg="Applying plan with checksum dbca27aeb930fcbe817363b947924902387587a9f40a5387b8aa3fde60f5a4ad"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=debug msg="Writing applied calculated plan contents to historical plan directory /var/lib/rancher/agent/applied"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=debug msg="reconciling file permissions for /var/lib/rancher/agent/applied/20220509-101331 to 0:0 384"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=debug msg="Writing file /etc/rancher/rke2/config.yaml.d/50-rancher.yaml"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=debug msg="requested file permission for /etc/rancher/rke2/config.yaml.d/50-rancher.yaml was , defaulting to 384"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=debug msg="reconciling file permissions for /etc/rancher/rke2/config.yaml.d/50-rancher.yaml to 0:0 384"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=debug msg="Writing file /var/lib/rancher/rke2/server/manifests/rancher/cluster-agent.yaml"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=debug msg="requested file permission for /var/lib/rancher/rke2/server/manifests/rancher/cluster-agent.yaml was , defaulting to 384"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=debug msg="reconciling file permissions for /var/lib/rancher/rke2/server/manifests/rancher/cluster-agent.yaml to 0:0 384"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=debug msg="Writing file /var/lib/rancher/rke2/server/manifests/rancher/addons.yaml"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=debug msg="requested file permission for /var/lib/rancher/rke2/server/manifests/rancher/addons.yaml was , defaulting to 384"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=debug msg="reconciling file permissions for /var/lib/rancher/rke2/server/manifests/rancher/addons.yaml to 0:0 384"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=debug msg="Writing file /var/lib/rancher/rke2/server/manifests/rancher/managed-chart-config.yaml"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=debug msg="requested file permission for /var/lib/rancher/rke2/server/manifests/rancher/managed-chart-config.yaml was , defaulting to 384"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=debug msg="reconciling file permissions for /var/lib/rancher/rke2/server/manifests/rancher/managed-chart-config.yaml to 0:0 384"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=debug msg="Cleaning working directory before applying /var/lib/rancher/agent/work"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=debug msg="Executing instruction 0 for plan dbca27aeb930fcbe817363b947924902387587a9f40a5387b8aa3fde60f5a4ad"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=info msg="Extracting image rancher/system-agent-installer-rke2:v1.21.7-rke2r1 to directory /var/lib/rancher/agent/work/20220509-101331-applied.plan/dbca27aeb930fcbe817363b947924902387587a9f40
a5387b8aa3fde60f5a4ad_0"
May 09 10:13:31 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:31Z" level=info msg="Checking local image archives in /var/lib/rancher/agent/images for index.docker.io/rancher/system-agent-installer-rke2:v1.21.7-rke2r1"
May 09 10:13:32 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:32Z" level=debug msg="Found index.docker.io/rancher/system-agent-installer-rke2:v1.21.7-rke2r1 in /var/lib/rancher/agent/images/rancherd-bootstrap-images-v1.0.0.tar.zst"
May 09 10:13:32 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:32Z" level=info msg="Extracting file installer.sh to /var/lib/rancher/agent/work/20220509-101331-applied.plan/dbca27aeb930fcbe817363b947924902387587a9f40a5387b8aa3fde60f5a4ad_0/installer.sh"
May 09 10:13:32 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:32Z" level=info msg="Extracting file rke2.linux-amd64.tar.gz to /var/lib/rancher/agent/work/20220509-101331-applied.plan/dbca27aeb930fcbe817363b947924902387587a9f40a5387b8aa3fde60f5a4ad_0/rke2.linux-amd
64.tar.gz"
May 09 10:13:32 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:32Z" level=info msg="Extracting file sha256sum-amd64.txt to /var/lib/rancher/agent/work/20220509-101331-applied.plan/dbca27aeb930fcbe817363b947924902387587a9f40a5387b8aa3fde60f5a4ad_0/sha256sum-amd64.tx
t"
May 09 10:13:32 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:32Z" level=info msg="Extracting file run.sh to /var/lib/rancher/agent/work/20220509-101331-applied.plan/dbca27aeb930fcbe817363b947924902387587a9f40a5387b8aa3fde60f5a4ad_0/run.sh"
May 09 10:13:32 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:32Z" level=info msg="Running command: sh [-c run.sh]"
May 09 10:13:32 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:32Z" level=info msg="[dbca27aeb930fcbe817363b947924902387587a9f40a5387b8aa3fde60f5a4ad_0:stderr]: + SA_INSTALL_PREFIX=/usr/local"
May 09 10:13:32 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:32Z" level=info msg="[dbca27aeb930fcbe817363b947924902387587a9f40a5387b8aa3fde60f5a4ad_0:stderr]: + mkdir -p /var/lib/rancher/rke2"
May 09 10:13:32 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:32Z" level=info msg="[dbca27aeb930fcbe817363b947924902387587a9f40a5387b8aa3fde60f5a4ad_0:stderr]: + SAI_FILE_DIR=/var/lib/rancher/rke2/system-agent-installer"
May 09 10:13:32 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:32Z" level=info msg="[dbca27aeb930fcbe817363b947924902387587a9f40a5387b8aa3fde60f5a4ad_0:stderr]: + RESTART_STAMP_FILE=/var/lib/rancher/rke2/system-agent-installer/rke2_restart_stamp"
May 09 10:13:32 harvester002 rancher-system-agent[14578]: time="2022-05-09T10:13:32Z" level=info msg="[dbca27aeb930fcbe817363b947924902387587a9f40a5387b8aa3fde60f5a4ad_0:stderr]: + RKE2_SA_ENV_FILE_NAME=rke2-sa.env"
...

The issue was solved, and the doc was also updated.

I still experience this problem in 1.2.1，and also [BUG] Unable to join new v1.2.0 node to v1.2.0 cluster #4511 simultaneously. Is there a proper way to reconfigure the register URL for both harvester node join, and rke2 node promotion, when changing from VIP IP to FQDN and change the corresponding SSL certificate.

Hi @ER-EPR, for #4511, did you try the workaround and still unable to join the node? Basically, the docs instruct you to add the CA to the node's trust list if you already have ssl-certificate configured.

Hi @ER-EPR, for #4511, did you try the workaround and still unable to join the node? Basically, the docs instruct you to add the CA to the node's trust list if you already have ssl-certificate configured before joining the node.

Thanks for the suggestion. I successfully add the nodes using work around from #4511 and #2194. But I don't know whether there will be another problem somewhere, so I want to properly change these settings. I use a let's encrypt SSL certificate and CA. Also I discover another issue #4683 while debugging this node joining problem, which didn't exhibit notable effect until I decide to upgrade from 1.2.0 to 1.2.1 and failed. Only node 2 go through phase 4 post-drain and success, which leads to deleting two other nodes, install from 1.2.1 ISO and rejoining them to recover the cluster. The nodes now are joined and promoted, but the local cluster under fleet-local stuck at configuring state from the day I create the 3 nodes cluster using v1.2.0 iso, while actually the control planes are ready. Is there a work around I can apply to force the state to become ready.

status:
  clientSecretName: local-kubeconfig
  clusterName: local
  conditions:
    - lastUpdateTime: '2023-09-12T14:35:18Z'
      message: marking control plane as initialized and ready
      reason: Waiting
      status: Unknown
      type: Ready
    - status: Unknown
      type: DefaultProjectCreated
    - status: Unknown
      type: SystemProjectCreated
    - lastUpdateTime: '2023-09-12T14:33:43Z'
      status: 'False'
      type: Reconciling
    - lastUpdateTime: '2023-09-12T14:33:43Z'
      status: 'False'
      type: Stalled
    - lastUpdateTime: '2023-10-31T14:35:50Z'
      status: 'True'
      type: Created
    - lastUpdateTime: '2023-11-01T03:46:47Z'
      status: 'True'
      type: RKECluster
    - lastUpdateTime: '2023-09-12T14:33:57Z'
      status: 'True'
      type: Connected
    - lastUpdateTime: '2023-11-01T03:46:47Z'
      status: 'True'
      type: Updated
    - lastUpdateTime: '2023-11-01T03:46:47Z'
      status: 'True'
      type: Provisioned
  observedGeneration: 8
  ready: true

I don't have CA trust issue, I change IP to URL using kubectl edit setting.managenent server-url to join nodes as mentioned in #4511. But also have to change server URL to internal rancher IP in /var/lib/rancher/agent/rancher2_connection_info.json to promote node as mentioned above. I want to know whether it will affect other functions or future updates.


HDDS-1490. Support configurable container placement policy through 'o…

…zone.scm.container.placement.classname'

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Comment

0
reexec
31
Docker mode activated.

_ Prechecks _

+1
dupname
1
No case conflicting files found.

+1
@author
0
The patch does not contain any @author tags.

+1
test4tests
0
The patch appears to include 9 new or modified test files.

_ trunk Compile Tests _

0
mvndep
22
Maven dependency ordering for branch

+1
mvninstall
515
trunk passed

+1
compile
279
trunk passed

+1
checkstyle
71
trunk passed

+1
mvnsite
0
trunk passed

+1
shadedclient
827
branch has no errors when building and testing our client artifacts.

+1
javadoc
177
trunk passed

0
spotbugs
335
Used deprecated FindBugs config; considering switching to SpotBugs.

+1
findbugs
527
trunk passed

_ Patch Compile Tests _

0
mvndep
36
Maven dependency ordering for patch

+1
mvninstall
505
the patch passed

+1
compile
283
the patch passed

+1
javac
283
the patch passed

-0
checkstyle
35
hadoop-hdds: The patch generated 4 new + 0 unchanged - 0 fixed = 4 total (was 0)

+1
mvnsite
0
the patch passed

+1
whitespace
1
The patch has no whitespace issues.

+1
xml
9
The patch has no ill-formed XML file.

+1
shadedclient
625
patch has no errors when building and testing our client artifacts.

-1
javadoc
71
hadoop-hdds generated 9 new + 14 unchanged - 0 fixed = 23 total (was 14)

+1
findbugs
523
the patch passed

_ Other Tests _

+1
unit
240
hadoop-hdds in the patch passed.

-1
unit
133
hadoop-ozone in the patch failed.

+1
asflicense
39
The patch does not generate ASF License warnings.

5253

Reason
Tests

Failed junit tests
hadoop.ozone.om.request.bucket.TestOMBucketDeleteRequest

hadoop.ozone.om.request.bucket.TestOMBucketCreateRequest

hadoop.ozone.om.ratis.TestOzoneManagerRatisServer

hadoop.ozone.om.ratis.TestOzoneManagerStateMachine

hadoop.ozone.om.request.bucket.TestOMBucketSetPropertyRequest

Subsystem
Report/Notes

Docker
Client=17.05.0-ce Server=17.05.0-ce base: https://builds.apache.org/job/hadoop-multibranch/job/PR-903/1/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/903

Optional Tests
dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle xml

uname
Linux f128fa432a0c 4.4.0-138-generic #164-Ubuntu SMP Tue Oct 2 17:16:02 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
personality/hadoop.sh

git revision
trunk / 7991159

Default Java
1.8.0_212

checkstyle
https://builds.apache.org/job/hadoop-multibranch/job/PR-903/1/artifact/out/diff-checkstyle-hadoop-hdds.txt

javadoc
https://builds.apache.org/job/hadoop-multibranch/job/PR-903/1/artifact/out/diff-javadoc-javadoc-hadoop-hdds.txt

unit
https://builds.apache.org/job/hadoop-multibranch/job/PR-903/1/artifact/out/patch-unit-hadoop-ozone.txt

Test Results
https://builds.apache.org/job/hadoop-multibranch/job/PR-903/1/testReport/

Max. process+thread count
1346 (vs. ulimit of 5500)

modules
C: hadoop-hdds/common hadoop-hdds/server-scm hadoop-ozone/integration-test hadoop-ozone/ozone-manager U: .

Console output
https://builds.apache.org/job/hadoop-multibranch/job/PR-903/1/console

versions
git=2.7.4 maven=3.3.9 findbugs=3.1.0-RC1

Powered by
Apache Yetus 0.10.0 http://yetus.apache.org

This message was automatically generated.

Double checked all failed UT. Two failure reasons,

Cannot mock/spy class org.apache.hadoop.ozone.om.OzoneManager
Mockito cannot mock/spy because :

final class

collateral damage, failure triggerred by failure 1
java.lang.NullPointerException
at org.apache.hadoop.ozone.om.request.bucket.TestOMBucketCreateRequest.stop(TestOMBucketCreateRequest.java:82)

@xiaoyuyao  Do you have a moment to review this latest 04.patch?

bq. Cannot mock/spy class org.apache.hadoop.ozone.om.OzoneManager
Mockito cannot mock/spy because :final class
I think this is related to the change in the pom.xml where we only add the topology related xml files to testResources explicitly. In this case, I think we will need to add the mokito-extensions from the test/resources as well explicitly. This is need to surpress the warning above.
 <testResource>
   <directory>${basedir}/src/test/resources</directory>
 </testResource>

Also, please fix the checkstyle issue in the next commit.

@xiaoyuyao, thanks for the information. I didn't releasize that it's because I explicitely added the testResouces to the pom.xml, then the resources under ${basedir}/src/test/resources get ignored.  I will upload a new commit shortly.

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Comment

0
reexec
32
Docker mode activated.

_ Prechecks _

+1
dupname
1
No case conflicting files found.

+1
@author
0
The patch does not contain any @author tags.

+1
test4tests
0
The patch appears to include 9 new or modified test files.

_ trunk Compile Tests _

0
mvndep
23
Maven dependency ordering for branch

+1
mvninstall
492
trunk passed

+1
compile
293
trunk passed

+1
checkstyle
88
trunk passed

+1
mvnsite
0
trunk passed

+1
shadedclient
875
branch has no errors when building and testing our client artifacts.

+1
javadoc
154
trunk passed

0
spotbugs
334
Used deprecated FindBugs config; considering switching to SpotBugs.

+1
findbugs
521
trunk passed

_ Patch Compile Tests _

0
mvndep
28
Maven dependency ordering for patch

+1
mvninstall
441
the patch passed

+1
compile
274
the patch passed

+1
javac
274
the patch passed

+1
checkstyle
64
the patch passed

+1
mvnsite
0
the patch passed

+1
whitespace
0
The patch has no whitespace issues.

+1
xml
5
The patch has no ill-formed XML file.

+1
shadedclient
626
patch has no errors when building and testing our client artifacts.

+1
javadoc
156
the patch passed

+1
findbugs
523
the patch passed

_ Other Tests _

+1
unit
233
hadoop-hdds in the patch passed.

-1
unit
1357
hadoop-ozone in the patch failed.

+1
asflicense
40
The patch does not generate ASF License warnings.

6380

Reason
Tests

Failed junit tests
hadoop.ozone.client.rpc.TestCommitWatcher

hadoop.ozone.client.rpc.TestOzoneAtRestEncryption

hadoop.ozone.client.rpc.TestOzoneRpcClient

hadoop.ozone.client.rpc.TestFailureHandlingByClient

hadoop.ozone.client.rpc.TestSecureOzoneRpcClient

hadoop.ozone.client.rpc.TestOzoneRpcClientWithRatis

Subsystem
Report/Notes

Docker
Client=17.05.0-ce Server=17.05.0-ce base: https://builds.apache.org/job/hadoop-multibranch/job/PR-903/2/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/903

Optional Tests
dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle xml

uname
Linux 20e99d05d7c3 4.4.0-138-generic #164-Ubuntu SMP Tue Oct 2 17:16:02 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
personality/hadoop.sh

git revision
trunk / 73954c1

Default Java
1.8.0_212

unit
https://builds.apache.org/job/hadoop-multibranch/job/PR-903/2/artifact/out/patch-unit-hadoop-ozone.txt

Test Results
https://builds.apache.org/job/hadoop-multibranch/job/PR-903/2/testReport/

Max. process+thread count
4953 (vs. ulimit of 5500)

modules
C: hadoop-hdds/common hadoop-hdds/server-scm hadoop-ozone/integration-test hadoop-ozone/ozone-manager U: .

Console output
https://builds.apache.org/job/hadoop-multibranch/job/PR-903/2/console

versions
git=2.7.4 maven=3.3.9 findbugs=3.1.0-RC1

Powered by
Apache Yetus 0.10.0 http://yetus.apache.org

This message was automatically generated.

Cannot reproduce failed test cases locally.


Fix peer depenency version

Fix npm install error https://github.com/oblador/react-native-vector-image/issues/40

@oblador please review


GZip client middleware should not decompres empty response body

This PR generlizes the solution to the "GZip client middleware crashes when processing an HTTP HEAD response" issue as was suggested from the prevoius PR, by not decompresing a response body regardless of the corresponding request method.
The GZip client middleware inspects the response stream whether it's empty, by trying to peek the first byte from it without consuming it. If there is at least on byte in the stream, then the stream is considered non empty and the decompression process is applied; otherwise it just returns an empty stream.
I only was able to signal whether the stream is empty via the error channel, because the fs2.compression.gunzip method before proceeding with the decompression creates a java.util.zip.Inflater and encloses it using a Stream.bracket. If I run the decompression either inside the Pull (line 63) or outside (line 66), in the process of flattening the inner stream, it seems like it gets terminated and the Inflater is disposed before the decompression completes and it throws a java.lang.NullPointerException: Inflater has been closed exception.

One of the steps from the CI pipeline failed unrelated to the changes in this PR. It could not fetch some dependency.

This looks binary compatible, but I didn't do the backport of #3476 right, so I'll PR a backport of this separately instead of messing up twice.


Don't run a manager_refresh if using streaming

If using streaming refresh don't run a refresh with manager_refresh_targets.
Previously providers using streaming refresh would have allow_targeted_refresh not set so ext_management_system.class::EventTargetParser wouldn't be called.


Dev chile visualisation

Hello. Maybe before merging Jethro @jwja2  may want to take a look to the text in the following file:
Deploy/stacks/Chile/stack-manager/inputs/data/webspace/index.html
Output available on https://theworldavatar.io/demos/chile/
I changed visualization by visualisation.


Remove redundant paragraph from 0063-swiftpm-system-module-search-paths.md

Was only one of these paragraphs meant to be included? First sentences are the same, but the second paragraph's second sentence seemed more thorough than the first. /cc @mxcl

This was intentional. I'll merge it though as your the second person to think this was an error.
However, your PR removes key information. Please fix.

Done.


Docker provisioner enforces all uppercase env vars

Issue Type

Bug report

Molecule and Ansible details
ansible --version
ansible 2.5.8 (stable-2.5 6321e70232) last updated 2018/09/04 11:40:53 (GMT +200)
  config file = None
  configured module search path = [u'...']
  ansible python module location = ...
  executable location = ...
  python version = 2.7.15 (default, Aug  9 2018, 09:11:52) [GCC 7.3.0]

molecule --version
molecule, version 2.17.0

Molecule installation method (one of):

pip

Ansible installation method (one of):

source

Desired Behavior
Upper or lower case for environment variables injected into the docker container should not matter.
Especially since i.e. systemd explicitly wants a lower case $container variable. Or think of $http_proxy.
(see https://www.freedesktop.org/wiki/Software/systemd/ContainerInterface under Environment Variables)
Actual Behaviour (Bug report only)
dependency:
  name: gilt
driver:
  name: docker
lint:
  name: yamllint
platforms:
  - name: host.name
    hostname: host.name
    image: centos:latest
    command: /sbin/init
    env:
      container: docker
    security_opts:
      - apparmor=unconfined
    volumes:
      - /sys/fs/cgroup:/sys/fs/cgroup:ro
    capabilities:
      - SYS_ADMIN
      - SYSLOG
      - NET_ADMIN
provisioner:
  name: ansible
  config_options:
    defaults:
      jinja2_extensions: jinja2.ext.do
  lint:
    name: ansible-lint
scenario:
  name: default
verifier:
  name: testinfra
  lint:
    name: flake8

$ molecule --debug lint
--> Validating schema .../molecule/default/molecule.yml.
ERROR: Failed to validate.

{'platforms': [{0: [{'env': [{'container': ["value does not match regex '^[A-Z0-9_-]+$'"]}]}]}]}

Sounds reasonable, mind submitting a PR to correct this?


feat: remove HTTP from discovery node

As HTTP does not support multicast discovery (as it uses the connection based TCP) it probably does not make much sense to include it in the discovery node. Maybe we should add a note that for this kind of direct discovery an HTTP node should be used?

Coverage remained the same at 33.816% when pulling fc856cce096db1ff47800fe616118befbb41b781 on remove-http into 31b556a832e42f71d7e9b8430c50cd17b8b7f927 on main.


Drop KotlinCompilerVersion as it's not necessary

Closes #39

Nice how things have improved

Thanks for all your help. I have just made a web version (finally!!!) of the converter: https://gradle-kotlin-converter.vercel.app/


[BUG] double free or corruption when compressing VDBs

Environment
Operating System:  Ubuntu 20.04
Version / Commit SHA: master
** Other ** : Using the Python interface
Describe the bug
I'm not quite sure how to describe this bug, I'm still hunting it and trying to develop a small test that always fails.
The problem is the following, I'm trying to write .vdb from the python interface....and SOMETIMES, it does crash (double-free error).  After chasing a bit I knew it was related to the blos-c library but I couldn't get a debug backtrace so far. It looks like something is being freed there twice.
The last point on the OpenVDB library is:
https://github.com/AcademySoftwareFoundation/openvdb/blob/ad209a385f13cad88315b114db1c728f1bbcd2dd/openvdb/openvdb/io/Compression.cc#L207
Since a raw pointer is being used (C-interface), I guess that this error might happen indeed.
I have a gut feeling that this might be related to the Python GIL, but I'm not quite sure. I'm opening this issue to keep track of the problems and hopefully help others out there that are also struggling with the same.
Typicall Error output
One case:
double free or corruption (out)

The other case:
free(): invalid size

To Reproduce
WIP ....
Additional context
Here is the full backtrace
>>> bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007f83e61cd859 in __GI_abort () at abort.c:79
#2  0x00007f83e62383ee in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7f83e6362285 "%s\n") at ../sysdeps/posix/libc_fatal.c:155
#3  0x00007f83e624047c in malloc_printerr (str=str@entry=0x7f83e6364670 "double free or corruption (out)") at malloc.c:5347
#4  0x00007f83e6242120 in _int_free (av=0x7f83e6393b80 <main_arena>, p=0x7f82100cbe10, have_lock=<optimized out>) at malloc.c:4314
#5  0x00007f823c69a1b0 in do_job () from /usr/local/lib/libblosc.so.1
#6  0x00007f823c69a45d in blosc_compress_context () from /usr/local/lib/libblosc.so.1
#7  0x00007f823c69a766 in blosc_compress_ctx () from /usr/local/lib/libblosc.so.1
#8  0x00007f8236f96684 in openvdb::v9_0::io::bloscToStreamSize(char const*, unsigned long, unsigned long) () from /usr/local/lib/libopenvdb.so.9.0
#9  0x00007f8236f85d79 in openvdb::v9_0::tree::LeafManager<openvdb::v9_0::tree::Tree<openvdb::v9_0::tree::RootNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::LeafNode<float, 3u>, 4u>, 5u> > > const>::LeafTransformer<openvdb::v9_0::io::(anonymous namespace)::PopulateDelayedLoadMetadataOp::operator()<openvdb::v9_0::Grid<openvdb::v9_0::tree::Tree<openvdb::v9_0::tree::RootNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::LeafNode<float, 3u>, 4u>, 5u> > > > >(openvdb::v9_0::Grid<openvdb::v9_0::tree::Tree<openvdb::v9_0::tree::RootNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::LeafNode<float, 3u>, 4u>, 5u> > > > const&) const::{lambda(openvdb::v9_0::tree::LeafNode<float, 3u> const&, unsigned long)#1}>::operator()(openvdb::v9_0::tree::LeafManager<openvdb::v9_0::tree::Tree<openvdb::v9_0::tree::RootNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::LeafNode<float, 3u>, 4u>, 5u> > > const>::LeafRange const&) const () from /usr/local/lib/libopenvdb.so.9.0
#10 0x00007f8236f86c88 in void tbb::interface9::internal::dynamic_grainsize_mode<tbb::interface9::internal::adaptive_mode<tbb::interface9::internal::auto_partition_type> >::work_balance<tbb::interface9::internal::start_for<openvdb::v9_0::tree::LeafManager<openvdb::v9_0::tree::Tree<openvdb::v9_0::tree::RootNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::LeafNode<float, 3u>, 4u>, 5u> > > const>::LeafRange, openvdb::v9_0::tree::LeafManager<openvdb::v9_0::tree::Tree<openvdb::v9_0::tree::RootNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::LeafNode<float, 3u>, 4u>, 5u> > > const>::LeafTransformer<openvdb::v9_0::io::(anonymous namespace)::PopulateDelayedLoadMetadataOp::operator()<openvdb::v9_0::Grid<openvdb::v9_0::tree::Tree<openvdb::v9_0::tree::RootNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::LeafNode<float, 3u>, 4u>, 5u> > > > >(openvdb::v9_0::Grid<openvdb::v9_0::tree::Tree<openvdb::v9_0::tree::RootNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::LeafNode<float, 3u>, 4u>, 5u> > > > const&) const::{lambda(openvdb::v9_0::tree::LeafNode<float, 3u> const&, unsigned long)#1}>, tbb::auto_partitioner const>, openvdb::v9_0::tree::LeafManager<openvdb::v9_0::tree::Tree<openvdb::v9_0::tree::RootNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::LeafNode<float, 3u>, 4u>, 5u> > > const>::LeafRange>(tbb::interface9::internal::start_for<openvdb::v9_0::tree::LeafManager<openvdb::v9_0::tree::Tree<openvdb::v9_0::tree::RootNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::LeafNode<float, 3u>, 4u>, 5u> > > const>::LeafRange, openvdb::v9_0::tree::LeafManager<openvdb::v9_0::tree::Tree<openvdb::v9_0::tree::RootNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::LeafNode<float, 3u>, 4u>, 5u> > > const>::LeafTransformer<openvdb::v9_0::io::(anonymous namespace)::PopulateDelayedLoadMetadataOp::operator()<openvdb::v9_0::Grid<openvdb::v9_0::tree::Tree<openvdb::v9_0::tree::RootNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::LeafNode<float, 3u>, 4u>, 5u> > > > >(openvdb::v9_0::Grid<openvdb::v9_0::tree::Tree<openvdb::v9_0::tree::RootNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::LeafNode<float, 3u>, 4u>, 5u> > > > const&) const::{lambda(openvdb::v9_0::tree::LeafNode<float, 3u> const&, unsigned long)#1}>, tbb::auto_partitioner const>&, openvdb::v9_0::tree::LeafManager<openvdb::v9_0::tree::Tree<openvdb::v9_0::tree::RootNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::LeafNode<float, 3u>, 4u>, 5u> > > const>::LeafRange&) () from /usr/local/lib/libopenvdb.so.9.0
#11 0x00007f8236f86f2e in tbb::interface9::internal::start_for<openvdb::v9_0::tree::LeafManager<openvdb::v9_0::tree::Tree<openvdb::v9_0::tree::RootNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::LeafNode<float, 3u>, 4u>, 5u> > > const>::LeafRange, openvdb::v9_0::tree::LeafManager<openvdb::v9_0::tree::Tree<openvdb::v9_0::tree::RootNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::LeafNode<float, 3u>, 4u>, 5u> > > const>::LeafTransformer<openvdb::v9_0::io::(anonymous namespace)::PopulateDelayedLoadMetadataOp::operator()<openvdb::v9_0::Grid<openvdb::v9_0::tree::Tree<openvdb::v9_0::tree::RootNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::LeafNode<float, 3u>, 4u>, 5u> > > > >(openvdb::v9_0::Grid<openvdb::v9_0::tree::Tree<openvdb::v9_0::tree::RootNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::InternalNode<openvdb::v9_0::tree::LeafNode<float, 3u>, 4u>, 5u> > > > const&) const::{lambda(openvdb::v9_0::tree::LeafNode<float, 3u> const&, unsigned long)#1}>, tbb::auto_partitioner const>::execute() () from /usr/local/lib/libopenvdb.so.9.0
#12 0x00007f82281fb545 in ?? () from /lib/x86_64-linux-gnu/libtbb.so.2
#13 0x00007f82281fb80f in ?? () from /lib/x86_64-linux-gnu/libtbb.so.2
#14 0x00007f82281f4bd7 in ?? () from /lib/x86_64-linux-gnu/libtbb.so.2
#15 0x00007f82281f3498 in ?? () from /lib/x86_64-linux-gnu/libtbb.so.2
#16 0x00007f82281ef880 in ?? () from /lib/x86_64-linux-gnu/libtbb.so.2
#17 0x00007f82281efa8d in ?? () from /lib/x86_64-linux-gnu/libtbb.so.2
#18 0x00007f83e618e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#19 0x00007f83e62ca293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

I found a way to reproduce this bug, I have a problematic "grid" that I serialized with pickle to load it and reproduce this errors
import pickle
import pyopenvdb as vdb

grid = pickle.load(open("./grid.pkl", "rb"))
vdb.write("test.vdb", grid)
[grid.zip](https://github.com/AcademySoftwareFoundation/openvdb/files/8102779/grid.zip)

This gives:
double free or corruption (out)
[1]    4177624 abort (core dumped)  ipython3

Please note that the grid is working "fine" once it's deserialized with the pickle interface:
import pickle
import pyopenvdb as vdb

grid = pickle.load(open("./grid.pkl", "rb"))

print(grid.evalActiveVoxelBoundingBox())
print(grid.metadata)
print(grid.evalMinMax())

Spits:
((625, 548, -17), (1704, 1791, 61))
{'class': 'level set', 'name': '000349'}
(-0.29852765798568726, 0.2999999225139618)

Hi @nachovizzo - I suspect this due to you trying to use a delay loaded byte streamed VDB into a vdb.write call. If you try to write out a delay loaded grid as a byte stream (which is what I imagine happened with your plk file originally) you will get into all sorts of weirdness. I would try your test again, but this time with the environment variable OPENVDB_DISABLE_DELAYED_LOAD=1 exported. With that set, regenerate your plk file and try your read/write test.

I suspect this due to you trying to use a delay loaded byte streamed VDB into a vdb.wri

I'm not intentionally doing this :) So, this happens randomly when using the VDBFusion pipeline, sometimes when the python client is trying to write a vdb it just crashes to the above message. But it looks like it's not a problem of OpenVDB

What solved your problen @nachovizzo, do you still get the errors?

Hello @lthiet I haven't :)


Feature Request: Custom Labels

I'd like to add custom labels to the metrics.
Perhaps a comma delimited argument:
--labels=foo=bar,hello=world

Nvm, just learned that this should be done in Prometheus config.


thinking about removing preview state

using a "show preview" toggle in the output view should be enough?
Feels like a good place to put it.

yeah, I will definitely remove it


Blink plugin: BTCPay 2.0.0 incompatibility

see https://github.com/btcpayserver/btcpayserver/issues/6200 the issue seems to come from blink plugin and

This will be fixed by https://github.com/btcpayserver/btcpayserver/pull/6202
Basically BTCPay 2.0, use have msat precision for LN, but Blink don't support it. The issue of providers not creating exactly the amount expect isn't limited to Blink, @rockstardev also had the problem with Strike.
As such, I came up with a "hack" where I add a positive or negative paymentMethodFee when that happen, that way the amount returned by the lightning client is matching the amount of invoice + fee.
This fee won't show up in the checkout but nevertheless exists.


Evaluate need for relative humidity sensor in humidifier

Can we get away without one and just do open loop control on the humidifier?
or do we need to target a specific RH?
What is the tolerance on the RH?
Possible sensor: https://www.sparkfun.com/products/9569

This ticket was Closed in the Hardware project. Moved it to Mechanical and Pneumatics and closed it.

This ticket was Closed in the Hardware project. Moved it to Mechanical and Pneumatics and closed it.

It appears that this was not superseded by another ticket and we still lack formal evaluation of this question.

It appears that this was not superseded by another ticket and we still lack formal evaluation of this question.

Given that humidity changes throughout the day, depending on the weather and the environment they are in, we would want the patient to be comfortable with the air they breathe in. I think we do need a controller. I believe tolerances would be need to be in within 1C of the corresponding RH change based on the research I just did.
honeywell-sensing-sensors-ventilators-application-note-009041-11-en.pdf
WHITE-PAPER-Relative-Humidity-Sensor-Behavior-and-Care.pdf


improvement: proxy_requests for sensu::check

Hello,
sensu::check can be improved with a new attribute: proxy_requests
Since sensu version 0.28.0, there is a new feature called: proxy check requests
Today, there is a workaround by using custom attributes

sensu::check { "remote_http-uchiwa":
    command             => "PATH=/opt/sensu/embedded/bin/:\$PATH check-http.rb -u http://:::address::::3000",
    occurrences         => 2,
    interval            => 300,
    refresh             => 600,
    low_flap_threshold  => 20,
    high_flap_threshold => 60,
    standalone          => false,
    subscribers         => 'poller',
    custom              => {
        'proxy_requests' => {
            'client_attributes' => {
                'subscriptions' => 'eval: value.include?("infra-monitoringwebui")'
            }
        }
    },
}

could be improved by a builtin attribute for sensu::check
example:
sensu::check { "remote_http-uchiwa":
    command             => "PATH=/opt/sensu/embedded/bin/:\$PATH check-http.rb -u http://:::address::::3000",
    occurrences         => 2,
    interval            => 300,
    refresh             => 600,
    low_flap_threshold  => 20,
    high_flap_threshold => 60,
    standalone          => false,
    subscribers         => 'poller',
    proxy_requests	=> {
    	'client_attributes' => {
        	'subscriptions' => 'eval: value.include?("infra-monitoringwebui")'
        }
    },
}

since 'client_attributes' seems a hardcoded and mandatory keyword, it could be included as default
resulting as a simpler attributes like:
    proxy_requests	=> {
    	'subscriptions' => 'eval: value.include?("infra-monitoringwebui")'
    },

sadly, I have no idea how to implement it in sensu/lib/puppet !
Kind regards

@crayfishx this should be very similar to https://github.com/sensu/sensu-puppet/commit/f83e3bfc28f5e23c883422e508c478e6343ea4bf where I added a few parameters to match the API.

Thanks for the great explanation @exeral
@jeffmccune has implemented this and it is released in v2.21.0


V3.10.x to do branch

Contains v3. 9x--offline-tx-2 && v3.10.0-offline signing and color stuff
From Todo:
#1 added ng-init to set view wallet
#2 added ng-init to set send tx
#4 set ng-init to send tx
#5 wd now set to false initially
#8 ch {{unitReadable}} >> {{ajaxReq.type}}
#9 added online/offline indicator to top logo

[ ] Send ETH/ETC

[ ] Send Token

[ ] Send Online

[ ] Try to sign with different key than the address you entered -- need to show new text? "You unlocked a different account than the address you originally entered. Do you want to sign with this new address?"

[ ] Check gas price -- try to fuck it up

[ ] Broadcast a signed TX

[ ] View a TX

[ ] Check query string for View TX page: https://www.myetherwallet.com/?txHash=0x04f6ab30d52a6fa2551b41aafedc531aa8ead1ed145a6f748328df1855a40e63#check-tx-status

[ ] Test BTC -> ETH swap

[ ] Test BTC -> ETH swap

[ ] Try to swap more than you have in your account - should show error

[ ]  ENS - Start an auction, reveal, finalize

[ ] Contracts - deploy contract

online
offline

[ ] Contracts - interact with contract

online
offline

[ ] Create wallet - test flow

[ ] View Wallet

[ ]  Unlock PK

[ ]  Unlock bad PK

[ ]  Unlock Ledger

[ ] Unlock TREZOR

[ ]  Unlock Keystore w/ correct PW

[ ] Unlock Keystore w/ incorrect PW - show error

[ ] Unlock mnemonic

[ ] Check that all paths match current site

[ ] Check gas price in header vs inline

[ ] Nodes - make sure modal appears on custoom, you can change nodes, colors change, etc.

[ ] Check that add custom token works

[ ]  Check that Bity Swap button and Coinbase buttons work

[ ]  Check buttons shown after you send a transaction


Prepare updates for new kasiopea website

The REST API spec is temporarily available from http://<IP_ADDRESS>/kasapi/

This will also solve #4 and #3


Remove auto focus when not needed

Hi, Thanks for the lib, work perfect! I only have one problem with the auto focus, when click in the page on other element  always focus the terminal and scroll the page. For me is working fine I hope can be usefully for others.

Thanks for submitting this PR, @DonsWayo... This issue should now be resolved by https://github.com/jonmbake/react-terminal-ui/commit/6261226cb1a3ffbd9d7f2a79dc41233cb0d165f2.


enquire link and deliver sm may not be sent

https://github.com/komuw/naz/blob/c9cc0a4a883d3777384cb8206c4120e3d2e93fe4/naz/client.py#L1081-L1085
we are sending a dict that has a pdu that is bytes. bytes are not json serializeable, which is what brokers may try to save items as.

discovered via fuzz testing

We need a message protocol that is enforced in code. see; https://github.com/komuw/wiji/blob/master/wiji/protocol.py


Make homepage tags more responsive

Types of changes

[X] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[X] My code follows the code style of this project.
[X] My change requires a change to the documentation.
[X] I have updated the documentation accordingly.
[X] I have read the CONTRIBUTING and other relevant documents.

Description

fix: the course-management-tag is responsive, so that it's in every resolution readable

Hey @MRX1621 can you please edit your commit message to follow our commit guidelines? Thanks 🦖

commit message is updated

No still isn't updated also doesn't follow semantic commit messages guidelines, find examples here.


feat: created tags and avatar components and added stories for them

This PR creates the following components and adds stories for them:

tags
avatar

/rtm


Confusing instructions for "Migration To Edge Fields"

I think the instructions on this section are quite confusing or they don't respect what happens (at least with versions: entgo.io/contrib v0.2.1-0.20220601200333-78aa88292a62, entgo.io/ent v0.10.2-0.20220606082056-dd4519f935a6).

If I use what you say:
func (Player) Fields() []ent.Field {
  return []ent.Field{
    field.String("name"),
    field.Int("author_id"),
  }
}

func (Player) Edges() []ent.Edge {
  return []ent.Edge{
    edge.To("author", User.Type).
      Field("author_id").
      StorageKey(edge.Column("player_author")).
      Unique().
      Required(),
  }
}

I'm still getting the column player_author instead of author_id.

The comment in https://github.com/ent/ent/issues/548#issuecomment-643636090 explained the motivation for this naming. The section about "migration to edge fields" describes how to migrate to this feature for applications that didn't use it before, have tables in the existing database, and want to point an existing column (with an old name) to the new struct field with a different name (can be any name).
In your case, you can omit the edge.Column option.

I'm using this code instead to get the author_id.
func (Player) Fields() []ent.Field {
  return []ent.Field{
    field.String("name"),
    field.Int("author_id"),
  }
}

func (Player) Edges() []ent.Edge {
  return []ent.Edge{
    edge.To("author", User.Type).
      Field("author_id").
      Unique().
      Required(),
  }
}

Is it correct?


Hi i have some issues when i use command "python main.py" i getting this

Traceback (most recent call last):
File "C:\Users\jakub\Desktop\bypass_utility-master\main.py", line 237, in
main()
File "C:\Users\jakub\Desktop\bypass_utility-master\main.py", line 38, in main
raise RuntimeError("Default config is missing")
RuntimeError: Default config is missing

I think " default_config.json5 " file missing in bypass_utility folder
Check bypass_utility folder extract and add below file
default_config.zip

now i getting this[image: image.png]
pon., 16 sie 2021 o 06:08 Rony Mondal @.***> napisał(a):

I think " default_config.json5 " file missing in bypass_utility folder
Check bypass_utility folder extract and add below file
default_config.zip
https://github.com/MTK-bypass/bypass_utility/files/6989715/default_config.zip
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/MTK-bypass/bypass_utility/issues/46#issuecomment-899198454,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AIYQMWQJEPWHECMZNMHWTRTT5CFM7ANCNFSM5CF357YA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email
.

You're missing the exploit_collection.
Please refer to the Readme


Controls not showing on android

On android I see only the black skin without controls.
It works good on windows phone/ios/ie/chrome/firefox

I can see it working at videogular's website with Android 5.0: http://www.videogular.com/
Which Android version?

sorry, the version is 4.0.3 and 4.3.0

It worked for me in the simulator with Android 4.3.0.
Could be a problem with your device or configuration?

I can verify that the controls do not appear on a Google Nexus 7 4.1.1 (API 16)
What could be the problem?

@deliverymanager maybe is a CSS problem, controls are using display table to arrange the items.


Domain language: improve "Scope" name

currently a task is a scope, and a scope has heroes which can worked on its tasks
The wording "scope" is pretty weak though.
Also, tasks will be renamed to missions, cf https://github.com/ManoManoTech/hexa-playground/issues/4
A better name is thus welcome

Squad feels good actually :)


Fix bug with paths containing subdirectories

Previously, if an icon path containing a subdirectory (eg. 'icons/myicon') was passed to get_icon_sage_path($icon), the subdirectory would be stripped from the final hashed path, resulting in an exception due to the file not being found.
More details: https://github.com/Log1x/blade-svg-sage/issues/11

@Log1x: Any chances that this PR is going to be reviewed and merged?


Function pointers are implicitly convertible from literal 0

I remember our conversation from a while ago, and I wanted to record it here also. If the in_place is represented as a pointer to function, it is always possible to initialize it with the literal 0, thus adding lots of confusion:
optional<rational<BigInt>> or{0};

I may be thinking that I am creating a BigInt of value 0, but instead I am triggering the in_place constructor with unpredictable behavior. I recently needed to fix a similar issue boost::optional.
Perhaps instead of function pointers you could use variable templates to achieve a similar goal?
Or perhaps you could add yet another overload that would be a worse match than a constructor taking T, but a better match than the in_place constructor, and would intercept the attempts to pass constant 0 and thus prevent the bug?

I had a variable template up to yesterday :). I don't mind to rollback this change.

I have update the proposal rolling back the in_place optional changes. I've replaced the in_place by in_place_f for any.
https://github.com/viboes/std-make/commit/71cfef2c44447f9390124d2ac3ed9a59426fbc9a
Please let me know if this fixes the issue.
Any additional comments are welcome.

So, in_place remains a 'tag' class. This fixes an issue for optional. If I read a similar issue is still present for any. Since in_place_f is a function pointer, I gather that it is possible to do this:
std::any a (0);

But perhaps for any it is not that much of an issue, as there is no T in sight that could ass to confusion.
But what is supposed to happen when I type:
std::any a (nullptr);

?

The parameter in_place_t (*)(undefined<T>) can not be deduced from 0 neither from nullptr. This is not the case for in_place_t (*)()so we can not use it for optional.

Agustin has found a way to have in_place for both optional and any :)
https://github.com/eggs-cpp/variant/issues/8#issuecomment-138346548

...and the upcoming variant!

Moving to references has no the issue.