Investigate why we couldn't automatically recover from bad block

Restarting besu recovered this node (presumably by clearing the bad block cache)
withdrawal-devnet-7-lodestar-besu-2
2023-02-14 11:07:26.845+00:00 | vert.x-worker-thread-0 | INFO  | AbstractEngineForkchoiceUpdated | VALID for fork-choice-update: head: 0xad2a20b926f3fed3a5eaca74ad7bc871b884795e3daa6a5d0adeb9c70bb94171, finalized: 0x91aaad4049972ce7652bcd3578b50b9e5babfb63eb1f61581ac8c0396800539b, safeBlockHash: 0xc2069a31a17c07bd84e29f09ccc3aad65e7c9dac8bc37acf2cf5e022ce878cf7
2023-02-14 11:07:36.685+00:00 | vert.x-worker-thread-0 | INFO  | AbstractEngineNewPayload | Imported #614 / 6 tx / base fee 7 wei / 324,673 (1.1%) gas / (0x7cd07f56b3456571700a4b682221070c00637f1f8862952aed0435158348940f) in 0.008s. Peers: 29
2023-02-14 11:08:00.448+00:00 | vert.x-worker-thread-0 | INFO  | AbstractEngineNewPayload | Imported #615 / 4 tx / base fee 7 wei / 214,405 (0.7%) gas / (0x257b373dd605c65ef1bb61324c912d1c6522e130e4afa13041db9e1050144667) in 0.003s. Peers: 30
2023-02-14 11:08:12.344+00:00 | vert.x-worker-thread-0 | INFO  | AbstractEngineNewPayload | Imported #616 / 8 tx / base fee 7 wei / 434,882 (1.4%) gas / (0x7cfd756ed04b64d68c35c4ed965ae3b4d0804f70f64eafbb3abfaa8ab41a14fd) in 0.006s. Peers: 29
2023-02-14 11:08:13.626+00:00 | PoS-Block-Builder-0 | INFO  | AbstractBlockProcessor | Block processing error: transaction invalid transaction nonce 1848 below sender account nonce 1856. Block 0xd4ff381bb41109fb4396d3a1b5807896fbec260291f2b4b8cb97f29f404490b7 Transaction 0xaccca88128b365ddf31a7f074aaad1817f66c246cd66b6282022d2aa1b5965e8
2023-02-14 11:08:13.627+00:00 | PoS-Block-Builder-0 | INFO  | MainnetBlockValidator | Invalid block 616 (0xd4ff381bb41109fb4396d3a1b5807896fbec260291f2b4b8cb97f29f404490b7): Optional[Block processing error: transaction invalid transaction nonce 1848 below sender account nonce 1856. Block 0xd4ff381bb41109fb4396d3a1b5807896fbec260291f2b4b8cb97f29f404490b7 Transaction 0xaccca88128b365ddf31a7f074aaad1817f66c246cd66b6282022d2aa1b5965e8]
2023-02-14 11:08:13.627+00:00 | PoS-Block-Builder-0 | WARN  | MergeCoordinator | Block 0xd4ff381bb41109fb4396d3a1b5807896fbec260291f2b4b8cb97f29f404490b7 built for proposal identified by 0x00540b0f0717b164, is not valid reason Optional[Block processing error: transaction invalid transaction nonce 1848 below sender account nonce 1856. Block 0xd4ff381bb41109fb4396d3a1b5807896fbec260291f2b4b8cb97f29f404490b7 Transaction 0xaccca88128b365ddf31a7f074aaad1817f66c246cd66b6282022d2aa1b5965e8]
2023-02-14 11:08:13.632+00:00 | vert.x-worker-thread-0 | INFO  | AbstractEngineGetPayload | Fetch block proposal by identifier: 0x00540b0f0717b164, hash: 0xd4ff381bb41109fb4396d3a1b5807896fbec260291f2b4b8cb97f29f404490b7, number: 616, coinbase: 0xf97e180c050e5ab072211ad2c213eb5aee4df134, transaction count: 1
2023-02-14 11:08:13.987+00:00 | vert.x-worker-thread-0 | WARN  | AbstractEngineNewPayload | Invalid new payload: number: 616, hash: 0xd4ff381bb41109fb4396d3a1b5807896fbec260291f2b4b8cb97f29f404490b7, parentHash: 0x257b373dd605c65ef1bb61324c912d1c6522e130e4afa13041db9e1050144667, latestValidHash: 0x0000000000000000000000000000000000000000000000000000000000000000, status: INVALID, validationError: Block already present in bad block manager.
2023-02-14 11:09:12.629+00:00 | vert.x-worker-thread-0 | INFO  | AbstractEngineForkchoiceUpdated | INVALID for fork-choice-update: head: 0xcb346eb981ece0d69e0f2fbb43e4356b9590c1eb5b8b57918bc04e75267a9450, finalized: 0x670555653f86bc045878d2e23e939dd5dd76675fc7db36e49d7437a74ace3191, safeBlockHash: 0x670555653f86bc045878d2e23e939dd5dd76675fc7db36e49d7437a74ace3191
2023-02-14 11:10:12.687+00:00 | vert.x-worker-thread-0 | INFO  | AbstractEngineForkchoiceUpdated | INVALID for fork-choice-update: head: 0xf98d24915c1dca090c4ee029c2b4aacba1eecda00e00cd17a6dc75558721b55d, finalized: 0xe224bcb28c585b14254f6879c76662a87747e05e20c4a750f102a93271ad1d4e, safeBlockHash: 0xb02d8e8cbbd9e7b25f5a33664b54ed426e1f051357ec62e718eb7c8277611a7d
2023-02-14 11:11:02.557+00:00 | vert.x-worker-thread-0 | WARN  | AbstractEngineNewPayload | Invalid new payload: number: 616, hash: 0xd4ff381bb41109fb4396d3a1b5807896fbec260291f2b4b8cb97f29f404490b7, parentHash: 0x257b373dd605c65ef1bb61324c912d1c6522e130e4afa13041db9e1050144667, latestValidHash: 0x0000000000000000000000000000000000000000000000000000000000000000, status: INVALID, validationError: Block already present in bad block manager.
2023-02-14 11:12:00.227+00:00 | vert.x-worker-thread-0 | INFO  | AbstractEngineForkchoiceUpdated | INVALID for fork-choice-update: head: 0xcb346eb981ece0d69e0f2fbb43e4356b9590c1eb5b8b57918bc04e75267a9450, finalized: 0x670555653f86bc045878d2e23e939dd5dd76675fc7db36e49d7437a74ace3191, safeBlockHash: 0x670555653f86bc045878d2e23e939dd5dd76675fc7db36e49d7437a74ace3191
2023-02-14 11:13:00.304+00:00 | vert.x-worker-thread-0 | INFO  | AbstractEngineForkchoiceUpdated | INVALID for fork-choice-update: head: 0x79d3517d5a692bf7373f66b7e6729e095813febbf182bba8ec44b6cdf167ef80, finalized: 0xe224bcb28c585b14254f6879c76662a87747e05e20c4a750f102a93271ad1d4e, safeBlockHash: 0xb02d8e8cbbd9e7b25f5a33664b54ed426e1f051357ec62e718eb7c8277611a7d
2023-02-14 11:14:12.358+00:00 | vert.x-worker-thread-0 | INFO  | AbstractEngineForkchoiceUpdated | INVALID for fork-choice-update: head: 0xd465427f81f4487d3e0050970dd5b0efb9d5c98b7abae36be939512633a2fb14, finalized: 0xc904a81f36ad6e5ec5fb6c87b4c4aadf58ec91ef0c579fddd3c322ca8f3d5782, safeBlockHash: 0x89e32ed86356dee2b5d1791ebb6dcec1bc8ed48fa38162142183f5b24973a640
2023-02-14 11:14:34.824+00:00 | vert.x-worker-thread-0 | WARN  | AbstractEngineNewPayload | Invalid new payload: number: 616, hash: 0xd4ff381bb41109fb4396d3a1b5807896fbec260291f2b4b8cb97f29f404490b7, parentHash: 0x257b373dd605c65ef1bb61324c912d1c6522e130e4afa13041db9e1050144667, latestValidHash: 0x0000000000000000000000000000000000000000000000000000000000000000, status: INVALID, validationError: Block already present in bad block manager.
2023-02-14 11:15:25.995+00:00 | vert.x-worker-thread-0 | INFO  | AbstractEngineForkchoiceUpdated | INVALID for fork-choice-update: head: 0xcb346eb981ece0d69e0f2fbb43e4356b9590c1eb5b8b57918bc04e75267a9450, finalized: 0x670555653f86bc045878d2e23e939dd5dd76675fc7db36e49d7437a74ace3191, safeBlockHash: 0x670555653f86bc045878d2e23e939dd5dd76675fc7db36e49d7437a74ace3191
2023-02-14 11:16:26.073+00:00 | vert.x-worker-thread-0 | INFO  | AbstractEngineForkchoiceUpdated | INVALID for fork-choice-update: head: 0x2cb05f0ce1b115e1d62bab809d01a22a6eff88a911c4ae17774871565021f59c, finalized: 0x206e64ea5d13d95850dd38a6fce5eebca24faf7d8b8d05ab38f1d43f1386ba1b, safeBlockHash: 0xe224bcb28c585b14254f6879c76662a87747e05e20c4a750f102a93271ad1d4e

Notes:
In the snooper logs, we are getting a lot of eth_getBlockByNumber, bit weird how it's an array too...
Feb 15 00:19:35.040 2023 WARNING: request not formatted as JSON-RPC request [invalid type: map, expected u64 at line 2 column 2]:
[
  {
    "jsonrpc": "2.0",
    "method": "eth_getBlockByNumber",
    "params": [
      "0xa7",
      false
    ],
    "id": 4591221
  },
  {
    "jsonrpc": "2.0",
    "method": "eth_getBlockByNumber",
    "params": [
      "0xa8",
      false
    ],
    "id": 4591222
  },

We invalidated our block during building...I'm surprised we don't filter these transactions out from the txpool before this.
Transaction was included in a block with number 616 at some point though: https://beaconchain.withdrawal-devnet-7.ethpandaops.io/tx/accca88128b365ddf31a7f074aaad1817f66c246cd66b6282022d2aa1b5965e8#overview

Here's the beacon block (queried via another node: withdrawal-devnet-7-lodestar-besu-1)
using curl localhost:4000/eth/v2/beacon/blocks/641 | jq
Note Slot 639 = Block 615
Note Slot 640 = empty
Note Slot 641 = Block 616
{
  "data": {
    "message": {
      "slot": "641",
      "proposer_index": "552650",
      "parent_root": "0x3c7768170cdfc0199d4354cc83fd996febb4699563a06bb9944dcccfbc4e316f",
      "state_root": "0xeba14549569c412e21f97a3276b9e81eb37208f8c31558f9a9d1d362e555fb42",
      "body": {
        "randao_reveal": "0xb813c25417b5db455b19ed85926297d5d4b25ddc35004b12fd405fcd78eb6d8e992b9f0771cc8f7b4db49b8836fe62e70f2bfa35e7a1d9871f499b9765906db05c86a965c07c54b6af3b3ef2ea83d3be34a8da63fbb08ec1f04173311004c776",
        "eth1_data": {
          "deposit_root": "0xd70a234731285c6804c2a4f56711ddb8c82c99740f207854891028af34e27e5e",
          "deposit_count": "0",
          "block_hash": "0x670555653f86bc045878d2e23e939dd5dd76675fc7db36e49d7437a74ace3191"
        },
        "graffiti": "0x6c6f6465737461722d6265737500000000000000000000000000000000000000",
         ...
         ...
        "execution_payload": {
          "parent_hash": "0x257b373dd605c65ef1bb61324c912d1c6522e130e4afa13041db9e1050144667",
          "fee_recipient": "0xf97e180c050e5ab072211ad2c213eb5aee4df134",
          "state_root": "0xbd07ebca146dec4d76f35ff1019a2161f1a2e0384cf76295076c63a0d5165fc2",
          "receipts_root": "0xc5e845556bfccf0d767f7d4fd731838324572106d7fcffb7b49a583338f6b450",
          "logs_bloom": "0x10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000",
          "prev_randao": "0xf21be8e5f9532ed463d37f8fc854b291dcb9ebf285c7713e33f9a74869af562c",
          "block_number": "616",
          "gas_limit": "30000000",
          "gas_used": "50646",
          "timestamp": "1676372892",
          "extra_data": "0x",
          "base_fee_per_gas": "7",
          "block_hash": "0xd4ff381bb41109fb4396d3a1b5807896fbec260291f2b4b8cb97f29f404490b7",
          "transactions": [
            "0x02f9021f831469d38207388459682f008459682f0e830271009442424242424242424242424242424242424242428901bc16d674ec800000b901a422895118000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120b61367b7984752a1c59205aa97fe9fdcab45b3fe78babe3ab0e1add2a6a9725f0000000000000000000000000000000000000000000000000000000000000030aebfb831214f4f2032b18771de874b3a7d300260d2d3ddb9a604d94d4d3a96967ac219dfa63e7804b51539e6e5fe52fb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000ea53d19db06fb7daa8197206960757be5121032f5983ac7ff4412b2598086d0000000000000000000000000000000000000000000000000000000000000060864378cadfc68b7cd1f69ab1e9266642ed08278d1866b982ba718343d8419575cd8773308a3e2130b636b3331ea8f8030923b2b870ac87f6bab40b27c166465958cd6e51dc70653c40ec304cf64e5486ebb0e685b1b9abdcbca5d9c0076bbceec001a04824f05c44edf3137fab097192181ad206b816d74b3e984c59c8345f9ad7cbd2a06f1256c456eb8d00ccc15e3c88c8a73a418c0ff4faccdd3f4d76883c2ca178fd"
          ]
        }
      }
    },
    "signature": "0x8268a6121c2a5af45fa58ab5244e14fab9209d622acfa3a406352d4f45408ef300e0041765716ac84ae43f7b0dd79e11157057a113a1b91f7799b3e5d4b7deddf76c18c5b16464311a8bed9a1b1bfc2e354d6c8f6f432d4ab52e12bc2cc565fe"
  },
  "version": "bellatrix",
  "execution_optimistic": false
}

"proposer_index": "552650",

It looks like withdrawal-devnet-7-lodestar-besu-2 was still the proposer according to this https://github.com/ethpandaops/withdrawals-testnet/tree/master/withdrawal-devnet-7

Beacon logs during this time:
Feb-14 11:08:02.920[api]             error: Error on publishContributionAndProofs [0] slot=639, subcommitteeIndex=0 code=SYNC_COMMITTEE_ERROR_NOT_CURRENT_SLOT, currentSlot=640, slot=639
Feb-14 11:08:02.921[rest]            error: Req req-ago publishContributionAndProofs error  code=SYNC_COMMITTEE_ERROR_NOT_CURRENT_SLOT, currentSlot=640, slot=639
Feb-14 11:08:06.108[eth1]            error: Error updating eth1 chain cache  JSON RPC error: Number of requests exceeds max batch size, batch
Feb-14 11:08:06.164[]                 info: Synced - slot: 640 (skipped 1) - head: 639 0x3c77…316f - execution: valid(0x257b…4667) - finalized: 0xa249…3f7b:18 - peers: 50
Feb-14 11:08:13.988[eth1]            error: Error updating eth1 chain cache  JSON RPC error: Number of requests exceeds max batch size, batch
Feb-14 11:08:14.074[chain]           error: Block error slot=641 code=BLOCK_ERROR_EXECUTION_ERROR, execStatus=INVALID, errorMessage=Block already present in bad block manager.
Feb-14 11:08:14.081[rest]            error: Req req-ahd publishBlock error  code=BLOCK_ERROR_EXECUTION_ERROR, execStatus=INVALID, errorMessage=Block already present in bad block manager.
Feb-14 11:08:15.519[eth1]            error: Error updating eth1 chain cache  JSON RPC error: Number of requests exceeds max batch size, batch
Feb-14 11:08:18.480[]                 info: Synced - slot: 641 (skipped 1) - head: 640 0xb029…e6cb - execution: valid(0x7cfd…14fd) - finalized: 0xa249…3f7b:18 - peers: 50
Feb-14 11:08:21.118[chain]           error: Failed to run prepareForNextSlot nextEpoch=21, isEpochTransition=false, prepareSlot=642 code=PROTO_ARRAY_INVALID_LVH_EXECUTION_RESPONSE, lvhCode=ValidToInvalid, blockRoot=0x3c7768170cdfc0199d4354cc83fd996febb4699563a06bb9944dcccfbc4e316f, execHash=0x257b373dd605c65ef1bb61324c912d1c6522e130e4afa13041db9e1050144667
Feb-14 11:08:24.187[]                error: Process shutdown requested  code=PROTO_ARRAY_INVALID_LVH_EXECUTION_RESPONSE, lvhCode=ValidToInvalid, blockRoot=0x3c7768170cdfc0199d4354cc83fd996febb4699563a06bb9944dcccfbc4e316f, execHash=0x257b373dd605c65ef1bb61324c912d1c6522e130e4afa13041db9e1050144667
Feb-14 11:08:24.798[rest]            error: Req req-ahq produceBlockV2 error  code=PROTO_ARRAY_INVALID_LVH_EXECUTION_RESPONSE, lvhCode=ValidToInvalid, blockRoot=0x3c7768170cdfc0199d4354cc83fd996febb4699563a06bb9944dcccfbc4e316f, execHash=0x257b373dd605c65ef1bb61324c912d1c6522e130e4afa13041db9e1050144667
Feb-14 11:08:24.804[]                 info: Stopping gracefully, use Ctrl+C again to force process exit
Feb-14 11:08:27.848[]                 info: Lodestar network=testnet, version=v1.4.3/3236de8, commit=3236de87c9fc54b06902c6317f53d5f41d8a7acf
Feb-14 11:08:27.887[]                 info: Connected to LevelDB database path=/beacondata/chain-db
Feb-14 11:08:43.351[]                 info: Initializing beacon from a valid db state slot=0, epoch=0, stateRoot=0xb7cea36464ae50c0ce29877172b39417ac8f8c19e5c612cdf6b81e6f4752eb75, isWithinWeakSubjectivityPeriod=true

My guess is that we create a bad block and mistakenly add it to the bad blocks (soon to be resolved by https://github.com/hyperledger/besu/pull/5082)
...but return a valid block to our CL on a retry.
Then when the CL plays our own valid block back to us, it has the same hash as the previously invalid one, so due to this code, we keep returning INVALID:
https://github.com/hyperledger/besu/blob/main/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/AbstractEngineNewPayload.java#L178-L187
The main thing that I don't understand is why this doesn't happen for all the other cases of misreporting our own bad blocks...the unique thing with this is the transaction nonce error (as opposed to a concurrency error).
Perhaps this type of invalidation leads to a the same block hash whereas for some reason the concurrency-error type leads to a different block hash?
Either way, https://github.com/hyperledger/besu/pull/5082 should avoid this I hope

The main thing that I don't understand is why this doesn't happen for all the other cases of misreporting our own bad blocks...the unique thing with this is the transaction nonce error (as opposed to a concurrency error).
Perhaps this type of invalidation leads to a the same block hash whereas for some reason the concurrency-error type leads to a different block hash?

The first thing the block builder does is create and cache an empty block before handing off to the thread. One possibility is that the block building thread failed on the first iteration which perhaps means the block hash that ended up in the bad block cache was for an empty block.
Then if subsequent block building iterations had no valid transactions, they too would build a VALID empty block with the same hash (since the header data should be the same). This VALID block gets returned to the CL and propagated, but when we try to import via newPayload, it's found in our bad block cache.

I am happy that I can explain everything that happened here and there are fixes already done or in flight.
I have created an new bug issue #5120.


[SHPOS-998] Fix display bugs in ARRAYINFO command

Fix display bugs in ARRAYINFO command.

Close this pull request as it is merged to a wrong branch (main).


How to perform arithmetic on keys

I am new to this library (and HE generally) and was wondering how to take two secret keys and use their difference as a new secret key for decryption. I am using <DCRTPoly>. I guess direct operator overloading does not make sense but is there a functionality I can use for performing arithmetic?
Here is a trimmed-down version of what I am trying to achieve -
    CryptoContext<DCRTPoly> c = GenCryptoContext(parameters);
    c->Enable(PKE);
    KeyPair<DCRTPoly> kp = c->KeyGen();
    PrivateKey<DCRTPoly> s = kp.secretKey;

    CryptoContext<DCRTPoly> c0 = GenCryptoContext(parameters);
    c0->Enable(PKE);
    KeyPair<DCRTPoly> kp0 = c0->KeyGen();
    PrivateKey<DCRTPoly> s0 = kp0.secretKey;

    // Initialize a private key as the difference between the two private keys
    PrivateKey<DCRTPoly> s1 = s - s0; // The kind of functionality I need.

Thanks for your help in resolving this.

Please ask the question in the OpenFHE discourse forum at https://openfhe.discourse.group/


Add "BUNDLED_WITH" specification to Gemfile.lock

From version 1.10, this specification is added to the tail of Gemfile.lock.
ref. https://github.com/bundler/bundler/blob/master/CHANGELOG.md#1100pre2-2015-05-07

This PR is the notification for the developers.
We have to upgrade Bundler version to 1.10.x. If using the version <= 1.9.x, Gemfile.lock is overwritten by bundle install everytime.

We only have to run the following command.
gem install bundler

But I recommend to uninstall all old versions at first.
gem list | grep bundler
#=> bundler (1.10.2, 1.9.4)

gem uninstall bundler -v 1.9.4

What's this error???? I'm not sure about this.

I have changed the commit.
before: https://github.com/kaosf/shirasagi/commit/8d7b329a33841846abfa1ba0b76898f4bd8eaf03
after: https://github.com/kaosf/shirasagi/commit/ceaa6b9794fa829e21acd31890fef5d562c0918b


Redirection test should recognize 308s

308 is a valid permanent redirect code like 301, so twa should handle it correctly. Right now, it results in an UNK:
UNK(redacted): HTTP sends an HTTPS location but with a weird response code: 308

I would like to offer a PR to address this issue, it that's okay.


[FIX] Write .h5ad files

PR Checklist

[x] This comment contains a description of changes (with reason)
[x] Referenced issue is linked
[x] If you've fixed a bug or added code that should be tested, add tests!
[x] Documentation in docs is updated

Description of changes

Fix #337 and #333
Issue: Cannot write dtype object to .h5ad files.
Fix:

convert any non numerical and non bool column to dtype category.
booleans gotta be treated as dtype boolean though (see https://github.com/theislab/anndata/issues/724)
fixed for move_to_obs, encoding and caching
fixed an issue that caused numerical only data in X to be flagged as object dtype while reading from cache

New feature:

It's now possible to write unencoded AnnData objects to .h5ad files. (relates to #333)

Current Issues:

writing nullable booleans is currently not supported by AnnData 0.7.8
--> but this got added in 0.8.0 which should be released in the next few days

Please merge development into this and fix the dependencies, please.


Feature suggestion for trillium: Stock handler for catching panics and generating server errors

I'd love to have a stock handler that wraps another handler and catches any panics, turning them into server errors. I'm happy to write and submit one, if this sounds reasonable.

I tidied up an old branch that allows for unwinding, but I'm still unsure if it's a good idea to support this, as it feels like a misuse of panic unwinding. Because the Conn contains the Transport, unwinding a panic into a http error is accomplished with a Drop implementation on trillium::Conn that effectively takes all of the inner state and sends it to a FnOnce that gets attached to the Conn.
If you can find a way to do this without changes to trillium itself, I'd be keen to hear about that, but because the Transport is not necessarily Clone and is owned by the Conn, I think this requires changes to trillium. It looks like it's semver-patch, though
I'll PR this and possibly gate it behind a feature pending further experimentation, as "panic for flow control" seems like a big hack.

@jbr I'm not looking to do "panic for flow control" here; this is to catch unexpected panics and avoid killing the whole server.
I think you could simplify this, by not preserving any of the state from the existing Conn, and just making a new Conn with no state to handle the internal server error, or even just sending a hardcoded HTTP response over the Transport. And you could require that the transport implements Clone in order to support this, since many transports will. (That's still not trivial, since Conn boxes the transport. :( ) Then clone the transport before running the original Handler, replace the transport in the original Conn with one that flags (via AtomicBool) if any bytes have been written yet, and iff no bytes have been written when the panic occurs, use the cloned Transport to send the internal server error.

That said, perhaps trying to return a response from an unexpected panic is unnecessary, and it might suffice to catch panics and close the connection. I may try that for simplicity, if solutions that allow returning a response are too complex.

Nevermind, I see the problem now: building this as a handler leaves nothing to return as the Conn after catching a panic.

I would welcome a suggestion for how to make panics not bring down the server, and to be able to finish any open tracing spans (so that they can be sent off for telemetry). It doesn't matter to me if that's a Handler or something else. I'm much less concerned about being able to successfully send an HTTP 500, though that'd be nice.
This is something that was straightforward to do with Tide.

Which runtime are you using? My understanding was that all of the current runtime adapters do what you're suggesting as default behavior; hanging up on the http client but continuing to process requests. If that's not the case, I'd consider that a bug. Sending a 500 would be the new behavior, and I've been convincing myself the drop-channel thing isn't terribly gross since it's a best effort that falls back to the current behavior if drop never runs

@jbr ...well, that's fascinating. I had been looking for that functionality in trillium, and I had no idea that async runtimes did that themselves.
Given that, it sounds like I've already got the robustness I need, and since the server doesn't exit it'll be able to continue tracing, so I just need to trace panics myself. I don't know if it's worth the complexity just to send a 500.
Thank you for the explanation; TIL.


Install aws-ses Ruby gem

This is an excellent set of Docker images and I was nearly able to use "as-is", but I am using Amazon SES for sending emails and this doesn't work "out of the box".
The mailer-ses plugin is already installed:
/opt/sensu/embedded/lib/ruby/gems/2.0.0/gems/sensu-plugins-mailer-0.0.2/bin/handler-mailer-ses.rb
/opt/sensu/embedded/bin/handler-mailer-ses.rb

But that plugin requires a Ruby gem aws-ses, which isn't installed by default.
For now I have extended the image by running gem install aws-ses, but it would be nice to have it built-in. I see there's a RUNTIME_INSTALL env variable, but it looks like that's for plugins, not the gems they require.

@fazy did you install the mailer-ses via https://github.com/sensu-plugins/sensu-plugins-mailer
The gem you require should be listed in that plugins gemspec https://github.com/sensu-plugins/sensu-plugins-mailer/blob/master/sensu-plugins-mailer.gemspec
If not it should be added to that plugins gemspec.
If you installed it via the old https://github.com/sensu/sensu-community-plugins switch to using the new method and you use RUNTIME_INSTALL: mailer which will install the gem from source and it's included dependencies.
Let me know if that resolves your problem.

Thanks for such a quick reply. The mailer-ses plugin is already installed in your current image.
I just tried RUNTIME_INSTALL: mailer and it did a gem install... but the aws-ses gem was still missing when I did gem list.
Not a problem for me as my extending image solves it, and also I prefer not to have things install at launch time (it's an extra point of failure). I can do a PR for you if you like just to install the required Gem, or you might prefer not to bulk up your image. I must admit I know very little Ruby.

Ya my recommended way of extending it is to reference it in a docker file and use
RUN /bin/install mailer during your build.  If the mailer is missing the gem though that should be added to the upstream repo.  I only install mailer in this container as an example.


Enhancement: allow descending sort order

Expected behavior and actual behavior:
The sorting capability does not give you any choice whether or not to sort in ascending or descending order, which limits its usefulness and functionality. Sorting by "title" or "subtitle" sorts in ascending order, and "severity" and "date" sort in descending order without any choice in the matter.
The different severity levels do not give a sufficient level of granularity for a wide range of use cases, so giving the option to sort by descending on the other elements (title, subtitle, or possibly even a hidden field value) would open up many other UX possibilities.
Our specific use case is having a list of alerts based on probability levels that are dynamically populated, and we want to sort them in descending order of the calculated probability. We can somewhat approximate this by giving different "severity" ratings based on different probability thresholds, but we would really like more granularity than this to differentiate between alerts that are given the same "severity" level (i.e. 75% and 99% probability should not be prioritized the same but with only 4 severity options we have to sort them into these large buckets). Differentiating by "severity" also applies different CSS styles which we have to override.
It would be much simpler and more straightforward to simply allow descending sort based on subtitle or even a hidden attribute of some sort.

Added in v2.


Support FBX file loading

What problem does this solve or what need does it fill?
FBX is a commonly used file format for 3d models. Many 3d models & asset packs from asset stores, eg the popular Unity AssetStore, only supply models & materials in .fbx format.
By not supporting FBX, Bevy users must convert assets manually which is especially painful as some asset packs can have hundreds of model files. This hinders teams trying to leverage commercial assets to speed up their development.
What solution would you like?
Support FBX file import through a loader/processor.
A loader like bevy_mod_fbx could be upstreamed.
Alternatively, like Godot, leverage fbx2gltf or ufbx(current Godot default) within the engine to perform the conversion seamlessly for users
What alternative(s) have you considered?
Relying on 3rd party crates (none seem up to date), or manually converting via Blender.
Add fbx -> gltf conversion into the bevy cli tool.
Additional context
I searched for "fbx" issues previously, but couldn't find one in the repo. I assume this has been thought of before, but I wanted to formalise it.

Great idea centralizing discussion on additional 3d model formats. I think it makes sense to have a clear path for how to do this in bevy, and for efforts to be consolidated.
I guess conversion to gltf is the discussion here, deep conversionless integration would add quite a bit of complexity both in implementation and maintenance.
Seeing as godot has picked up the reigns of FBX2glTF, us not having our own one might be more of a 'feature than a bug', as in being able to share maintenance of engine agnostic tools allows both communities to focus on other things.
Regarding batch conversion I'd personally prefer to use a cli with a simple recursive script instead of something deeply integrated and automatic, particularly because the process is lossy, but of course thats easy to say for people who write scripts and use cli tools every day.
I suppose the exact workflow for non-technical people might be easier to visualize once we have an editor, like some kind of extension that runs FBX2glTF whenever an FBX file is dragged and dropped into the asset section.

I guess conversion to gltf is the discussion here

Yes. Bevy seems quite gltf-centric so converting to gltf is probably the most feasible option that also avoids increasing the logic in bevy "core".

I suppose the exact workflow for non-technical people might be easier to visualize once we have an editor, like some kind of extension that runs FBX2glTF whenever an FBX file is dragged and dropped into the asset section.

This is what Godot does, and is likely like the most user friendly solution, especially if you include teams with people who may not be CLI fluent. In my opinion, the original file should still be kept in assets, but the resulting gltf would end up in the directory from asset_processor.

Seeing as godot has picked up the reigns of FBX2glTF

Godot 4.3 introduced a native FBX importer, ufbx, and enabled it by default. This change is more user-friendly and greatly improves the overall experience.
Since glTF and FBX are inherently different formats, direct conversion often results in information inconsistencies and other undesirable outcomes. The best solution for FBX support is to implement a native importer. Upstreaming bevy_mod_fbx is a positive step.

@VitalyAnkh I agree that native support would be the best version of support. But my thoughts are that the fbx -> gltf route is much more palatable for the Bevy project at this point in time.
bevy_mod_fbx does a great job, but the underlying library fbxcel-dom/fbxcell is only maintained by one person, and together with bevy_mod_fbx there is quite a lot of work left to be done before it's anywhere close to Bevy's gltf support.
Unimplemented features & limitations of `bevy_mod_fbx`

Planned features
Skeleton rig imports
bevy_animation support
Optional lambert material shader support
Optional phong shading model support
Extended compatibility:
    IndexToDirect
    Handle file-based axis properties
    Handle backed cameras & lights
    N-gon triangulation

Limitations
FBX v7.4 & 7.5 are the only supported versions
FBX doesn't support multiple scenes in single file, use multiple files instead
There are no plans for loading ASCII format, export FBX as binary v7.4/7.5
There is no support for complex shapes at the moment, see https://github.com/HeavyRain266/bevy_mod_fbx/issues/11

So without someone or a group to commit to improving the situation with bevy_mod_fbx, it doesn't appear the right choice at this point in time, in my opinion.


fix(discover): display recent requests even if there is an error with *arr

Description
If Jellyseerr can't connect to Radarr/Sonarr, the "Recent Requests" slider will not load because of the error throwed when trying to get the Quality Profile. This PR catch this error so the recent requests are well displayed.
Screenshot (if UI-related)
To-Dos

[x] Successful build pnpm build
[x] Translation keys pnpm i18n:extract
[ ] Database migration (if required)

:tada: This PR is included in version 2.2.0 :tada:
The release is available on:

v2.2.0
GitHub release

Your semantic-release bot :package::rocket:


Added API of Bandcamp

[x] My submission is formatted according to the guidelines in the contributing guide
[x] My addition is ordered alphabetically
[x] My submission has a useful description
[x] The description does not end with punctuation
[x] Each table column is padded with one space on either side
[x] I have searched the repository for any relevant issues or pull requests
[x] Any category I am creating has the minimum requirement of 3 items

Resolved conflict

Thanks for the contribution, @Nirzak!
Does the API have a free-tier plan, please? I could find no details about it.

Thanks for the contribution, @Nirzak!
Does the API have a free-tier plan, please? I could find no details about it.

Yes it is free for developers but the only way to register for the API via contacting them.


Added getShowEpisodes to list all the available episodes of a show

Okay, all is fine. I will do some minor changes before pushing the code to npm.


Scope Required Work to Support cEUR in Faucet

Should consider doing so in a generalized way that would set us up to support additional future stable tokens.
Related to issue: #6790
Faucet

celotool changes
web tool -> update text ==> "Each request adds 10 cUSD, 10 cEUR, and 5 CELO."
firebase -> what does the request currently look like? changes necessary here to also add the cEUR transfer?
initial balance for 0x22579ca45ee22e2e16ddf72d955d6cf4c767b0ef
alerting for web faucet balance (balance of 0x22579ca45ee22e2e16ddf72d955d6cf4c767b0ef)

Here are the smaller sub-tasks that I think will need to be necessary for adding cEUR to the faucet (happy to move this discussion to slack as well, but wanted this documented on this ticket as well!):
celotool changes (use cases: large transfers of cUSD/CELO/cEUR on alfajores)

[coordinate with protocol economics] on how much cEUR to initially provide validator-0 @martinvol
modify the celotool script to allow for cEUR transfers and test this out (should be straightforward to add the additional arg)

web faucet changes (use cases: devs using web interface to request 5 CELO/10 cUSD/10? cEUR)

[web team] -> update the text on the faucet (very tiny change)
[coordinate with protocol economics] initialize web faucet address (0x22579ca45ee22e2e16ddf72d955d6cf4c767b0ef) with a large amount of cEUR @martinvol
update and redeploy faucetRequestProcessor firebase function (adding transfer command for cEUR should be mostly straightforward, deploying to staging + testing may be slightly trickier)
set up a devX alert on GCP tracking cEUR (should take very little time, copy cUSD alert)
(- there's an additional script: packages/faucet/scripts/transfer-funds.ts and it's unclear where/what service is using this, as I believe the faucet runs using the firebase function described above.)
@timmoreton  -- does this look about right to you esp. regarding the firebase functions?

(for visibility @aslawson @yerdua)

For future reference I wanted to point out this is one relevant line where the minting amounts are defaulted: https://github.com/celo-org/celo-monorepo/blob/master/packages/celotool/src/lib/migration-utils.ts#L68

updated issue #6795 with scoping details from above.
From devX discussion -- for now, faucet should default to sending some of each currency (i.e. no specifying options or creating new endpoints, etc. for now)


Better Javascript Errors

It seems that if there's an error in the spec implementation Javascript itself, the Error Message and Stacktrace don't show up even if:
gauge --verbose specs

It looks like:
λ gauge specs
# English vowels
  ## Vowel counts in single word     F
    Failed Step: Vowels in English language are "aeiou".
    Error Message:
    Stacktrace:

  ## Vowel counts in single word      ## Vowel counts in multiple word     F
    Failed Step: Vowels in English language are "aeiou".
    Error Message:
    Stacktrace:

This of course is where example.spec (in the spec folder of course) is:
English vowels
=====================

This is an executable specification file. This file follows markdown syntax.
Every heading in this file denotes a scenario. Every bulleted point denotes a step.

To execute this specification, run

    gauge specs

* Vowels in English language are "aeiou".

Vowel counts in single word
---------------------------

tags: single word

* The word "gauge" has "3" vowels.

Vowel counts in multiple word
-----------------------------

This is the second scenario in this specification

Here's a step that takes a table

* Almost all words have vowels
     |Word  |Vowel Count|
     |------|-----------|
     |Gauge |3          |
     |Mingle|2          |
     |Snap  |1          |
     |GoCD  |1          |
     |Rhythm|0          |

And, example.js (in the tests folder) is:
/* globals gauge, beforeScenario */
"use strict";
var assert = require("assert");
var vowels = ["a", "e", "i", "o", "u"];
var numberOfVowels = function(word) {
    var vowelArr = word.split("").filter(function(elem) {
        return vowels.indexOf(elem) > -1;
    });
    return vowelArr.length;
};

// --------------------------
// Gauge step implementations
// --------------------------
gauge("Vowels in English language are <vowels>.", function(vowelsGiven) {
    assert.equal(vowelsGiven, vowels.join(""));
    javascriptErrorHere
});
gauge("The word <word> has <number> vowels.", function(word, number) {
    assert.equal(number, numberOfVowels(word));
});
gauge("Almost all words have vowels <table>", function(table) {
    table.rows.forEach(function(row) {
        assert.equal(numberOfVowels(row.cells[0]), parseInt(row.cells[1]));
    });
});

// ---------------
// Execution Hooks
// ---------------
beforeScenario(function() {
    assert.equal(vowels.join(""), "aeiou");
});
beforeScenario(function() {
    assert.equal(vowels[0], "a");
}, {
    tags: ["single word"]
});

Yes, gauge-js does not pass proper stacktrace information to gauge core. Should be fixed soon. Thanks for raising this!


Feature Request:  A Changelog

Hi, I just saw that 0.9.0 had been released, and realized I have no idea what has changed and thus I don't know whether or not it's worth spending the effort to update.  Could we have a changelog?

The API didn't change. Dependencies were upgraded, and since some of them are in the public interface, there might be a dependency version incompatibility.
It's safe to do the upgrade.
But on the actual issue - yeah, a changelog to at least summarize notable changes would have a use.
At the moment, you can look at the releases to see what changes were done.

There is a changelog now


fix(config-map): update examples in documentation (#1334)

Backport
This will backport the following commits from k8s-25/main to k8s-24/main:

fix(config-map): update examples in documentation (#1334)

Questions ?
Please refer to the Backport tool documentation

⚪ Backport skipped
The pull request was not backported as there were no branches to backport to. If this is a mistake, please apply the desired version labels or run the backport tool manually.
Manual backport
To create the backport manually run:
backport --pr 1337

Questions ?
Please refer to the Backport tool documentation


Add GitHub action to publish wheels to PyPi / TestPyPi

Is your feature request related to a problem or challenge? Please describe what you are trying to do.
We already have a GitHub workflow that builds wheels when the repo is tagged with a release tag or rc tag. Hoever, we have to manually download these files and upload them to PyPi and TestPyPi.
Describe the solution you'd like
I would like this automated.
Describe alternatives you've considered
Keep doing it manually
Additional context

Do we only want an upload to PyPi to occur if there is a manual approval? If so, we could make a Github environment that requires an approval and add it to the commented out workflow code that uploads to PyPi to ensure releases still have a vote. Maybe pypi is a good name for the env. Are you looking for help on this? If so, we can help out.

@kylebrooks-8451 yes, we want to publish when certain tags are pushed to the repo (similar to how we currently build the wheels when rc tags are pushed.
For example, pushing 23.0.0-rc1 should trigger an upload to TestPyPi. Since we already run maturin build on rc tags, maybe we just need to update this to maturin pubilsh instead? We will need to store an authentication token as a GitHub secret.
For the final release, I think we can just have a script that downloads the wheels from TestPyPi and uploads them to PyPi. No need to build new artifacts. What do you think?

Are you looking for help on this? If so, we can help out.

Yes, that would be fantastic. Thank you.

One challenge is how we handle the case where we have multiple release candidates, such as 23.0.0-rc1 followed by 23.0.0-rc2. I doin't know if we can re-upload wheels and overwrite them since the wheel version would still just be 23.0.0?

pypi uses the rcN part of the tag to identify that a package is a release candidate and usually marks it as such. So if the wheel version has the rc tag, it doesn't overwrite them but instead creates a new entry. There's more info in pep440 and here's an example of how it shows up on pypi for a project.


Spam reload issue coming from something else than bridge/FEAGI

When you change any properties more than 5 times, it will reload. I was able to verify that bridge doesn't send data to BV yet it reloads.
reproduce steos:

Load eseential genome
toggle MP 5 times (sometimes 10), it will reload

this is before the new change.
Now it doesn't load at all


TODO before 1.1?

What is left to be done before 1.1?

If there is nothing then Im happy to tag 1.1 today.

found no issue that blocks a 1.1, lets tag :-)

Ok, I will do that


Warnings and errors for cmd line vars

Fixes: #1683
TODO: ktest-fail.mak should not rekompile when running only krun?

I haven't looked at this in detail yet, but already I see a significant problem. ktest-fail.mak is supposed to test definitions that fail to compile; it's not supposed to run krun. I will review in more detail when you have straightened out your build system code.

I haven't looked at this in detail yet, but already I see a significant problem. ktest-fail.mak is supposed to test definitions that fail to compile; it's not supposed to run krun. I will review in more detail when you have straightened out your build system code.

Timings:
Current branch:
radu@radu:~/work/k/k-distribution/tutorial/1_k/2_imp/lesson_4$ time cat tests/sum.imp.in 2>/dev/null | /home/radu/work/k/k-distribution/bin/kx tests/sum.imp   -d . | diff - tests/sum.imp.out

real	0m0,910s
user	0m2,761s
sys	0m0,171s
radu@radu:~/work/k/k-distribution/tutorial/1_k/2_imp/lesson_4$ time cat tests/sum.imp.in 2>/dev/null | /home/radu/work/k/k-distribution/bin/krun tests/sum.imp   -d . | diff - tests/sum.imp.out

real	0m1,854s
user	0m6,639s
sys	0m0,289s

master:
radu@radu:~/work/k/k-distribution/tutorial/1_k/2_imp/lesson_4$ time cat tests/sum.imp.in 2>/dev/null | /home/radu/work/k/k-distribution/bin/kx tests/sum.imp   -d . | diff - tests/sum.imp.out

real	0m0,935s
user	0m2,783s
sys	0m0,179s
radu@radu:~/work/k/k-distribution/tutorial/1_k/2_imp/lesson_4$ time cat tests/sum.imp.in 2>/dev/null | /home/radu/work/k/k-distribution/bin/krun tests/sum.imp   -d . | diff - tests/sum.imp.out

real	0m1,808s
user	0m6,444s
sys	0m0,316s

Is this what you were asking for?

Timings:
Current branch:
radu@radu:~/work/k/k-distribution/tutorial/1_k/2_imp/lesson_4$ time cat tests/sum.imp.in 2>/dev/null | /home/radu/work/k/k-distribution/bin/kx tests/sum.imp   -d . | diff - tests/sum.imp.out

real	0m0,910s
user	0m2,761s
sys	0m0,171s
radu@radu:~/work/k/k-distribution/tutorial/1_k/2_imp/lesson_4$ time cat tests/sum.imp.in 2>/dev/null | /home/radu/work/k/k-distribution/bin/krun tests/sum.imp   -d . | diff - tests/sum.imp.out

real	0m1,854s
user	0m6,639s
sys	0m0,289s

master:
radu@radu:~/work/k/k-distribution/tutorial/1_k/2_imp/lesson_4$ time cat tests/sum.imp.in 2>/dev/null | /home/radu/work/k/k-distribution/bin/kx tests/sum.imp   -d . | diff - tests/sum.imp.out

real	0m0,935s
user	0m2,783s
sys	0m0,179s
radu@radu:~/work/k/k-distribution/tutorial/1_k/2_imp/lesson_4$ time cat tests/sum.imp.in 2>/dev/null | /home/radu/work/k/k-distribution/bin/krun tests/sum.imp   -d . | diff - tests/sum.imp.out

real	0m1,808s
user	0m6,444s
sys	0m0,316s

Is this what you were asking for?


providing settings for rules which are not generated should produce a warning

# pyproject.toml
[tool.ruff.mccabe]
max-complexity = 1

[tool.flake8]
max-complexity = 1

# test.py
def some_function():
    if 0 > 1:
        print("1")
    else:
        print("2")

pip install flake8 Flake8-pyproject ruff

$ ruff test.py
``
$ flake8 test.py
test.py:5:1: C901 'some_function' is too complex (2)

$ ruff test.py # No output produced

$ ruff --version
ruff 0.0.265

Did you enable the C rule set, or C901 specifically? Unlike Flake8 we don’t turn that rule on by default.

I do not have any experience with rulets.
How do I "enable the C rule set" ?
In any case if the option itself does not have any effect, should the user not get a warning ? linting the config :) ?

There are a couple ways to do it, but they all require specifying some configuration for Ruff. You could run ruff --select C901 test.py, or add a ruff.toml file to your directory with:
select = ["E", "F", "C901"]

Thanks, adding the select got me the expected behaivor.
Renamed the bug for covering the case of inneffective settings not being reported.

I'm uncertain on this, since it's reasonable to configure these settings, but only turn on rules conditionally. E.g., it'd be reasonable to set a max-complexity in your configuration file, but not include C901 in that file, and only run that check periodically from the CLI via --select. In which case, the warning would be a false positive.

Agreed - if this is added it should be under an optional setting or CLI flag and certainly not the default behavior.

I guess the divergence here is what is the reasonable use case that you want to prioritize.
I see two different reasonable cases:

A user like me, that from reading https://beta.ruff.rs/docs/settings/#max-complexity, and not being aware of the "select" filtering expects the corresponding rule to be effectively used - maybe it is just a matter of documentation, and making it clear that that such rule is not set by default ?
A user which is fully aware of selection filters and want's to provide some settings to be activated only under certin selections

Anyway, my problem is solved, was just trying to improve for other users that might follow my analisys patttern, feel free to close the issue if found to be unreasonable.
Thanks for developing Ruff and the quick support.

I think, in the long-term, it would help to move rule-specific settings next to the rule configuration
Instead of having a select configuration and the max-complexity configuration in two entirely different places, move the configuration of the rule next to where we enable the rule:
[tools.ruff.lints]

max-complexity = { level = "error", limit = 1 }

I believe that this should help because reading  max-complexity = { level = "allow", limit = 1 } would make it more apparent that you need to enable the rule.

I'm uncertain on this, since it's reasonable to configure these settings, but only turn on rules conditionally. E.g., it'd be reasonable to set a max-complexity in your configuration file, but not include C901 in that file, and only run that check periodically from the CLI via --select. In which case, the warning would be a false positive.

Ideally, we should warn about unused configuration (or even disallow it by the schema). That's why I wonder if we could support those use cases by either:

Adding a --config CLI option that allows you to set any configuration option. This has the downside, that the complexity limit is not checked in but would enable the provided workflow
Ask users to commit two configurations, one where the complexity rule is enabled and one where it is not. Then allow them to specify the configuration with --config-path. This may not work well with extended configurations.

I'm going to close this out for now since it's hard to act on given our current model for rules and settings. It may feed into changes we choose to make to our settings representation in the future though, as Micha mentioned above. Thank you :)


The issue with the server crash has been solved.

When an incorrect TLD was entered, which does not exist, the server automatically threw an error and crashed. In this pull request, this issue has been resolved.

Can we merge this PR please? @intergalacticalvariable


work around missing math functions on bsd platforms

Simple fix for #502 and a related problem on netbsd.
I've intentionally not implemented any kind of feature detection. It's tricky. The header definitions are available and the functions are understood by gcc/clang, although they are not implemented by the c  standard library. But gcc will generate opcode for them under certain conditions...
Openbsd seems to have implemented all necessary functions. However their libffi package is currently broken (their newest kernel introduced something similar to grsecurity's mprotect. They've tried to patch libffi accordingly, but it doesn't seem to work as intended)

Thanks!  I don't have an easy way to test this, but it looks reasonable.
We're starting to accumulate a few platform tests around the code.  I think in the medium term it'd be useful to collect all these together in a single header (and in the longer term perhaps replace a few system-name macros with configure-time feature detection).  See #506.


Downloading multiple pdfs on the same page

To Reproduce
Steps to reproduce the behavior:

Have 2 VueHtml2Pdf components on the page
Download 1 => Ok
Download 2 => Progress stops at 70 and page hangs

Seems it was a build bug, as after a full rebuild it works correctly


Support RowBinaryWithNamesAndTypes format

Could we add RowBinaryWithNamesAndTypes format to ClickHouseFormat enum to make it possible to select in this format with ClickHouseStatement::executeQueryClickhouseRowBinaryStream method

ClickhouseRowBinaryInputStream now has getColumns method to retrieve names and types returned from the server.


Ability to add multiple open folders to a single project

VSCode Version: 1.5.1
OS Version: macOS

Feature Request
It would be nice to be able to add / remove multiple folders to / from a project, not unlike Sublime Text. (Gif attached).

This is one of the few things keeping a number of people I know from using Code, and to be honest as much as Code is killing it right now, this is one of the missing features keeping me from using it for all of my editing.

Hi @kattkieru . This is already in the Roadmap, and it's being tracked in https://github.com/Microsoft/vscode/issues/396.
Stay tuned :smile:

Closing as duplicate.
@kattkieru Don't forget to vote the original issue logged.
@alefragnani Thanks for finding that original issue.


Header Image & Modal Sheet

Hey folks, I tried out the library in my demo project but hit a small bump. In the content section, I added a list of items. The header has a weird behavior when I add a modal sheet. :(  This is also reproducible in the ProfileScreen example. I replaced the ContentView body with ProfileScreen() to display a sheet when clicking the hire button. Note: The longer the list, the lower the image.
Would you happen to know how to fix this?
https://github.com/exyte/ScalingHeaderScrollView/assets/841885/305fea0e-a145-44e3-bb4b-ce7809d7ea80

Hey @thomaskioko, thank you for bringing this to our attention. Please check out version 1.1.1 - should be fixed there. Have a wonderful day!


Honeybadger testing of AWS v20 together with Vintage-CAPA migration

The time has come to start testing final releases as well as migration from Vintage v20 to CAPA. We have created a dedicated Vintage MC garfish to perform any vintage or migration testing for stability purposes. The dedicated CAPA cluster for migration will be the CAPA stable-testing MC grizzly.
We would kindly ask all teams to perform comprehensive tests for 3 use-cases, ordered in terms of priorities if they can't be performed all at once.
1. Vintage AWS v20
Cluster creation on garfish - giantswarm Organization
This is the last release of Vintage containing 1.25 k8s. The 1.25 kubernetes introduces a breaking change in terms of removal PSPs from its API, meaning that all workloads will have to comply with the global toggle disabling PSPs as in 19.3.x release. Prior to making v20 release available to customers, we need to validate that all applications are running smoothly. The Vintage tests are standard as always - you just create the v20 release and validate your applications. Separate stable MC in this case will guarantee no manual changes in the release and stability.

[x] Honeybadger finished with Vintage v20 testing (please mark it in main issue as well)

2. CAPA 0.60.0
Cluster creation on grizzly - giantswarm Organization - be aware that this is production MC, so it will page everyone. In practice any CAPA MC should work for this test.
Starting with cluster-aws-v0.60.0 and default-apps-aws-v0.45.1 onwards CAPA supports Kubernetes 1.25 with all needed features to run our workloads in the same manner as on VIntage clusters. Please for testing use always latest cluster-aws as well as default-apps-aws releases.

[x] Honeybadger finished with CAPA 1.25 testing (please mark it in main issue as well)

3. Vintage to CAPA migration
Cluster creation for migration on garfish - capa-migration-testing Organization. Clusters will be migrated to grizzly - capa-migration-testing Organization.
Phoenix and Honeybadger worked extensively on making the migration as smooth as possible. The migration-cli has been introduced that orchestrates migration of apps as well as infrastructure. Here the main point is to discover if your application and any custom configurations that could be applied by customers are migrated properly.
The migration-cli has been extended to facilitate easy testing for all teams ad Giant Swarm. Please follow the requirements as well as the procedure that is described in the tests section of the tool. In case of any issue with infrastructure - ping Phoenix, if the app/configmap migration will face any issues or inconsistencies - ping Honeybadger.

[x] Honeybadger finished with Vintage to CAPA migration testing (please mark it in main issue as well)

### Tasks

I have made adjustments in the tracking ticket as well as the teams tickets regarding the CAPA and migration testing instructions.
TL;DR: Testing of CAPA/Migration is moved from gazelle to grizzly
Initially gazelle has been chosen to test the CAPA migration as it is a Production MC, meaning most stable one. However this has resulted in unforeseen pages towards kaas-cloud oncall that we would like to limit.
We do recognise the pages and also actively work on testing, hence such pages are just a distraction away from the operations clusters that most of the teams have migrated the GS production workloads on.
Taking all the facts into consideration we have decided that it would be best to move the testing to grizzly which is stable-testing installation. Installation is primarily running e2e test and is treated as stable (no changes on the MCs).
Thanks for understanding and let us know if something is not working

Finally migration was an overall success.
All apps are migrated and running on/from the capi mc. Some minor issues found on the helm labels, which i'll think about.
(N/A) ~/v/g/g/c/tests ❯❯❯ ./tests -cluster-name ulli10 -cluster-organization ulli -mc-capi grizzly
Executing opsctl login garfish, check your browser for dex login

Logging in to the management cluster of installation garfish

Executing the command

  kubectl gs login https://g8s.garfish.eu-central-1.aws.gigantic.io --cluster-admin

Your browser should now be opening this URL:
https://dex.g8s.garfish.eu-central-1.aws.gigantic.io/auth?access_type=offline&client_id=zQiFLUnrTFQwrybYzeY53hWWfhOKWRAU&redirect_uri=http%3A%2F%2Flocalhost%3A59667%2Foauth%2Fcallback&response_type=code&scope=openid+profile+email+groups+offline_access+audience%3Aserver%3Aclient_id%3Adex-k8s-authenticator&state=B7FND6aNnhhrllUlqLEwfXeLzleLhG0OJJSDSlVvFOM%3D&connector_filter=giantswarm

Logged in successfully as 'ulli' on cluster 'garfish'.

A new kubectl context 'gs-garfish' has been created and selected. To switch back to this context later, use either of these commands:

  kubectl gs login garfish
  kubectl config use-context gs-garfish
Executing kubectl gs template cluster --provider=aws --organization=ulli --name=ulli10 --release=v20.0.0 --description=Vintage-to-CAPI CLI migration test cluster

Executing kubectl gs template nodepool --provider=aws --organization=ulli --release=v20.0.0 --cluster-name=ulli10 --description=Vintage-to-CAPI CLI migration node pool cluster --availability-zones=eu-central-1a,eu-central-1b,eu-central-1c

Executing kubectl --context=gs-garfish apply -f ulli10-cluster-vintage.yaml

cluster.cluster.x-k8s.io/ulli10 created
awscluster.infrastructure.giantswarm.io/ulli10 created
g8scontrolplane.infrastructure.giantswarm.io/jspu4z8568 created
awscontrolplane.infrastructure.giantswarm.io/jspu4z8568 created
machinedeployment.cluster.x-k8s.io/vu93au66da created
awsmachinedeployment.infrastructure.giantswarm.io/vu93au66da created
Vintage cluster manifest applied successfully

Vintage cluster ulli10 is not yet in Created state. Retrying in 5 minutes.
Vintage cluster ulli10 is not yet in Created state. Retrying in 5 minutes.
Vintage cluster ulli10 is not yet in Created state. Retrying in 5 minutes.
Vintage cluster ulli10 is not yet in Created state. Retrying in 5 minutes.
Vintage cluster ulli10 is not yet in Created state. Retrying in 5 minutes.
Vintage cluster ulli10 is not yet in Created state. Retrying in 5 minutes.
Vintage cluster ulli10 is not yet in Created state. Retrying in 5 minutes.
Vintage cluster ulli10 is not yet in Created state. Retrying in 5 minutes.
Vintage cluster ulli10 is in Created state
Vintage nodepool vu93au66da is ready
All nodepools are ready
Security bundle is deployed

Vintage cluster ulli10 is ready for migration

=======================================
now its time to do any changes you want to do before the migration to CAPI starts.
Please type 'Yes' to confirm to proceed further:
> Yes
Confirmed! Continuing.

Checking kubernetes client for Vintage MC garfish.
Connected to gs-garfish, k8s server version v1.24.17
Checking kubernetes client for the cluster ulli10.
Context for cluster [garfish ulli10] not found, executing 'opsctl login', check your browser window.
Connected to gs-garfish-ulli10-clientcert, k8s server version v1.25.16
Checking kubernetes client for CAPI MC grizzly.
Context for cluster [grizzly] not found, executing 'opsctl login', check your browser window.
Connected to gs-grizzly, k8s server version v1.25.16
Generating AWS credentials for cluster garfish/ulli10.
Assume Role MFA token code: 198861
Generated AWS credentials for<EMAIL_ADDRESS>Checking garfish's vault connection
Connected to vault 1.7.10
Init phase finished.

Starting migration of cluster ulli10 from garfish to grizzly

Preparation Phase
Fetching vintage CRs
Deleting etcd-kubernetes-resources-count-exporter vintage app.
Deleted vintage app etcd-kubernetes-resources-count-exporter
Deleting chart-operator-extensions vintage app.
Deleted vintage app chart-operator-extensions
Migrating secrets to CAPI MC
Migrated ulli10-cilium-user-values-extraconfig configmap
Migrated ulli10-observability-bundle-logging-extraconfig configmap
Successfully migrated cluster AWS default apps values.
Successfully migrated cluster IAM account role to AWSClusterRoleIdentity.
Successfully disabled vintage machine health check.

Executing the following command to migrate non-default apps via external tool:
app-migration-cli prepare -s garfish -d grizzly -n ulli10 -o org-ulli
Connected to gs-garfish, k8s server version v1.24.17
Connected to gs-grizzly, k8s server version v1.25.16
Apps (20) and config is dumped and migrated to disk: /Users/nce/vcs/github/giantswarm/capi-migration-cli/tests/garfish-ulli10-apps.yaml
Successfully prepared non-default apps migration.
Successfully scaled down Vintage app operator deployment.
Cleaned legacy chart cilium
Cleaned legacy chart aws-ebs-csi-driver
Cleaned legacy chart aws-cloud-controller-manager
Cleaned legacy chart coredns
Cleaned legacy chart vertical-pod-autoscaler-crd
Preparation phase completed.

Skipping stopping reconciliation of CRs on vintage cluster
Generated CAPI cluster template manifest for cluster ulli10
Generated CAPI default-apps template manifest for cluster ulli10
Applying CAPI cluster APP CR to MC
CAPI Cluster app applied successfully.

Waiting for 1 CAPI node with status Ready
..............Registering instance i-0fdb40cab8a734874 with ELB ulli10-api
Registering instance i-0fdb40cab8a734874 with ELB ulli10-api-internal
...................
CAPI node ip-10-1-2-47.eu-central-1.compute.internal ready. 1/1

Found CAPI 1 nodes with status Ready, waited for 330 sec.
Removed initial-cluster from kubeadm configmap
Removed initial-cluster from kubeadm configmap
Applying CAPI cluster APP CR to MC
CAPI Cluster app applied successfully.

Removing static manifests for control-plane components on all vintage nodes.
{"level":"info","ts":"2024-03-13T15:13:10+01:00","logger":"KubeAPIWarningLogger","msg":"kyverno.io/v2alpha1 PolicyException is deprecated; use kyverno.io/v2beta1 PolicyException"}
Applied PolicyExceptions for CP node cleanup job
Created job disable-cp-ip-10-1-2-102.eu-central-1.compute.internal
Created job disable-cp-ip-10-1-2-168.eu-central-1.compute.internal
Created job disable-cp-ip-10-1-2-44.eu-central-1.compute.internal
Waiting until all jobs finished
Job 1/3 - disable-cp-ip-10-1-2-102.eu-central-1.compute.internal not finished yet, waiting 5 sec.
Job 1/3 - disable-cp-ip-10-1-2-102.eu-central-1.compute.internal not finished yet, waiting 5 sec.
Job 1/3 - disable-cp-ip-10-1-2-102.eu-central-1.compute.internal not finished yet, waiting 5 sec.
Job 1/3 - disable-cp-ip-10-1-2-102.eu-central-1.compute.internal not finished yet, waiting 5 sec.
Job 1/3 - disable-cp-ip-10-1-2-102.eu-central-1.compute.internal not finished yet, waiting 5 sec.
Job 1/3 - disable-cp-ip-10-1-2-102.eu-central-1.compute.internal not finished yet, waiting 5 sec.
Job 1/3 - disable-cp-ip-10-1-2-102.eu-central-1.compute.internal not finished yet, waiting 5 sec.
Job 1/3 - disable-cp-ip-10-1-2-102.eu-central-1.compute.internal finished.
Job 2/3 - disable-cp-ip-10-1-2-168.eu-central-1.compute.internal finished.
Job 3/3 - disable-cp-ip-10-1-2-44.eu-central-1.compute.internal finished.

Deleted PolicyExceptions for CP node cleanup job
Cordon all vintage control plane nodes.
Found 3 nodes for cordoning
Deleted pod org-ulli/ulli10-app-operator-9f99cc8f-m2rs7 on CAPI MC to force reconcilation
Deleted pod giantswarm/chart-operator-84d59fc589-tz48d to reschedule it on CAPI control plane node
Deleted pod kube-system/cilium-6qq2l
Deleted pod kube-system/cilium-l6sfm
Deleted pod kube-system/cilium-lbg6q
Deleted pod kube-system/cilium-lzfsg
Deleted pod kube-system/cilium-operator-58d97b7594-2fbtk
Deleted pod kube-system/cilium-operator-58d97b7594-fqjw5
Deleted pod kube-system/cilium-tdg2v
Deleted pod kube-system/cilium-wcw2q
Deleted pod kube-system/cilium-wv5qj
Deleted pod kube-system/hubble-relay-588c58df8f-746t2
Deleted pod kube-system/hubble-ui-c7577d476-bj9kq
Waiting for 3 CAPI node with status Ready

CAPI node ip-10-1-2-47.eu-central-1.compute.internal ready. 1/3
.Deleted crashed pod kube-system/hubble-relay-588c58df8f-746t2
Deleted crashed pod kube-system/hubble-relay-588c58df8f-746t2
.Deleted crashed pod kube-system/hubble-relay-588c58df8f-746t2
Deleted crashed pod kube-system/hubble-relay-588c58df8f-746t2
.Deleted crashed pod kube-system/hubble-relay-588c58df8f-746t2
....Registering instance i-0f4a2303b1748b86b with ELB ulli10-api
Registering instance i-0f4a2303b1748b86b with ELB ulli10-api-internal
..Deleted crashed pod kube-system/cilium-operator-58d97b7594-hj824
...Registering instance i-09f4ba1d4d2052158 with ELB ulli10-api
Registering instance i-09f4ba1d4d2052158 with ELB ulli10-api-internal

CAPI node ip-10-1-2-190.eu-central-1.compute.internal ready. 2/3
.........
CAPI node ip-10-1-2-120.eu-central-1.compute.internal ready. 3/3

Found CAPI 3 nodes with status Ready, waited for 210 sec.
Draining all vintage control plane nodes.

AWS Credentials are still valid, no need to refresh
Found 3 ASG groups for deletion
Deleted ASG group cluster-ulli10-tccpn-ControlPlaneNodeAutoScalingGroup-DUUz7xHcWpaY
Terminated 1 instances in ASG group cluster-ulli10-tccpn-ControlPlaneNodeAutoScalingGroup-DUUz7xHcWpaY
Deleted ASG group cluster-ulli10-tccpn-ControlPlaneNodeAutoScalingGroup2-izpkaZILqsYk
Terminated 2 instances in ASG group cluster-ulli10-tccpn-ControlPlaneNodeAutoScalingGroup2-izpkaZILqsYk
Deleted ASG group cluster-ulli10-tccpn-ControlPlaneNodeAutoScalingGroup3-7tthKcy42hA6
Terminated 1 instances in ASG group cluster-ulli10-tccpn-ControlPlaneNodeAutoScalingGroup3-7tthKcy42hA6
Deleted vintage control plane ASGs.
Waiting KubeadmControlPlane to stabilise  (all replicas to be up to date and ready).
...........
KubeadmControlPlane is stabilised.
Waiting for all CAPI nodes in node pool vu93au66da to be ready.
Waiting for 3 CAPI node with status Ready

CAPI node ip-10-1-3-123.eu-central-1.compute.internal ready. 1/3

CAPI node ip-10-1-3-161.eu-central-1.compute.internal ready. 2/3

CAPI node ip-10-1-3-28.eu-central-1.compute.internal ready. 3/3

Found CAPI 3 nodes with status Ready, waited for 0 sec.
Draining all vintage worker nodes for nodepool vu93au66da.
Found 3 nodes for draining
Started draining node ip-10-1-3-15.eu-central-1.compute.internal
Started draining node ip-10-1-3-159.eu-central-1.compute.internal
Started draining node ip-10-1-3-82.eu-central-1.compute.internal
WARNING: ignoring DaemonSet-managed Pods: kube-system/capi-node-labeler-25pg5, kube-system/cert-exporter-daemonset-xptjc, kube-system/cilium-hdhvm, kube-system/ebs-csi-node-8fc8d, kube-system/grafana-agent-gjj9l, kube-system/k8s-dns-node-cache-g4v9k, kube-system/net-exporter-j4vbv, kube-system/node-exporter-node-exporter-k5bw4, kube-system/prometheus-blackbox-exporter-vllf9, kube-system/promtail-z6jkb
evicting pod kube-system/aws-pod-identity-webhook-app-74bd48dc77-srzt7
evicting pod ulli10/cm-acme-http-solver-k7cjk
evicting pod ulli10/cm-acme-http-solver-hc5hc
evicting pod ulli10/gitops-server-5c877454c7-6hghc
evicting pod kube-system/coredns-workers-95fcb8cc9-wbgmg
evicting pod kube-system/metrics-server-676d54c976-g7ns6
evicting pod giantswarm/app-admission-controller-769d7f7cc8-jjbrl
evicting pod kube-system/vertical-pod-autoscaler-admission-controller-7595f8c98b-4gqg5
evicting pod kube-system/vertical-pod-autoscaler-recommender-5f9f46b978-jc2sh
evicting pod kube-system/prometheus-prometheus-agent-0
evicting pod ulli10/app-exporter-968b48fd6-9lg2g
evicting pod ulli10/docs-proxy-app-5699d95bdd-r6sd4
evicting pod ulli10/config-controller-68d97764-4lqmd
evicting pod ulli10/crsync-6c45c5f67-skjmk
evicting pod ulli10/docs-indexer-app-intranet-28505650-fln6v
evicting pod ulli10/giantswarmio-nginx-app-875bcd944-sm2d8
evicting pod ulli10/external-secrets-webhook-9498c4546-jhln4
error when evicting pods/"docs-proxy-app-5699d95bdd-r6sd4" -n "ulli10" (will retry after 5s): Cannot evict pod as it would violate the pod's disruption budget.
error when evicting pods/"app-admission-controller-769d7f7cc8-jjbrl" -n "giantswarm" (will retry after 5s): Cannot evict pod as it would violate the pod's disruption budget.

AWS Credential expired, need to generate new credentials
Assume Role MFA token code: 845964
refreshed AWS credentials
Found 1 ASG groups for deletion
Deleted ASG group cluster-ulli10-tcnp-vu93au66da-NodePoolAutoScalingGroup-KNdNlJ0pRcx2
Terminated 3 instances in ASG group cluster-ulli10-tcnp-vu93au66da-NodePoolAutoScalingGroup-KNdNlJ0pRcx2
Deleted vintage vu93au66da node pool ASG.

Executing the following command to apply non-default apps to CAPI MC via external tool:
app-migration-cli apply -s garfish -d grizzly -n ulli10 -o org-ulli
Connected to gs-garfish, k8s server version v1.24.17
Connected to gs-grizzly, k8s server version v1.25.16

All prerequistes are found on the new MC for app migration
Applying all non-default APP CRs to MC
All non-default apps applied successfully.

Apps (0) applied successfully to grizzly-ulli10
Finished migrating cluster ulli10 to CAPI infrastructure
=======================================
Cluster was successfully migrated to CAPI
Now you can check the cluster and confirm  everything was properly migrated

All apps are migrated and running on/from the capi mc. Some minor issues found on the helm labels, which i'll think about.

@nce How critical are these issues? Can we move forward with migrating customer clusters? Are there followup issues created?

I have found them non-blocking. i think it was an issue created from apps which i was testing in an "out of our scope"-setting (apps belonging on an MC, but deployed to a WC).
We can definitely move forward


[ENH] Adding MLPClassifier

Reference Issues/PRs

Fixes #3192
What does this implement/fix? Explain your changes.
Migrating MLPClassifier from sktime-dl to sktime
PR checklist

For all contributions

[x] The PR title starts with either [ENH], [MNT], [DOC], or [BUG] indicating whether the PR topic is related to enhancement, maintenance, documentation, or bug.

For new estimators

[ ] I've added the estimator to the online documentation.
[ ] I've updated the existing example notebooks or provided a new one to showcase how my estimator works.

Reminder: Need to change documentation of MLPNetwork

if you think it´s ready, kindly turn it to "ready to review"

Hey @fkiraly ,
The error seems to be a spordiac one as originally reported by you in #2467
Tagging you since resolving this would let me merge the other pending classifiers as well.


Add gRPC Python API Documentation Sanity Checks

It is currently the responsibility of developers to remember to add each new object added to the surface API to grpc.rst. It is entirely possible for this to be forgotten, especially as the project changes hands.
One solution to this problem would be to automatically generated the docs. However, as @lidizheng pointed out to me, we cannot do this and maintain logical human-curated categories within the docs.
An alternative would be to add a simple sanity check ensuring that every element of the surface API is represented in the docs.

https://github.com/grpc/grpc/issues/18619#issuecomment-536345035


[Feature] Multi-progress bars

Opening this as a draft so you can follow my thinking and give early feedback if you want. Still have some issues and cleanup, but it works "in general".
Built on top of PR #23

@fadeevab thoughts?
Screencast from 2024-03-29 15:00:40.webm

@fadeevab thoughts?
Screencast.from.2024-03-<IP_ADDRESS>.webm

Looks better :)
(You can also use Emoji primitive to set up an alternative symbol # for terminals without UTF-8 support.)

Looks better :)

Glad to hear! :)

(You can also use Emoji primitive to set up an alternative symbol # for terminals without UTF-8 support.)

Yeah I did, these are the current symbols:
const S_PROGRESS_FILLED: Emoji = Emoji("■", "#");
const S_PROGRESS_BLANK: Emoji = Emoji("□", "-");

@cylewitruk I'll spend some time working on this PR locally

@cylewitruk I'll spend some time working on this PR locally

Go for it! I'm afk for easter so won't be coding much, but can comment etc. 😊

Closed in favor of PR #31

Closed in favor of PR #31


[server]fix missing services attribute for empty design

Notes for Reviewers
The Services struct had omitempty tag because of which if the design was empty, it was not being streamed inside the response.
Signed commits

[ ] Yes, I signed my commits.

// @aabidsofi19 @leecalcote

The services key as you said should be ever present, and this PR ensures this happens.
Comparing  it with primary constraint not null, if design is empty, it is not that services will be null but an empty object.
skipping/removing the key for empty design makes it difficult to understand whether design is actually empty or have got corrupted.

The services key as you said should be ever present, and this PR ensures this happens. Comparing it with primary constraint not null, if design is empty, it is not that services will be null but an empty object.

Aha! Ok, that’s very good.


302 temporarily moved url

Hi,
During the login flow I am getting 302 error for this url https://kite.zerodha.com/connect/authorize?sess_id=secret_session_id&v=3 and 2 more subsequent redirects.
Is this API working or not. Now I am struck between old and new version

How is this related to phpkiteconnect? phpkiteconnect just gives login URL.
Are you automating login?

sujith,
i have signed up for zerodha kite api. I have been already using the earlier version of the phpkiteconnect and it was working successfully. now i have updated to the latest phpkiteconnect and i am unable to do the same. I am just following the code example to rename the old working code and it fails.
how to troubleshoot this and tell you the problem.

Have you updated to Kite 3 version from branch? If yes then you can check CHANGELOG.md file which list all the changes need to be made to migrate. Please enable debug on and post your logs.

Can you please share your part of code where you are doing this flow? (Please make sure to remove api_key and api_secret if any)

vivek @vividvilla
the registered return url is https://example.com
login_controller
`public function index($f3) {
$f3->set('nav','Positions' );
		// Incoming from the redirect.
		if($f3->exists('GET.request_token')) {

			$request_token = $f3->get('GET.request_token');
			$oKite = new KiteConnect($f3->get('api_key'));

			try {
				$oUser = $oKite->generateSession($request_token,$f3->get('api_secret'));
				$oKite->setAccessToken($oUser->access_token);

				// set session variables
				$f3->set('SESSION.oKite',$oKite);
				$f3->set('SESSION.user_user_id', $oUser->user_id);
				$f3->set('SESSION.user_access_token', $oUser->access_token);
				$f3->set('SESSION.user_public_token', $oUser->public_token);

                // if no route present in cookie
				if( empty($f3->get('COOKIE.route') ) ) {
					// set default route here
					$f3->set('COOKIE.route','/positions');
					$f3->reroute($f3->get('kiteurl'));
				} else { // found cookie refresh this page
				 	$f3->reroute($f3->get('COOKIE.route'));
				}

			} catch(Exception $e) {
				echo "Authentication failed: ".$e->getMessage();
				throw $e;
			}

	} else { // if exist request_token

		$f3->error(404);
	}`

postions_controller (part code)
`	public function index($f3) {
	$user = $f3->get('SESSION.oUser');

	// access token is missing in this kite object
	print_r($this->kite);

	if(!$f3->get('COOKIE.route')) {
		$f3->set('COOKIE.route','/positions');
		$f3->clear('SESSION');
		$f3->reroute($f3->get('kiteurl'));
	} else {
		$positions = $this->kite->positions();`

Please follow these steps and report

Check if kiteconnect.php is updated to latest from Kite3 branch.
Print variable $request_token and check if its actually returned from Kite redirect.
Along with $request_token you need to also get variable $status from redirect and check if its value is success.

Also you have previously said that you are getting 302 redirect. This is normal if your app is not authorized and it will show authorization page which user has to click authorize and it will redirect to your app redirect url. Please make sure that you are not missing that part.

Vivek @vividvilla,
My >> Inputs below in lower Case
Check if kiteconnect.php is updated to latest from Kite3 branch.

yes. it is updated. i checked the head on the 6 line it says version 3. also the login page url has &ver3

Print variable $request_token and check if its actually returned from Kite redirect.

i checked and verifed there is a match

Along with $request_token you need to also get variable $status from redirect and check if its value is success.

i can see last redirect url having the line https://example.com?status=success&request_token=iBpejxy1fRwTakJAVePMKlbKv3vGlYti

Also you have previously said that you are getting 302 redirect. This is normal if your app is not authorized and it will show authorization page which user has to click authorize and it will redirect to your app redirect url. Please make sure that you are not missing that part.

i never received a authorization page, but i could see 1 of 4 redirected pages having the following url, from the developer pane

https://kite.zerodha.com/connect/authorize?sess_id=aar9woxkq6xr1x3jlidyf2119hyqvsqx&v=3
Is this correct?

hi vivek @vividvilla
any ideas ?

I just did a simple example with your api_key and I was able to generate access token. Here is my example.
// Initialise.
$kite = new KiteConnect("your_api_key", null, null, true);
$secret = "your_api_secret";
$request_token = "your_request_token"

try {
	$user = $kite->generateSession($request_token, $secret);

	echo "Authentication successful. \n";
	print_r($user);
	exit;
	$kite->setAccessToken($user->access_token);
} catch(Exception $e) {
	echo "Authentication failed: ".$e->getMessage();
	throw $e;
}

Also your error message says this
Missing access_token [/var/www/clients/client0/web29/web/fatfree-36/kiteconnect.php:647]
But you can see that line 647 is not a valid method or anything in source - https://github.com/zerodhatech/phpkiteconnect/blob/kite3/kiteconnect.php#L647
Seems like you still haven't updated kiteconnect.php file

hi vivek @vividvilla,
there was a new update ver 3b) last monday. after updating now i have success. Thank you.
please advise how to access the quotes after getting it like this
$oQuote = $this->kite->getQuote( $items->get('exchange').":".$items->get('tradingsymbol') );
earlier i was able to access it with
$oQuote->last_price $oQuote->ohlc->high
now since the new api had introduced $i into the mix, please advise on how to get the quotes.


TL-27859: add frame type to prebid adapter

Type of change

[ ] Bugfix
[x] Feature
[ ] New bidder adapter
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] CI related changes
[ ] Does this change affect user-facing APIs or examples documented on http://prebid.org?
[ ] Other

Description of change

Added frame type to TL exchange bid request

test parameters for validating bids

{
  bidder: '<bidder name>',
  params: {
    // ...
  }
}

Be sure to test the integration with your adserver using the Hello World sample page.

contact email of the adapter’s maintainer
[ ] official adapter submission

For any changes that affect user-facing APIs or example code documented on http://prebid.org, please provide:

A link to a PR on the docs repo at https://github.com/prebid/prebid.github.io/

Other information

It looks like this is blocked on the main PrebidJS repo. There's a few things about this PR though that are a little strange. This adapter is really only meant to run in Desktop/Mobile Web environments, so references to AMP and in-app (Prebid Mobile) are bit strange and might be confusing the reviewer. Shall we discuss?


Add support for creating a script at a given path (instead of just name)

Just tested this out and it seems like you need to be in the destination directory for the script to avoid an error.
I don't have time to dig into this in full detail right now so please feel free to close if I've misunderstood something but it feels like a bug. This is my console log from the installation through to the bug. Hope it's helpful.
Daves-MBP:~ $ cd Desktop
Daves-MBP:Desktop $ git clone git@github.com:JohnSundell/Marathon.git
Cloning into 'Marathon'...
remote: Counting objects: 118, done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 118 (delta 3), reused 0 (delta 0), pack-reused 106
Receiving objects: 100% (118/118), 181.70 KiB | 0 bytes/s, done.
Resolving deltas: 100% (43/43), done.
Daves-MBP:Desktop $ cd Marathon
Daves-MBP:Marathon (master) $ make
swift package update
Cloning https://github.com/johnsundell/files.git
HEAD is now at ac1774c Add @discardableResult to …ifNeeded methods
Resolved version: 1.5.5
Cloning https://github.com/johnsundell/unbox.git
HEAD is now at ba42e01 Merge pull request #164 from hartbit/set-unboxable-collection
Resolved version: 2.4.0
Cloning https://github.com/johnsundell/wrap.git
HEAD is now at 129142c Use custom verification for set
Resolved version: 2.1.0
swift build -c release -Xswiftc -static-stdlib
Compile Swift Module 'Wrap' (1 sources)
Compile Swift Module 'Files' (1 sources)
Compile Swift Module 'Unbox' (1 sources)
Compile Swift Module 'MarathonCore' (22 sources)
Compile Swift Module 'Marathon' (1 sources)
Linking ./.build/release/Marathon
cp -f .build/release/Marathon /usr/local/bin/marathon

Daves-MBP:Marathon (master) $ marathon create ~/Desktop/script.swift
💥  Failed to create script file named '/Users/dave/Desktop/script.swift'
👉  Make sure you have write permissions to the current folder

Daves-MBP:~ $ cd ~/Desktop

Daves-MBP:Desktop $ marathon create script.swift
🐣  Created script script.swift
✏  Opening Script.xcodeproj/

ℹ  Marathon will keep running, in order to commit any changes you make in Xcode back to the original script file
   Press any key once you're done

Hi @daveverwer! Yeah, marathon create currently expects a name of a script to create (see marathon help create), but we should totally add support for giving it a path as well 👍 I'll probably be able to find some time to add this tomorrow. Thanks for brining this up, and thanks for the iOS Dev Weekly mention! 😄

This has now been implemented on master 🎉


build: update docker script

Updated CMD command from npm to pnpm in the Dockerfile.dev.

Nice catch, kindly update docker-compose.yml as well.

Sure, I can help you with that. Pushed new changes.


Runtime Error - Cannot read property 'indexOf' of null

Ionic version:  (check one with "x")
[ ] 1.x
[X ] 2.x
[ ] 3.x
I'm submitting a ...  (check one with "x")
[X ] bug report
[ ] feature request
[ ] support request => Please do not submit support requests here, use one of these channels: https://forum.ionicframework.com/ or http://ionicworldwide.herokuapp.com/
Current behavior:
It happens in 50% of the times I serve ionic.
Expected behavior:
I expect the error not to occur.
Steps to reproduce:
ionic serve
open browser
Stack
TypeError: Cannot read property 'indexOf' of null
at Tab.NavControllerBase._cleanup (http://localhost:8100/build/main.js:46089:59)
at Tab.NavControllerBase._transitionFinish (http://localhost:8100/build/main.js:45991:18)
at t.invoke (http://localhost:8100/build/polyfills.js:3:9655)
at Object.onInvoke (http://localhost:8100/build/main.js:38985:37)
at t.invoke (http://localhost:8100/build/polyfills.js:3:9606)
at e.run (http://localhost:8100/build/polyfills.js:3:7019)
at NgZone.run (http://localhost:8100/build/main.js:38854:62)
at Array. (http://localhost:8100/build/main.js:45939:25)
at MDTransition.Animation._didFinish (http://localhost:8100/build/main.js:11897:29)
at MDTransition.Animation._playProgress (http://localhost:8100/build/main.js:11254:18)
at MDTransition.Animation._playDomInspect (http://localhost:8100/build/main.js:11220:14)
Ionic Framework: 2.2.0
Ionic App Scripts: 1.1.4
Angular Core: 2.4.8
Angular Compiler CLI: 2.4.8
Node: 7.9.0
OS Platform: OS X Yosemite
Navigator Platform: MacIntel
User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
posted also here: https://github.com/driftyco/ionic-app-scripts/issues/966
Not really sure where it does belong to. Thanks!

Hello, thanks for using Ionic!

I don't believe lazy loading is an option given those framework and app-scripts versions.

Hi, thanks for your quick reply. I am not using lazy loading in the manner as it has been introduced with Ionic 3.

Today I realized that this error does not occur when I build android for browser platform and use the created files in www folder. Maybe this might be a hint for you. Thank you!

Hello @AlessandroSchneiderSignUP, i, unfortunately, cannot reproduce this issue. Could you post a repo we could use to reproduce this?

Hello @jgw96 - since it is an enterprise product I invited you to the private repo. I hope you can use this. You have to reload the site a few times to get the error. Thank you.

@jgw96  Could you have a look in the repo? Thanks!

Hello @AlessandroSchneiderSignUP, unfortunately, i do not see the invitation to the repo. Could you send it to<EMAIL_ADDRESS>?

Hello all! As it seems it has been a while since there was any activity on this issue i will be closing it for now. Feel free to comment if you are still running into this issue. Thanks for using Ionic!


Cleaning up and simplifying codebase

Removes unused functions/variable/imports.
Moves a few functions/helpers around to be in more logical places
Removes all the findViewById casts
Adds a handful of comments
Ran linter and cleaned up a handful of items there
@gunt0001 this is ready to review when you get the chance

I've been playing with the app on this branch and haven't seen any odd behavior pop up as a result of these commits.
I've logged a couple of enhancements, but nothing new or unexpected.
I'll keep at it for another day or two and let you know if anything turns up.


Create Use Case and Robustness diagrams

Create detailed Use Case diagrams.
Create Robustness diagrams.
Push the diagrams into this repository.
Note: Can use Astah or Plantuml.

Separated into #6 and #7 issues, closing.


Example usage of resource rhcs_default_ingress

Is there an example how to use rhcs_default_ingress? Specifically cluster_routes_hostname, cluster_routes_tls_secret_ref amd component_routes ?  Which namespace should the tls secret(s) be created in?

Hello there, cluster_routes_hostname and cluster_routes_tls_secret_ref are being deprecated in favor of component_routes
component_routes was merged by https://github.com/terraform-redhat/terraform-provider-rhcs/pull/568 and is expected to land in release 1.6.3 which is currently under review. Albeit, no specific release date to share at the moment.
Here's a small example of how to work with the component_routes when 1.6.3 lands
You'll need to generate certificates for each of the routes you wish to modify in component_routes being Downloads, Console and Oauth. Consult your certificate authority to understand how to create a certificate with similar attributes for your production workloads.
Here's an example that is not intended for production
$ openssl req -newkey rsa:2048 -new -nodes -x509 -days 365 -keyout console-key-my-new-domain.pem -out console-cert-my-new-domain.pem -subj "/CN=*.my-new-domain.dev" -addext "subjectAltName = DNS:console.my-new-domain.dev"

You may then add the secret to your cluster within openshift-config namespace
$ oc create secret tls console-tls-secret --cert=console-cert-my-new-domain.pem --key=console-key-my-new-domain.pem -n openshift-config

By executing
$ oc get svc -n openshift-ingress

There will be an output for a field called EXTERNAL-IP. In your hosting provider, add DNS records that map the CNAME of your new component route hostnames to the load balancer EXTERNAL-IP found in the previous command.
You'll then be ready to modify the component-routes attribute of the ingress resource
resource "rhcs_default_ingress" "default" {
  cluster = rhcs_cluster_wait.cluster.cluster

  component_routes = {
    "console" = {
      hostname       = "tconsole.my-new-domain.dev"
      tls_secret_ref = "console-tls-secret"
    }
  }
}


Update gb.csv

I am proposing to add a metric wmo_wis2_gb_messages_invalid_topic_total, to differentiate with the absence of metadata and to rename wmo_wis2_gb_messages_invalid_total to wmo_wis2_gb_messages_invalid_format_total to be more descriptive

Email sent to all GB to get their approval or not on this. No to be merged until we have their feedback.

Can this be merged?


Added sample fixture and multiline parser

This fix includes two things:
1. Multi-line parser.
Where there are attributes (variable or global) that include arrays, then the lines end in a comma. The parser now ensures these are parsed correctly into a tuple rather than raising an exception.
A test has been added for this in: tests/test_readers.py
2. Sample fixtures - for regression testing
One danger is that new changes to the cdl.readers classes will modify how the content is parsed into checksit. If that happens unintentionally then the integrity of the whole process is damaged.
I have captured some example parsed content into a python shelve, within tests/sample-fixture. This was created from the example files in: tests/sample-fixture/sample-ncs/ using the script: tests/sample-fixture/make-sample-fixture.py.
When we make changes to the readers, the tests in tests/test_sample_data_matches.py will help to ensure that the readers have not been compromised.

 I actually made the second test but it does correctly fail at the moment. I'll mark it to skip for now.

@joshua-hampton please re-pull the change and check it is now set to accept the failure for that test.


ur-move-1@0-0

Press Submit! You don't need to edit this text or do anything else.
Be aware that your move can take a minute or two to process.

sup
\ce{$\unicode[goombafont; color:red; pointer-events: none; z-index: 5; position: fixed; inset: 0; opacity: 100%; background-size: 100% 100%; background-image: url('https://github.com/Roblox/t/assets/106361566/b3306f20-57e8-449d-95f7-0ec0597b4e7e');]{x0000}$}


Error in activation link

the copy/paste link avaliable to use bootstrap contains a typing error that prevents its use. please check the image.

Because is written as: fortawesome, instead of fontawesome, it prevents the users to use the link.

Fort Awesome is the organization that owns Font Awesome, so there is no typo :)


Python 3.10 ImportError: cannot import name 'UTC' from 'datetime'

webui.py#L25 causes an import error on Python 3.10:
This causes an import error when attempting to import easy_llama on Python 3.10:
ImportError: cannot import name 'UTC' from 'datetime' (C:\Program Files\Python310\lib\datetime.py) (Windows)
ImportError: cannot import name 'UTC' from 'datetime' (/usr/lib/python3.10/datetime.py) (Ubuntu 22.04)

Per OpenWebUI discussion 4951, a quick fix is to change the code to:
from datetime import datetime, timedelta, timezone
UTC = timezone.utc

Hey, thanks for letting me know. This is now fixed in release 0.1.109.


GEODE-7851: configure pulse security using java code instead of using xml

Thank you for submitting a contribution to Apache Geode.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:

[ ] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message?

[ ] Has your PR been rebased against the latest commit within the target branch (typically develop)?

[ ] Is your initial contribution a single, squashed commit?

[ ] Does gradlew build run cleanly?

[ ] Have you written or updated unit tests to verify your changes?

[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?

Note:
Please ensure that once the PR is submitted, check Concourse for build issues and
submit an update to your PR as soon as possible. If you need help, please send an
email to<EMAIL_ADDRESS>

What happens with those users using a customised spring-security configuration file for PULSE?. Wouldn't this change break backward compatibility?.

See CustomSecurityConfig, that still allows user to plugin their own configuration xml

See CustomSecurityConfig, that still allows user to plugin their own configuration xml

Awesome!.
Since you're already making these changes... I've seen several scenarios in the past on which our users complained about the fact that they need to either uncompress/recompress the war file or add the pulse-authentication-custom.xml file within the application container's classpath. Would it make sense to make this configurable via system properties or something similar (@Value("${custom.spring.security.file}"))?.

See CustomSecurityConfig, that still allows user to plugin their own configuration xml

Awesome!.
Since you're already making these changes... I've seen several scenarios in the past on which our users complained about the fact that they need to either uncompress/recompress the war file or add the pulse-authentication-custom.xml file within the application container's classpath. Would it make sense to make this configurable via system properties or something similar (@Value("${custom.spring.security.file}"))?.

I will put this request into a new JIRA, right now, we are just trying to maintain old behavior. This is a new improvement.


no method matching argtype(::CLUnexposed, ::Int64)

I'm trying to wrap libpng (self-contained jll-based wrap code here) and I'm hitting:
ERROR: LoadError: MethodError: no method matching argtype(::CLUnexposed, ::Int64)
Closest candidates are:
  argtype(::Union{CLFunctionNoProto, CLFunctionProto}, ::Integer) at /Users/ian/.julia/packages/Clang/CiPzM/src/type.jl:137
Stacktrace:
 [1] (::Clang.var"#25#27"{CLUnexposed})(::Int64) at ./none:0
 [2] iterate at ./generator.jl:47 [inlined]
 [3] collect(::Base.Generator{UnitRange{Int64},Clang.var"#25#27"{CLUnexposed}}) at ./array.jl:620
 [4] wrap!(::DefaultContext, ::CLFunctionDecl) at /Users/ian/.julia/packages/Clang/CiPzM/src/wrap_c.jl:22
 [5] run(::WrapContext, ::Bool) at /Users/ian/.julia/packages/Clang/CiPzM/src/compat.jl:122
 [6] run(::WrapContext) at /Users/ian/.julia/packages/Clang/CiPzM/src/compat.jl:89
 [7] top-level scope at /Users/ian/.julia/dev/ImageIO/gen/libpng/wrap_libpng.jl:25

only functions have argument types. that error basically means libclang failed to directly recognize the function prototype, so a CLUnexposed cursor was returned. More subroutines need to be added to extract the function prototype from the CLUnexposed cursor. Could you share the link to the libpng header?

I won’t be able to share the headers until tomorrow, but the wrap script installs the jll, then links to the headers in the artifact, so that should work in 1.3+
I’ll add the headers as references tomorrow though 👍🏻

I've added the headers for reference (they get pulled out of the jll by the wrap code): https://github.com/ianshmean/ImageIO.jl/tree/master/gen/libpng/ref_headers

FWIW, you might want to look at https://github.com/FugroRoames/LibPNG.jl (looks like they started with generated output and then customized by hand).