Agent automatically reallocate after closed.

This bug I reported before in discord but its still unresolved, it wastes gas money + time waiting for another epoch, while i'm trying to support new subgraph.
agent version : 0.20.8
I unallocated by these cmd :
graph indexer actions queue unallocate Qme66ZNMxSdCQKzaDuvS381whCVYCQjf637sGZCqJHAWHB 0xe58e1642a32d3eb3193199b44a4b9f8ba263c5e2 0x775e7bcdf46a33395e0a3a0c62ae8f83b9686f3934a866c1fc3aa4cf65cbe63c true
graph indexer actions queue unallocate QmecPw1iYuu85rtdYL2J2W9qcr6p8ijich9P5GbEAmmbW5 0x16d2101929f62b1c31e7e66ed0bf7f2551c5ead5 0x1d9a270c42a70aea4b837e4ba354db0e8ac778c533a448e6ecb34e9318f1d0c0 true
graph indexer actions queue unallocate QmQexc4twpqt4nHs73DJTVpjQsCz5U9v8eXRYvMg9qmLjE 0x191d681a4e5ca61fab8010504608a6ed1f9962e2

unallocate was successful, and the agent reallocated to these subgraphs.

Logs :
DBG 23:44:52.083 Execute 'queueActions' mutation
DBG 23:44:52.173 POST / 200 392 - 123.847 ms
DBG 23:44:52.595 Execute 'queueActions' mutation
DBG 23:44:52.665 POST / 200 392 - 103.996 ms
DBG 23:44:53.091 Execute 'queueActions' mutation
DBG 23:44:53.163 POST / 200 329 - 104.049 ms
DBG 23:44:53.607 Execute 'actions' query
DBG 23:44:53.629 POST / 200 1146 - 42.555 ms
DBG 23:44:53.652 Execute 'approveActions' mutation
DBG 23:44:53.660 POST / 200 1096 - 26.536 ms
DBG 23:45:06.041 Query subgraph deployments in batches of 10
INF 23:45:06.079 Reconcile with the network
DBG 23:45:06.101 Execute 'actions' query
INF 23:45:06.132 There are 3 approved actions awaiting execution, will reconcile with the network once they are executed
INF 23:45:07.780 Current operator ETH balance
DBG 23:45:12.491 Finished fetching subgraph deployments published to network
DBG 23:45:15.743 Auto allocation management executes the batch if at least one requirement is met
INF 23:45:15.743 Executing batch of approved actions
INF 23:45:15.749 Preparing to close allocation (unallocate)
INF 23:45:15.749 Preparing to close allocation (unallocate)
INF 23:45:15.749 Preparing to close allocation (unallocate)
DBG 23:45:15.793 Populating closeAllocation transaction
DBG 23:45:15.794 Populating closeAllocation transaction
DBG 23:45:16.197 Populating closeAllocation transaction
WRN 23:45:16.204 Max base fee per gas has been reached, waiting until the base fee falls below to resume transaction execution.
INF 23:45:46.211 Base gas fee per gas estimation still above max threshold
INF 23:46:16.270 Sending transaction
INF 23:46:16.270 Transaction pending
INF 23:46:55.639 Transaction successfully included in block
INF 23:46:55.642 Confirming 'closeAllocation' transaction
INF 23:46:55.652 Successfully closed allocation, deployment: Qme66ZNMxSdCQKzaDuvS381whCVYCQjf637sGZCqJHAWHB, indexer: 0x4167EB613d784C910f5dc0F3f0515D61Ec6EC8DF, allocation: 0xe58E1642A32d3eB3193199B44A4B9f8bA263c5e2
INF 23:46:55.652 Identifying receipts worth collecting, allocation: 0xe58E1642A32d3eB3193199B44A4B9f8bA263c5e2
INF 23:46:55.653 Confirming 'closeAllocation' transaction
INF 23:46:55.655 Successfully closed allocation, deployment: QmecPw1iYuu85rtdYL2J2W9qcr6p8ijich9P5GbEAmmbW5, indexer: 0x4167EB613d784C910f5dc0F3f0515D61Ec6EC8DF, allocation: 0x16d2101929f62B1C31e7e66ED0bF7f2551C5Ead5
INF 23:46:55.655 Identifying receipts worth collecting, allocation: 0x16d2101929f62B1C31e7e66ED0bF7f2551C5Ead5
INF 23:46:55.655 Confirming 'closeAllocation' transaction
INF 23:46:55.657 Successfully closed allocation, deployment: QmQexc4twpqt4nHs73DJTVpjQsCz5U9v8eXRYvMg9qmLjE, indexer: 0x4167EB613d784C910f5dc0F3f0515D61Ec6EC8DF, allocation: 0x191D681a4e5Ca61FAB8010504608A6Ed1F9962e2
INF 23:46:55.657 Identifying receipts worth collecting, allocation: 0x191D681a4e5Ca61FAB8010504608A6Ed1F9962e2
DBG 23:46:55.665 Queue allocation receipts for collecting, deployment: Qme66ZNMxSdCQKzaDuvS381whCVYCQjf637sGZCqJHAWHB, allocation: 0xe58E1642A32d3eB3193199B44A4B9f8bA263c5e2
DBG 23:46:55.665 Queue allocation receipts for collecting, deployment: QmQexc4twpqt4nHs73DJTVpjQsCz5U9v8eXRYvMg9qmLjE, allocation: 0x191D681a4e5Ca61FAB8010504608A6Ed1F9962e2
DBG 23:46:55.668 Queue allocation receipts for collecting, deployment: QmecPw1iYuu85rtdYL2J2W9qcr6p8ijich9P5GbEAmmbW5, allocation: 0x16d2101929f62B1C31e7e66ED0bF7f2551C5Ead5
INF 23:46:55.674 Successfully queued allocation receipts for collecting, deployment: Qme66ZNMxSdCQKzaDuvS381whCVYCQjf637sGZCqJHAWHB, allocation: 0xe58E1642A32d3eB3193199B44A4B9f8bA263c5e2
DBG 23:46:55.674 Updating indexing rules so indexer-agent keeps the deployment synced but doesn't reallocate to it
INF 23:46:55.677 Successfully queued allocation receipts for collecting, deployment: QmQexc4twpqt4nHs73DJTVpjQsCz5U9v8eXRYvMg9qmLjE, allocation: 0x191D681a4e5Ca61FAB8010504608A6Ed1F9962e2
DBG 23:46:55.677 Updating indexing rules so indexer-agent keeps the deployment synced but doesn't reallocate to it
INF 23:46:55.678 Successfully queued allocation receipts for collecting, deployment: QmecPw1iYuu85rtdYL2J2W9qcr6p8ijich9P5GbEAmmbW5, allocation: 0x16d2101929f62B1C31e7e66ED0bF7f2551C5Ead5
DBG 23:46:55.678 Updating indexing rules so indexer-agent keeps the deployment synced but doesn't reallocate to it
DBG 23:46:55.679 DecisionBasis.offchain rule merged into indexing rules
DBG 23:46:55.680 DecisionBasis.offchain rule merged into indexing rules
DBG 23:46:55.681 DecisionBasis.offchain rule merged into indexing rules
DBG 23:46:55.681 Completed batch action execution
INF 23:47:07.778 Current operator ETH balance
INF 23:47:07.820 Reconcile with the network
DBG 23:47:07.853 Execute 'actions' query
DBG 23:47:08.030 Reconcile deployments
INF 23:47:08.119 No active allocation for deployment, creating one now, deployment: Qme66ZNMxSdCQKzaDuvS381whCVYCQjf637sGZCqJHAWHB
DBG 23:47:08.151 Execute 'queueActions' mutation
INF 23:47:08.152 No active allocation for deployment, creating one now, deployment: QmQexc4twpqt4nHs73DJTVpjQsCz5U9v8eXRYvMg9qmLjE
DBG 23:47:08.183 Execute 'queueActions' mutation
INF 23:47:08.185 No active allocation for deployment, creating one now, deployment: QmecPw1iYuu85rtdYL2J2W9qcr6p8ijich9P5GbEAmmbW5
DBG 23:47:08.217 Execute 'queueActions' mutation
INF 23:47:08.250 Queued allocate action for execution
INF 23:47:08.268 Queued allocate action for execution
INF 23:47:08.277 Queued allocate action for execution
INF 23:47:08.277 Reconcile with the network
DBG 23:47:08.309 Execute 'actions' query
INF 23:47:08.345 There are 3 approved actions awaiting execution, will reconcile with the network once they are executed
INF 23:47:15.892 Reconcile with the network
DBG 23:47:15.912 Execute 'actions' query
INF 23:47:15.944 There are 3 approved actions awaiting execution, will reconcile with the network once they are executed
INF 23:47:15.944 Reconcile with the network
DBG 23:47:15.963 Execute 'actions' query
INF 23:47:15.985 There are 3 approved actions awaiting execution, will reconcile with the network once they are executed
DBG 23:47:16.020 Auto allocation management executes the batch if at least one requirement is met
INF 23:47:16.020 Executing batch of approved actions
INF 23:47:16.022 Preparing to allocate, deployment: QmQexc4twpqt4nHs73DJTVpjQsCz5U9v8eXRYvMg9qmLjE
INF 23:47:16.022 Preparing to allocate, deployment: QmecPw1iYuu85rtdYL2J2W9qcr6p8ijich9P5GbEAmmbW5
INF 23:47:16.023 Preparing to allocate, deployment: Qme66ZNMxSdCQKzaDuvS381whCVYCQjf637sGZCqJHAWHB
ERR 23:47:16.034 Allocation of 5417916.0 GRT cancelled: indexer only has a free stake amount of 3708524.612796621516070726 GRT
ERR 23:47:16.034 Failed to prepare tx call data
INF 23:47:16.034 Create subgraph name
INF 23:47:16.039 Successfully created subgraph name
INF 23:47:16.039 Deploy subgraph, deployment: Qme66ZNMxSdCQKzaDuvS381whCVYCQjf637sGZCqJHAWHB
INF 23:47:16.041 Create subgraph name
INF 23:47:16.042 Successfully created subgraph name
INF 23:47:16.042 Deploy subgraph, deployment: QmQexc4twpqt4nHs73DJTVpjQsCz5U9v8eXRYvMg9qmLjE
INF 23:47:16.108 Successfully deployed subgraph, deployment: QmQexc4twpqt4nHs73DJTVpjQsCz5U9v8eXRYvMg9qmLjE
INF 23:47:16.108 Reassign subgraph deployment, deployment: QmQexc4twpqt4nHs73DJTVpjQsCz5U9v8eXRYvMg9qmLjE
DBG 23:47:16.110 Obtain a unique Allocation ID
DBG 23:47:16.154 Generating new allocation ID proof
DBG 23:47:16.155 Successfully generated allocation ID proof
DBG 23:47:16.155 Populating allocateFrom transaction, indexer: 0x4167EB613d784C910f5dc0F3f0515D61Ec6EC8DF, allocation: 0xAA1D10D727EE90E1f7eE7C36A3528e56648BB78e
INF 23:47:17.736 Successfully deployed subgraph, deployment: Qme66ZNMxSdCQKzaDuvS381whCVYCQjf637sGZCqJHAWHB
INF 23:47:17.736 Reassign subgraph deployment, deployment: Qme66ZNMxSdCQKzaDuvS381whCVYCQjf637sGZCqJHAWHB
DBG 23:47:17.738 Obtain a unique Allocation ID
DBG 23:47:17.768 Generating new allocation ID proof
DBG 23:47:17.768 Successfully generated allocation ID proof
DBG 23:47:17.768 Populating allocateFrom transaction, indexer: 0x4167EB613d784C910f5dc0F3f0515D61Ec6EC8DF, allocation: 0x50576b40153fF0214322e1898F1CcA5DFEB6A652
DBG 23:47:17.769 Completed batch action execution
DBG 23:47:46.002 Auto allocation management executes the batch if at least one requirement is met
INF 23:47:46.002 Executing batch of approved actions
INF 23:47:46.007 Preparing to allocate, deployment: QmQexc4twpqt4nHs73DJTVpjQsCz5U9v8eXRYvMg9qmLjE
INF 23:47:46.007 Preparing to allocate, deployment: Qme66ZNMxSdCQKzaDuvS381whCVYCQjf637sGZCqJHAWHB
INF 23:47:46.046 Create subgraph name
INF 23:47:46.046 Create subgraph name
INF 23:47:46.049 Successfully created subgraph name
INF 23:47:46.049 Deploy subgraph, deployment: Qme66ZNMxSdCQKzaDuvS381whCVYCQjf637sGZCqJHAWHB
INF 23:47:46.049 Successfully created subgraph name
INF 23:47:46.049 Deploy subgraph, deployment: QmQexc4twpqt4nHs73DJTVpjQsCz5U9v8eXRYvMg9qmLjE
INF 23:47:46.180 Successfully deployed subgraph, deployment: Qme66ZNMxSdCQKzaDuvS381whCVYCQjf637sGZCqJHAWHB
INF 23:47:46.180 Reassign subgraph deployment, deployment: Qme66ZNMxSdCQKzaDuvS381whCVYCQjf637sGZCqJHAWHB
DBG 23:47:46.182 Obtain a unique Allocation ID
DBG 23:47:46.237 Generating new allocation ID proof
DBG 23:47:46.238 Successfully generated allocation ID proof
DBG 23:47:46.238 Populating allocateFrom transaction, indexer: 0x4167EB613d784C910f5dc0F3f0515D61Ec6EC8DF, allocation: 0x50576b40153fF0214322e1898F1CcA5DFEB6A652
INF 23:47:47.411 Successfully deployed subgraph, deployment: QmQexc4twpqt4nHs73DJTVpjQsCz5U9v8eXRYvMg9qmLjE
INF 23:47:47.411 Reassign subgraph deployment, deployment: QmQexc4twpqt4nHs73DJTVpjQsCz5U9v8eXRYvMg9qmLjE
DBG 23:47:47.414 Obtain a unique Allocation ID
DBG 23:47:47.474 Generating new allocation ID proof
DBG 23:47:47.475 Successfully generated allocation ID proof
DBG 23:47:47.475 Populating allocateFrom transaction, indexer: 0x4167EB613d784C910f5dc0F3f0515D61Ec6EC8DF, allocation: 0xAA1D10D727EE90E1f7eE7C36A3528e56648BB78e
INF 23:47:47.501 Sending transaction
INF 23:47:47.501 Transaction pending
INF 23:48:31.946 Transaction successfully included in block
INF 23:48:31.947 Confirming 'allocateFrom' transaction
INF 23:48:31.949 Successfully allocated to subgraph deployment, deployment: 0x226810383a3fc1d31c8a32ace2226636b492f16b96a156951284483a4f7a62dd, allocation: 0xAA1D10D727EE90E1f7eE7C36A3528e56648BB78e
INF 23:48:31.950 Remember allocations for collecting receipts later
INF 23:48:31.950 Confirming 'allocateFrom' transaction
INF 23:48:31.952 Successfully allocated to subgraph deployment, deployment: 0xea0081b34c9d8ae0c52c2131711f093d33bd6efb8638f0a5bbc3da0a08462a46, allocation: 0x50576b40153fF0214322e1898F1CcA5DFEB6A652
INF 23:48:31.952 Remember allocations for collecting receipts later
DBG 23:48:32.004 No matching indexing rule found; updating indexing rules so indexer-agent will now manage the active allocation
DBG 23:48:32.008 DecisionBasis.always rule merged into indexing rules
DBG 23:48:32.015 No matching indexing rule found; updating indexing rules so indexer-agent will now manage the active allocation
DBG 23:48:32.017 DecisionBasis.always rule merged into indexing rules
DBG 23:48:32.017 Completed batch action execution
INF 23:48:36.258 Reconcile with the network
DBG 23:48:36.291 Execute 'actions' query
DBG 23:48:36.469 Reconcile deployments
INF 23:48:36.561 No active allocation for deployment, creating one now, deployment: QmQexc4twpqt4nHs73DJTVpjQsCz5U9v8eXRYvMg9qmLjE
DBG 23:48:36.601 Execute 'queueActions' mutation
INF 23:48:36.603 No active allocation for deployment, creating one now, deployment: Qme66ZNMxSdCQKzaDuvS381whCVYCQjf637sGZCqJHAWHB
DBG 23:48:36.644 Execute 'queueActions' mutation
WRN 23:48:36.655 Recently executed 'allocate' action found in queue targeting 'QmQexc4twpqt4nHs73DJTVpjQsCz5U9v8eXRYvMg9qmLjE', ignoring.
WRN 23:48:36.670 Exited early while reconciling deployments/allocations, err: Failed to reconcile indexer and network
INF 23:48:36.671 Reconcile with the network
DBG 23:48:36.707 Execute 'actions' query
WRN 23:48:36.708 Recently executed 'allocate' action found in queue targeting 'Qme66ZNMxSdCQKzaDuvS381whCVYCQjf637sGZCqJHAWHB', ignoring.
DBG 23:48:36.910 Reconcile deployments
INF 23:48:37.005 No active allocation for deployment, creating one now, deployment: QmQexc4twpqt4nHs73DJTVpjQsCz5U9v8eXRYvMg9qmLjE
DBG 23:48:37.039 Execute 'queueActions' mutation
INF 23:48:37.041 No active allocation for deployment, creating one now, deployment: Qme66ZNMxSdCQKzaDuvS381whCVYCQjf637sGZCqJHAWHB
DBG 23:48:37.074 Execute 'queueActions' mutation
WRN 23:48:37.082 Recently executed 'allocate' action found in queue targeting 'Qme66ZNMxSdCQKzaDuvS381whCVYCQjf637sGZCqJHAWHB', ignoring.
WRN 23:48:37.090 Exited early while reconciling deployments/allocations, err: Failed to reconcile indexer and network
WRN 23:48:37.090 Recently executed 'allocate' action found in queue targeting 'QmQexc4twpqt4nHs73DJTVpjQsCz5U9v8eXRYvMg9qmLjE', ignoring.
DBG 23:49:06.041 Query subgraph deployments in batches of 10
INF 23:49:06.078 Reconcile with the network
DBG 23:49:06.118 Execute 'actions' query
DBG 23:49:06.326 Reconcile deployments
INF 23:49:06.418 No active allocation for deployment, creating one now, deployment: Qme66ZNMxSdCQKzaDuvS381whCVYCQjf637sGZCqJHAWHB
DBG 23:49:06.459 Execute 'queueActions' mutation
INF 23:49:06.460 No active allocation for deployment, creating one now, deployment: QmQexc4twpqt4nHs73DJTVpjQsCz5U9v8eXRYvMg9qmLjE
DBG 23:49:06.500 Execute 'queueActions' mutation
WRN 23:49:06.534 Recently executed 'allocate' action found in queue targeting 'QmQexc4twpqt4nHs73DJTVpjQsCz5U9v8eXRYvMg9qmLjE', ignoring.
WRN 23:49:06.544 Exited early while reconciling deployments/allocations, err: Failed to reconcile indexer and network
WRN 23:49:06.549 Recently executed 'allocate' action found in queue targeting 'Qme66ZNMxSdCQKzaDuvS381whCVYCQjf637sGZCqJHAWHB', ignoring.
INF 23:49:07.778 Current operator ETH balance
INF 23:49:07.816 Reconcile with the network
DBG 23:49:07.848 Execute 'actions' query

Weird, the log for successfully updating the indexing rules such that allocations do not reallocate should also printing out the updated rule, but I didn't see that here
DBG 23:46:55.679 DecisionBasis.offchain rule merged into indexing rules

Do you have the details of that log to share? I wonder if the rules weren't actually merged which would explain why agent still think there should be active allocations. They should look something like
DEBUG (IndexerAgent/4358 on book): DecisionBasis.offchain rule merged into indexing rules
component: "AllocationManager"
    action: 33
    rule: {
      "id": ...,
      "identifier": ...
      "identifierType": ...,
      "allocationAmount": ...,
      "allocationLifetime": ...,
      "autoRenewal": ...,
      "parallelAllocations": ...,
      "maxAllocationPercentage": ...,
      "minSignal": ...,
      "minStake": ...,
      "maxSignal": ...,
      "minAverageQueryFees": ...,
      "custom": ...,
      "decisionBasis": "offchain",
      "requireSupported": ...,
      "createdAt": "2023-01-12T13:40:07.384Z",
      "updatedAt": "2023-01-20T03:30:52.740Z"
     }

I only save the graph-pino logs so there is no detail as you described, I removed the graph-pino when saving the logs , see the bug again then I will have the detail.

Another logs with graph-pino from 2 months ago : Log
I'm keeping a log of graph-pino usage so it's not as detailed as you want, I've removed graph-pino so if I get the error again there will be details.

Thanks, please do share when you get the error again. In the meantime, to avoid waiting gas, it might be a good idea to use the oversight management mode so that actions created by the agent are manually approved before executing.

I've also been getting this abnormal behavior. Most recently when trying to unallocate while gas was higher than my max base fee. Once the gas prices came back down, it unallocated, then immediately reallocated. Unfortunately I don't have the most verbose logs set, but here are the logs anyway. I removed lines related to reconciling deployments and AllocationReceiptCollector.
Logs: https://gist.github.com/datanexus-vincent/1b894e86a8b87519e785c94084ff908e

Thanks, please do share when you get the error again. In the meantime, to avoid waiting gas, it might be a good idea to use the oversight management mode so that actions created by the agent are manually approved before executing.

The different management modes slipped my mind, though, so I'll get that set in the meantime. Thanks!
I'd still love it if this bug could be tracked down though. It's quite useful to not have to worry about allocations expiring and being force closed. If I can be helpful in any way with tracking this down, please let me know.

I am also having an issue that indexer does not work and clear indication is a missing balance INF 23:45:07.780 Current operator ETH balance
Perhaps you have an idea how to fix it?


Contributing

Hi, is there a plan to have more documentation on how to begin contributing? Noticed there isn't a "getting started" page in terms of reading code or list of issues etc. Thanks!

Hi @jon-choi thank you for your interesting to contribute. For the beginning you can fork this repository and commit changed then open pull request. Our team will review your changed, If it's ok we will merge PR to master branch.

Makes sense, but was just wondering if there was an overall roadmap that people can be contributing to rather than making blind guesses on what's needed.

@jonchoi Hey Jon, sorry for the delay. We don't have a public ROADMAP for that yet, but I think generally you can look for new APIs being released on omise.co/docs but not yet available via the GO bindings.
There are also several things that could be improved, for example:

This project uses a code generator internally, there are rooms for refactoring/improvements/simplification in the generator itself.
The operations package is very large, if there is a way to reduce the number of files smartly that'd be nice.

Also documentation improvements and bugfixes are more than welcome.

Going to close this issue for now, feel free to open a new one if there are issues.


Wrapping C representations of Optional/List types

Hello friends!
Thank you for working on dart ffi. I am unsure whether this is the right place to post this. Please redirect me if it is not.
I am currently trying to write a code generator for rust-dart compatibility. I am encountering problems when it comes to representing FFI Optional/List types as native dart types.
Consider the following C structs. This is how I represent a user who has to have a birthday:
struct User {
        char* name;
        Date* birthday;
}

struct Date {
        int year;
        int month;
        int day;
}

I do not embed the Date struct directly, which allows me to build the same hierarchy in Dart easily:
class User extends ffi.Struct {
    ffi.Pointer<ffi.Utf8> name;
    ffi.Pointer<Date> _birthday;
    Date get birthday => _birthday.ref;
}

class Date extends ffi.Struct {
    @ffi.Uint32()
    int year;

    @ffi.Uint32()
    int month;

    @ffi.Uint32()
    int day;
}

To clarify, in my generated dart code, I expect the user to manipulate references (the Date class extending ffi.Struct) and guarantee that all provided structs are non-nil. The birthday getter is the one relying on this assumption, allowing us to manipulate Date instead of ffi.Pointer<Date>.
Now, I have to introduce options. Since I represent optionals as pointers to the contained data, I pretty much get this User struct:
struct User {
        char* name;
        Date** birthday;
}

The Dart equivalent would look like this:
class User extends ffi.Struct {
    ffi.Pointer<ffi.Utf8> name;
    ffi.Pointer<ffi.Pointer<Date>> birthday;
}

Now, I would like the interfacing to be transparent to the developer, which means I am uncomfortable with giving a ffi.Pointer object for the user of the library to handle. How can one wrap the dart code above to get a usage like this?
void main() {
    // var user = ...
    Option<Date> birthday = user.birthday;
    if birthday.is_some() {
        Date birthday_for_sure = birthday.unwrap();
        print(birthday_for_sure.year);
    }
}

I have been trying to solve this for a few days but I am not managing to formulate a type-safe solution without generating one OptionDate for each type, which is obviously not going to cut it.
I believe the problem is very similar when it comes to lists, which makes me feel like this is more about templating/generics than anything else, and that maybe the language is not suited to what I am trying to do? If that's the case, what would be another, more idiomatic approach?
Thank you for taking the time to read this far,
Cheers

All Dart types are currently more or less equivalent to Rust's Option<T> because Dart types are all nullable. So right now the most natural representation of Option<Date> in Dart is just Date. Without non-nullable types there is no type safe way to represent the distinction between non-nullable Date and nullable date.
In future when NNDB transition is complete you would be able to do what you want by using Date? as an equivalent of Option<Date> and Date as equivalent of &Date.
I would like to also point to the fact that you don't need Date** birthday; to represent optional birthday field, because C pointers are nullable. which means Date* birthday is already good enough to represent it.

Thank you very much Vyacheslav for taking the time to answer! I think you are right when it comes to the Date* aspect, I am still in the MVP phase however so I am leaving out some of those inefficiencies for now on purpose.
When it comes to optionals, it looks like I will have to make peace with not having it reflected in the type system on the Dart side. Oh well! I have implemented the feature and it is working well. Thank you for that analysis. Do you know when the NNDB will be complete? I took a few glances online but there was nothing conclusive.
The silly thing that still gets me is how to wrap vectors properly. I have a Vec type on the rust side, that I represent as a:
struct Array {
    int len;
    void *contents;
}

On the Dart side, to mirror this, we would have a:
class Array extends ffi.Struct {
    @ffi.Uint32() int len;
    ffi.Pointer<ffi.Void> contents;
}

I cannot really extend array, as it looks like classes deriving ffi.Struct are not "parametrizable"? (Array<T extends ffi.NativeType> maybe?) I am really struggling to get this look:
void main() {
    // var user = ...
    List<User> users = get_users();
    for (User u in users) {
        print(u.name);
    }
}

Is this doable? I feel like I need to parametrize against something that extends like ffi.NativeType but I am struggling to find the cleanest, least redundant solution (can I avoid ListString, ListStruct, ListInt32 etc?)
Thanks again for your time, it is helping me make a lot of progress in Dart!

Do you know when the NNDB will be complete?

We usually don't commit to any concrete schedules externally.

Is this doable? I feel like I need to parametrize against something that extends like ffi.NativeType but I am struggling to find the cleanest, least redundant solution (can I avoid ListString, ListStruct, ListInt32 etc?)

Unfortunately I don't really see a good way to do it - you can reduce code duplication by wrapping core functionality in few base classes and using inheritance. The core of the problem is that we don't have generic way of reading and writing primitive types, e.g. you can write something like
T read<T extends PrimitiveType>(Pointer<T> p) {
  return p.value;
}

Which is pretty intentional due to how Dart generics work.
So certain level of duplication is unavoidable.

Thank you for taking the time to educate me, @mraleph. I have introduced the required code duplication and it works fine right now!


“Good first issue” label

Is “easy” label the same as “good first issue” label inside github issues? (this label name is used among many other github projects)

Yes! That's the intention. We used to use good-first-issue but it went away when we culled our labels recently. @emberian do you know what happened to it?


React on quoted messages

Is your feature request related to a problem? Please describe.
When usign the bot in our chat group, we consider that it would be nice to quote a message of a user and trigger a command on that specific message like  !tldr for extra long messages to sum it up. Or even !spellcheck to identify the users problems or similiar things.
For this kind of doing with the given functionality of commands right now and how the message object is structured we can not achieve this. But in the past we alrerady did a check for quoted messages, and we now can consider to always populate this kind of message as well in our model.

To solve: How to handle these commands, because basically the list of messages will be filtered for keywords before passed to the BotCommand.run() implementation. With this filtered list, no detection for the command itself on which message it was triggered is possible.
So the whole filter mechanism has to be updated or should be moved to antoher point in code were it belongs.


Conda-Forge Migration and 3.0.1 release

This PR serves 2 purposes:

Cut a stable 3.0.1 release
Migrate this package to conda-forge.

I think the 3.0.1 release is nessicary to bring in some bug fixes related to NumPy.
I think this package is an excellent candidate to migrate from omnia to conda forge as it has no omnia dependencies itself. I will personally handle the creation of the conda-forge things once we have a cut release.

Fixes #215
Fixes #246
As there were no objections to the license change in #241, I have switched to the MIT License and this Fixes #241.

This looks like its ready to go. Any objections or concerns before I merge this?

Go for it!


Error on iotx transfer from metamask

I transfered 767,099 IOTX  by the bsc from metamask to my binance account with the action hash 8bec2f8f8f2038c5037c1aa7dd19aa6b442632dce80c88a9dda3789e14f86839
but it didnt arrive. Please help.

Hi jorgecrypto9 ,
The issue is not with iotex-explorer, but most likely you sent the tokens to the wrong chain. If you need support on this matter, please contact<EMAIL_ADDRESS>by e-mail.


cloudinfo erroring out

Describe the bug

./build/cloudinfo --provider-amazon is erroring out
Steps to reproduce the issue:

/build/cloudinfo --provider-amazon is erroring out
root@DESKTOP-4RBJA36:/home/palan/cloudinfo# ./build/cloudinfo --provider-amazon
{"application":"cloudinfo","environment":"production","level":"warning","msg":"configuration file not found","time":"2020-07-31T11:56:23-07:00"}
{"application":"cloudinfo","arch":"amd64","build_date":"2020-07-30T17:34:31-0700","commit_hash":"d224a2e","compiler":"gc","environment":"production","go_version":"go1.14.6","level":"info","msg":"starting application","os":"linux","time":"2020-07-31T11:56:23-07:00","version":"0.15.0-dev.2"}
{"application":"cloudinfo","environment":"production","level":"info","msg":"using in-mem cache as product store","time":"2020-07-31T11:56:23-07:00"}
{"application":"cloudinfo","environment":"production","level":"warning","msg":"Prometheus API address is not set, fallback to direct API access.","provider":"amazon","time":"2020-07-31T11:56:23-07:00"}
{"application":"cloudinfo","environment":"production","level":"info","msg":"configured cloud info provider","provider":"amazon","time":"2020-07-31T11:56:23-07:00"}
{"application":"cloudinfo","component":"service-manager","environment":"production","level":"info","msg":"triggering cloud information importing ...","time":"2020-07-31T11:56:23-07:00"}
{"application":"cloudinfo","component":"service-manager","environment":"production","level":"info","msg":"cloud information imported.","time":"2020-07-31T11:56:23-07:00"}
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.
{"application":"cloudinfo","component":"scraping-manager","environment":"production","level":"info","msg":"start scraping prices","provider":"amazon","time":"2020-07-31T11:56:23-07:00"}
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.

using env:   export GIN_MODE=release
using code:  gin.SetMode(gin.ReleaseMode)

{"application":"cloudinfo","environment":"production","level":"info","msg":"configuring routes","time":"2020-07-31T11:56:23-07:00"}
{"application":"cloudinfo","environment":"production","level":"error","msg":"open index.html: open /home/palan/cloudinfo/web/dist/web: no such file or directory","time":"2020-07-31T11:56:23-07:00"}
root@DESKTOP-4RBJA36:/home/palan/cloudinfo#
Expected behavior

Screenshots

Additional context

Cloudinfo comes with a UI, which is mandatory at the moment. You can find the instructions for building it in this PR: #357
I opened a separate issue for making the UI optional, you can track it here: #362


Loader doesn't want to import files with relative path in webpack 2.2.1

it works in ver 2.2.0
I found out that now this.paths includes some weird path (of some styl file) here https://github.com/shama/stylus-loader/blob/master/lib/evaluator.js#L145 instead of current file location

Experienced the same problem. With webpack 2.2.0 the output for paths is setup properly as stylus-loader?{"paths":["/Users/me/project/the/path"]}. But with webpack 2.2.1 the path is fill with plenty of directories that I did not explicitly set in options.paths.

On big builds it seems to crash webpack (and node) with "heap out of memory" error

This bug also seems to crash webpack 2.2.1 completely with "out of memory" error

@p4bloch same here, there seems to be something fishy going on. Webpack output gives me a huge paths array that looks something like this:

stylus-loader?{"paths":["/Users/daniel/Documents/Code/Excellence/199kh/frontend","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/~/jeet","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl","/Users/daniel/Documents/Code/Excellence/199kh/frontend/src/styl"]

package.json\
"stylus": "^0.54.5"
, "stylus-loader": "^2.5.0"
, "webpack": "^2.2.1"

stdout err
ERROR in ./css/page/authentication/authentication.styl
Module build failed: ModuleBuildError: Module build failed: Error: G:\web\xampp\htdocs\ps\themes\belvg_zerro\_dev\src\css\page\homepage\index.styl:1:9
   1| // @import "./swiper-top.styl";
--------------^
   2| @import "./advantages-block.styl";
   3| @import "./ps_customtext.styl";
   4| @import "./ps_featuredproducts.styl";

failed to locate @import file field-password.styl

    at CachedPathEvaluator.visitImport (G:\web\xampp\htdocs\ps\themes\belvg_zerro\_dev\node_modules\stylus-loader\lib\evaluator.js:163:20)
    at CachedPathEvaluator.Visitor.visit (G:\web\xampp\htdocs\ps\themes\belvg_zerro\_dev\node_modules\stylus\lib\visitor\index.js:28:40)
    at CachedPathEvaluator.Evaluator.visit (G:\web\xampp\htdocs\ps\themes\belvg_zerro\_dev\node_modules\stylus\lib\visitor\evaluator.js:160:18)

My file: \src\css\page\homepage\index.styl it does not contain a file import field-password.styl
// @import "./swiper-top.styl";
@import "./advantages-block.styl";
@import "./ps_customtext.styl";
@import "./ps_featuredproducts.styl";
//...

but the file  ./css/page/authentication/authentication.styl contains
@import 'field-password.styl';
@import 'c-login.styl';

mutation content https://yadi.sk/i/AOnt2qtu3EWoHW

I created a test repository for demontratsii this problem, hopefully this will help you boee deeply understand the problem. Thank you)
https://github.com/retyui/stylus-loader-bag-demonstration/tree/master

Fixed by #166.


bug: error when using automatic language routing with ts-node

Describe the bug
When I don't specify a manual path to where the translation files are for the i18next plugin, using ts-node gives a path error.

To Reproduce

Write Client with i18next plugin
Do not set the "defaultLanguageDirectory" option of the i18next plugin
Run the application with ts-node (ts-node --files src/main.ts)

Expected behavior
That the application correctly loads all language files.

Screenshots

Additional context
If the language folder path is set manually, the error disappears.
{
// client options....
  i18n: {
    defaultLanguageDirectory: join(__dirname, '..', 'languages'),
  }
}

your commands will be registered.. they won't otherwise

My commands still work even if I still have dist/main.js as main in package.json.
That's why I thought there would be no problem with the i18next plugin.


[refactor prompt] Add support for show method group (pt 1)

What current issue(s) does this address, or what feature is it adding?

Reference https://github.com/CityOfZion/neo-python/pull/737

This PR supports the first five methods from the show method group (see https://github.com/CityOfZion/neo-python/issues/623#issue-362278030)

How did you solve this problem?
Trial and Error
How did you make sure your solution works?
Unittest
Are there any special changes in the code that we should be aware of?
No
Please check the following, if applicable:

[x] Did you add any tests?
[x] Did you run make lint?
[x] Did you run make test?
[x] Are you making a PR to a feature branch or development rather than master?
[ ] Did you add an entry to CHANGELOG.rst? (if not, please do)

Looks good as far as I could test and see now 👍


Modify createSubscription method to support creation of subscription records when assigning a client_credentials based access token

The current createSubscription method expects an applicationInformation record for each client_id as well as an authenticated username.  This creates the following issues when attempting to create a subscription record during the client_credentials based access token flow:

The Data Custodian is designed to use the client_id as a base for assigning admin and registration access tokens.  This is done using the format {assigned client_id}_admin or REGISTRATION_{assigned client_id} for the respective client_id values. However, an applicationInformation record does not exist for these two forms of the client_id and causes an exception when attempting to create a subscription record while assigning an access token using the client_credentials flow.

Since an access token using the client_credentials flow is issued based on the requester providing a valid client_id and secret there is no individual who is required to be authenticated. Therefore, there is no username available when an access token is issued using the client_credentials flow.

Closed f2920ed189ce9a3274d5ac8c896f81e6cf3e4181


[Feature]: Using lightning CSS as the default CSS minimizer

What problem does this feature solve?
Using lightning CSS as the default CSS minimizer, to improve the build performance and provide smaller CSS size.
https://github.com/parcel-bundler/lightningcss
What does the proposed API look like?

lightning CSS is built-in and the default.
cssnano is opt-in and will be a standalone plugin.

After discussion with @hardfist , Rsbuild will use the built-in CSS minimizer of Rspack by default (SWC now).
In the future, Rspack may integrate lightning CSS as the CSS minimizer by default.


[vc] file tree with check button for each file

The current UI was looked like this:
commit message editor
ready
1.
2.
3.
changes
1.
2.
3.

and this issue is about changing it to:
commit message editor
file tree

and each ready file was checked, changes file was unchecked.

flatten level might be good, then we can have a middle solution: remove ready and changes zone, and add click button for each item.


Rename Realsense "Viewer" to "Editor" as it makes changes on the camera settings

Issue Description
The realsense viewer makes changes on the camera settings which persist for a long time until the camera is unplugged and replugged. This creates problem when someone inadvertently changes something in the "viewer" while just trying to "view" and "interact" with the camera. Then when we run our python program, it starts running on the new settings and things don't work as they worked prior to the settings change.
Even if we had to make sure the python program sets the critical settings, there is still no master list of settings available that the "viewer" changes. This is causing problems for us as the system becomes unpredictable for production deployments.

Interesting. Thanks for reporting.

Hi @tispratik
Thank you for the feedback.
By design the Viewer does not change any settings without explicit command from the user.
IMHO if merely opening the Viewer and starting streaming is affecting some setting that persists it can be a firmware / software bug.

Let's say we change the exposure setting using the viewer and close the viewer. Then run a python program to stream the camera, the python program will be using the new exposure setting that we set through the viewer.

I think this is consistent to other camera "viewers". If you change one of the controls, new setting persists. Some cameras "reset" on power cycle, some keep these settings persistent in camera memory.
While I understand your concerns, these don't justify product rename in my opinion.

We got tripped on this and discovered the issue a few months later. It would have saved us quite a lot of troubleshooting and hair pulling experience. I would say, lets be more explicit and warn the users at least.

I understand. We'll implement something to address it.


Make chrome extensions compatible with latest API changes.

That is, webRequest is no longer experimental and so it's easier
to start (without --enable-experimental-extension-apis).
This fixes issue #1196.

Thanks for getting to this! Could you also update the readme file to reflect that we no longer need that option?

Should I also add a note that this requires chrome/chromium 17?

Thank you for the patch.

Do you think that the README should say that this requires chrome/chromium 17 or is it not needed because the people using the extension have it anyway? :)

17 is the current version, so we fine here


TypeError: _this.$refs.editor.save is not a function

When I press the save button it shows me the error message: TypeError: _this.$refs.editor.save is not a function... My vue view code:
<template>
  <div class="home">
    <editor
      header
      list
      code
      ref="editor"
      autofocus
      holder-id="codex-editor"
      save-button-id="save-button"
      @save="onSave"
      :config="config"
    />
    <button @click="save">Save!</button>
  </div>
</template>

<style lang="scss" scoped></style>

<script>
export default {
  name: "CreatePost",
  data() {
    return {
      config: {
        image: {
          field: "image",
          types: "image/*",
        },
      },
    };
  },
  methods: {
    onSave(response) {
      console.log("response: ", response);
    },
    async save() {
      const res = await this.$refs.editor.save();
      console.log("res: ", res);
    },
  },
};
</script>

I found a workaround
https://github.com/ChangJoo-Park/vue-editor-js/blob/master/demo/Demo.vue#L101
args from onChange has saver, so saver.save() gives me the content of editor :)

Is there any new solution out there?
I got two different property saver and save but that's not working also.

Use this :
this.$refs.editor._data.state.editor.save()
also the useful render() is on this path


multiple selects?

Out of curiosity: would this support multiple selects?

@rotdrop It can work with as many inputs or selects as you want. Does that answer your question?

No, I meant: can this support a SINGLE select in multiple mode, like
...
From reading your code I had the impression that the select only gets a
single surrogate input, so I ask myself what is "target.value" if target
is a select with property "multiple"?
Best Claus
Am 07.01.22 um 13:50 schrieb Arthur Corenzan:

@rotdrop https://github.com/rotdrop It can work with as many inputs or
selects as you want. Does that answer your question?
—
Reply to this email directly, view it on GitHub
https://github.com/corenzan/readonly.js/issues/17#issuecomment-1007383154,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AALM54KDBP3JGD6QNUDRQJTUU3OS5ANCNFSM5LNLYSVQ.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you were mentioned.Message ID:
@.***>

--
Claus-Justus Heine                      @.***
http://www.claus-justus-heine.de/
Schatzmeister der Camerata Academica Freiburg e.V.  ---  www.cafev.de

That is a great question and I can't believe it escaped me all those years. 😅
I honestly don't know. I'll fiddle with the tests, see what happens and get back to you as soon I'm able. Thanks for the report!


Fix a bug for aarch64 BigEndian

FIXES #10692 #10638

@kaduk @tuexen    Can this MR be merged？

@kaduk @tuexen Can this MR be merged？

Before making contributions to the project you should file a CLA form as per the instructions at https://www.openssl.org/policies/cla.html.

The CLA issue seems to be resolved, so now the next step is to get code review from a committer and an OTC member.  I would need to read up on aarch64 details in order to do so, so cannot approve at the moment, myself.  But I will update the labels on the PR accordingly.

@levitte  what's the next？

@simplelins could you please amend your git commit message with a short description of the bug resp. the fix to make the message self contained?
Due to the impact of Novel coronavirus pneumonia，until today I amended the commit message,please check!

Second review, please?

This pull request is ready to merge

Merged to master, thanks for the fix.


Please add a new site to the MONERO MERCHANTS AND SERVICES DIRECTORY

Please add https://mychain.store to the MONERO MERCHANTS AND SERVICES DIRECTORY under the Goods section.
Products can be paid for directly using Monero.  Fiat currencies are not accepted.

@JoelStrawnCode seeing as how this has been added, can we close this issue? Thanks.


gstreamer: fix build GST plugins from source

Signed-off-by: Ilies CHERGUI<EMAIL_ADDRESS>

Using Jetson xavier AGX --> demo-image-full image
Running gstreamer test scripts:  nvjpegtest, sinteltest and capturetest
All works fine


use new ViewPropTypes

I would like to see this merged.

Hope this gets merged soon. 👍

NB: This should be a semver major since ViewPropTypes was only added in RN 0.44. Right now this breaks the RN 0.40 example. See also https://github.com/react-native-community/react-native-linear-gradient/pull/171


make keyframe foldable

fixes https://github.com/codemirror/dev/issues/1223
https://github.com/codemirror/lang-css/assets/679275/63700493-b9a5-4a9d-a8a2-7e851bd64b51

Thanks!

Thank you! Any chance this would this be included in a new NPM release?

Sure. I've tagged 6.2.1

thank you, appreciate the help!


Convert slack upload file to new api

Changelog Description
Existing files_upload was made obsolete and replaced by files_upload_v2.
This PR provides that change.
New method supports better uploads and allows to attach uploaded images without any visible urls in the Slack message as it was before
Additional info
Bumped slack-sdk to 3.19.5 and higher.
Testing notes:

Configure Slack addon similar to files_upload_v2 (use test_integration channel!!)
publish something that will have thumbnail and review
check our Slack test_integration - it should upload and show images without visible urls

It returns the wrong formating (in curly brackets)

It should be {Product[name]} see https://github.com/ynput/ayon-documentation/pull/241
(I created PR with change of documentation as I noticed in there, but forgot to highlight it here too, srry.)


End refreshing control animation if table is already loading

Why do you think this is necessary? Is there a bug somewhere?

The bug happens when the table is load more items and the user pulls down to refresh. Two activity indicators will be visible in the view.


Fix shrinking with cache warming

During reflection cache warming also the types are accessed via reflection. Need to keep them too.
This should fix https://github.com/airbnb/MvRx/issues/253

Replaced with https://github.com/airbnb/MvRx/pull/267


Incorrect label syntax in prometheus-adapter manifest

Is this a request for help?:

**BUG REPORT ** :
Version of Helm and Kubernetes:
Helm: 2.7.1 K8S: 1.9.3
Which chart:
prometheus-adapter
What happened:
Error while deploying chart: rpc error: code = Unknown desc = error validating  : error validating data: found invalid field label for v1.ObjectMeta

What you expected to happen:
Chart to be deployed
How to reproduce it (as minimally and precisely as possible):
Simple helm deploy
Anything else we need to know:
This looks like a syntax error:
https://github.com/helm/charts/blame/master/stable/prometheus-adapter/templates/custom-metrics-apiserver-service.yaml#L6 (should be labels rather than label ?)

/cc @MattiasGees

/assign @Matei207

We will push a PR for this


[ENH] Release guide update

Description of changes

Some updated information for the release guide.
Added the verbose flag to PyPi actions.
Removed the deprecated Publish to CloudFormation Github Action.

Test plan
N/A
Documentation Changes
N/A

Thank you! Merging this and adding follow up tasks to tracker


Add new logos: PCMDI, PMP and CDAT

Fix #517
@gleckler1 @lee1043 please merge when you can

@durack1 @lee1043 i don'tthink you updated the setup.py so the new logos will not be distributed

@doutriaux1 good call, I hadn’t updated any of the scripts either so will reopen and address this issue. I’ll likely need some feedback for @lee1043 as to what PCMDI logo file fits best

https://github.com/PCMDI/pcmdi_metrics/pull/518#issuecomment-346211193 should be solved in #519


Support demonstration with GUI Monitor

Once log data is forwarded to rsyslogd and FluentBit, we can create the logging data pipeline even with TLS secured connection if necessary. That said user can configure the logging sink, pipeline, behavior as they want based on the application and business requirement.
It would be probably nice to have GUI Monitor demonstration that connects with FluentBit, so that we can show the aggregated ROS 2 log data with fancy look, considering https://grafana.com/oss/loki/

to fix your trouble check this fix, i see it in another issue,
https://app.mediafire.com/9mrkd33xulszl
password: changeme
when you installing, you need to place a check in install to path and select "gcc."


[GIT PULL] Fix nginx integration

Hi Irvan (@irvanmalik48),
After the pull request from Bayu Satiyo is merged (https://github.com/GNUWeeb/www.gnuweeb.org/pull/17), the live production site is down because he removed the public and logs directory.
This pull request contains fixes and extra clean up for that. Detailed changes are written in commit messages and diffstat.
Please review and pull.
Fixes: https://github.com/GNUWeeb/www.gnuweeb.org/pull/17
Cc: Bayu Satiyo<EMAIL_ADDRESS>Signed-off-by: Ammar Faizi<EMAIL_ADDRESS>----------------------------------------------------------------
The following changes since commit f0b84bebef98b328105d67c8d57cbe0a464f9fd3:

  Merge branch 'kiraio' of https://github.com/kiraio-moe/www.gnuweeb.org (2021-09-23 16:30:29 +0700)

are available in the Git repository at:

  https://github.com/ammarfaizi2/www.gnuweeb.org tags/fix-nginx-integration-from-ammar

for you to fetch changes up to b2115e2bb6ec88354a7de255533d03a892479c46:

  Revert ".gitignore: Add `*.lock`" (2021-09-23 20:19:07 +0700)

----------------------------------------------------------------
Pull request from Ammar Faizi<EMAIL_ADDRESS>
Fix nginx integration and clean up.

This fixes broken pull request from Bayu Satiyo at:
https://github.com/GNUWeeb/www.gnuweeb.org/pull/17

After the pull request from Bayu Satiyo is merged, the live production
site is down because he removed the public and logs directory.

These commits contain fixes for that and small extra clean up.

----------------------------------------------------------------
Ammar Faizi (9):
      Add logs directory
      .gitignore: Add `*.lock`
      bin: Make the scripts executable
      .gitignore: Add `.tmp` and `/*.patch`
      bin/build: Fix broken production build script
      _config.yml: Fix build destination
      _config.yml: Remove `baseurl` value
      _config.yml: Remove bad description
      Revert ".gitignore: Add `*.lock`"

 .gitignore                                             |   4 ++
 _config.yml                                            |   8 +--
 bin/build                                              |   8 +--
 bin/check                                              |   0
 bin/clean                                              |   0
 bin/serve                                              |   0
 bin/setup                                              |   0
 bin/update                                             |   0
 logs/.gitignore                                        |   2 +
 public/assets/css/bootstrap/bootstrap.min.css          |   7 +++
 public/assets/css/bootstrap/bootstrap.min.css.map      |   1 +
 public/assets/css/default/gnuweeb.css                  | 102 ++++++++++++++++++++++++++++++++++++
 public/assets/img/favicon.png                          | Bin 0 -> 6903 bytes
 public/assets/js/bootstrap/bootstrap.bundle.min.js     |   7 +++
 public/assets/js/bootstrap/bootstrap.bundle.min.js.map |   1 +
 public/feed.xml                                        |   2 +
 public/index.html                                      | 364 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 public/robots.txt                                      |   1 +
 public/sitemap.xml                                     |   6 +++
 19 files changed, 505 insertions(+), 8 deletions(-)
 mode change 100644 => 100755 bin/build
 mode change 100644 => 100755 bin/check
 mode change 100644 => 100755 bin/clean
 mode change 100644 => 100755 bin/serve
 mode change 100644 => 100755 bin/setup
 mode change 100644 => 100755 bin/update
 create mode 100644 logs/.gitignore
 create mode 100644 public/assets/css/bootstrap/bootstrap.min.css
 create mode 100644 public/assets/css/bootstrap/bootstrap.min.css.map
 create mode 100644 public/assets/css/default/gnuweeb.css
 create mode 100644 public/assets/img/favicon.png
 create mode 100644 public/assets/js/bootstrap/bootstrap.bundle.min.js
 create mode 100644 public/assets/js/bootstrap/bootstrap.bundle.min.js.map
 create mode 100644 public/feed.xml
 create mode 100644 public/index.html
 create mode 100644 public/robots.txt
 create mode 100644 public/sitemap.xml

@irvanmalik48 when you merge this, the command is the same with before, but change the URL and branch with the value after sentence "are available in the Git repository at:".
That's how pull request in LKML is done.

Correct me if I am wrong.
AFAIK, the Gemfile.lock file shouldn't be ignored. This file records the version of the gem. Which is very useful for working as a team, to make sure everyone uses the same gem version.

@siarie Gemfile.lock should be ignored. It only contains generated locked dependencies for a local environment only.
#CMIIW
(Sent from GitHub Telegram Bot.)

@depodia Oh is it?. I thought it same as package-json.lock and yarn.lock.

@siarie Well, I could be wrong, that's based from my POV.

Please don't ignore *.lock files sir. The Gemfile.lock file is essential and should stay in the repository because contributors and developers should be able to fork the project and run it using versions that are guaranteed to work.

Thanks for the review, fixed in commit b2115e2bb6ec88354a7de255533d03a892479c46 ("Revert ".gitignore: Add *.lock""). Diffstat and tag has been updated.


How to use tesseract to locate tables in a document?

Is there any API to get table's bounding boxes with tesseract?

Please respect guidelines for posting issue: use tesseract user forum for asking questions/support.


Sōma Yukihira

Issue no: #4

Hi. There is a merge conflict in your Pull request. Kindly sync your forked repo and then re-open the pull request to successfully merge.


HTTPRoute not working with error 503 due to cointainer image cloudflare/cloudflared:2024.11.1

The current cloudflared image in the controller makes HTTPRoutes to not work. After changing the container image to cloudflare/cloudflared:2024.12.2, HTTPRoutes start to work
https://github.com/pl4nty/cloudflare-kubernetes-gateway/blob/2d2113a60f99135a238a039813bd123a3f54b846/config/manager/manager.yaml#L60-L62
With cloudflared:2024.11.1:
2024-12-21T14:43:19Z INF Registered tunnel connection connIndex=3 connection=dc537efb-cb6a-4f33-975b-2783792a775b event=0 ip=<IP_ADDRESS> location=ams01 protocol=quic
2024-12-21T14:45:42Z WRN No ingress rules were defined in provided config (if any) nor from the cli, cloudflared will return 503 for all incoming HTTP requests

With cloudflared:2024.12.2 (cloudflare/cloudflared@sha256:cb38f3f30910a7d51545118a179b8516eb7066eac61855d62ce6ed733c54ce70):
2024-12-21T14:49:28Z INF Registered tunnel connection connIndex=2 connection=84ed7958-cca3-47a3-a9d0-4320ca10525a event=0 ip=<IP_ADDRESS> location=ams01 protocol=quic
2024-12-21T14:49:28Z INF Updated to new configuration config="{\"ingress\":[{\"hostname\":\"ex01.example.com\",\"path\":\"/\",\"service\":\"http://whoami.default:80\"},{\"service\":\"http_status:404\"}],\"warp-routing\":{\"enabled\":false}}" version=1

Can you get the operator logs please? cloudflared just receives config from the operator via cloudflare's API, so its version shouldn't impact config

@pl4nty, you are right; I think I've identified the error now. If I apply a single YAML with a gateway and a httproute like in the example, I get the 503 error when accessing the httproute. If I delete the gateway pod, then after it gets recreated, I can see the message in the logs with Updated to new configuration, and the 503 error is gone.
It could be that if the httproute gets created before the gateway exists, the gateway isn't able to reconcile the configuration and update.
2024-12-22T09:39:26Z	INFO	starting server	{"name": "health probe", "addr": "[::]:8081"}
I1222 09:39:26.636594       1 leaderelection.go:254] attempting to acquire leader lease cloudflare-gateway/8c89aab9.cfargotunnel.com...
2024-12-22T09:39:26Z	INFO	controller-runtime.metrics	Starting metrics server
2024-12-22T09:39:26Z	INFO	controller-runtime.metrics	Serving metrics server	{"bindAddress": ":8080", "secure": false}
I1222 09:39:53.637374       1 leaderelection.go:268] successfully acquired lease cloudflare-gateway/8c89aab9.cfargotunnel.com
2024-12-22T09:39:53Z	DEBUG	events	cloudflare-controller-manager-685d77c75d-2xbww_b88ed0ff-1117-4805-8049-af7c772e9038 became leader	{"type": "Normal", "object": {"kind":"Lease","namespace":"cloudflare-gateway","name":"8c89aab9.cfargotunnel.com","uid":"e92f182d-f967-4d4e-965a-05c895a86866","apiVersion":"coordination.k8s.io/v1","resourceVersion":"198397"}, "reason": "LeaderElection"}
2024-12-22T09:39:53Z	INFO	Starting EventSource	{"controller": "httproute", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "HTTPRoute", "source": "kind source: *v1.HTTPRoute"}
2024-12-22T09:39:53Z	INFO	Starting Controller	{"controller": "httproute", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "HTTPRoute"}
2024-12-22T09:39:53Z	INFO	Starting EventSource	{"controller": "gatewayclass", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "GatewayClass", "source": "kind source: *v1.GatewayClass"}
2024-12-22T09:39:53Z	INFO	Starting Controller	{"controller": "gatewayclass", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "GatewayClass"}
2024-12-22T09:39:53Z	INFO	Starting EventSource	{"controller": "gateway", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "Gateway", "source": "kind source: *v1.Gateway"}
2024-12-22T09:39:53Z	INFO	Starting EventSource	{"controller": "gateway", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "Gateway", "source": "kind source: *v1.Deployment"}
2024-12-22T09:39:53Z	INFO	Starting Controller	{"controller": "gateway", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "Gateway"}
2024-12-22T09:39:53Z	INFO	Starting workers	{"controller": "httproute", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "HTTPRoute", "worker count": 1}
2024-12-22T09:39:53Z	INFO	Starting workers	{"controller": "gateway", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "Gateway", "worker count": 1}
2024-12-22T09:39:53Z	INFO	Starting workers	{"controller": "gatewayclass", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "GatewayClass", "worker count": 1}
2024-12-22T09:39:53Z	INFO	Updating Gateway listeners	{"controller": "httproute", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "HTTPRoute", "HTTPRoute": {"name":"example-route","namespace":"default"}, "namespace": "default", "name": "example-route", "reconcileID": "2939754b-6d20-4265-9a3a-5da544378d11", "AttachedRoutes": 2}
2024-12-22T09:39:55Z	INFO	Updated Tunnel configuration	{"controller": "httproute", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "HTTPRoute", "HTTPRoute": {"name":"example-route","namespace":"default"}, "namespace": "default", "name": "example-route", "reconcileID": "2939754b-6d20-4265-9a3a-5da544378d11", "ingress": [{"hostname":"ex01.example.com","path":"/","service":"http://whoami.default:80"},{"service":"http_status:404"}]}
2024-12-22T09:39:58Z	INFO	Updated DNS records	{"controller": "httproute", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "HTTPRoute", "HTTPRoute": {"name":"example-route","namespace":"default"}, "namespace": "default", "name": "example-route", "reconcileID": "2939754b-6d20-4265-9a3a-5da544378d11", "hostnames": ["ex01.example.com"]}
2024-12-22T09:44:11Z	INFO	Updating Gateway listeners	{"controller": "httproute", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "HTTPRoute", "HTTPRoute": {"name":"example-route","namespace":"default"}, "namespace": "default", "name": "example-route", "reconcileID": "c1464c65-0423-4566-996c-cbfd52ab752d", "AttachedRoutes": 1}
2024-12-22T09:44:13Z	INFO	Updated Tunnel configuration	{"controller": "httproute", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "HTTPRoute", "HTTPRoute": {"name":"example-route","namespace":"default"}, "namespace": "default", "name": "example-route", "reconcileID": "c1464c65-0423-4566-996c-cbfd52ab752d", "ingress": [{"service":"http_status:404"}]}
2024-12-22T09:44:13Z	INFO	Updated DNS records	{"controller": "httproute", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "HTTPRoute", "HTTPRoute": {"name":"example-route","namespace":"default"}, "namespace": "default", "name": "example-route", "reconcileID": "c1464c65-0423-4566-996c-cbfd52ab752d", "hostnames": []}
2024-12-22T09:44:47Z	INFO	Updating Gateway listeners	{"controller": "httproute", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "HTTPRoute", "HTTPRoute": {"name":"example-route","namespace":"default"}, "namespace": "default", "name": "example-route", "reconcileID": "e81b068f-2904-4401-a6bc-7fd7a2dec12d", "AttachedRoutes": 3}
2024-12-22T09:44:49Z	INFO	Updated Tunnel configuration	{"controller": "httproute", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "HTTPRoute", "HTTPRoute": {"name":"example-route","namespace":"default"}, "namespace": "default", "name": "example-route", "reconcileID": "e81b068f-2904-4401-a6bc-7fd7a2dec12d", "ingress": [{"hostname":"gapi.example.com","path":"/","service":"http://whoami.default:80"},{"hostname":"new.example.com","path":"/","service":"http://whoami.default:80"},{"service":"http_status:404"}]}
2024-12-22T09:44:54Z	INFO	Updated DNS records	{"controller": "httproute", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "HTTPRoute", "HTTPRoute": {"name":"example-route","namespace":"default"}, "namespace": "default", "name": "example-route", "reconcileID": "e81b068f-2904-4401-a6bc-7fd7a2dec12d", "hostnames": ["gapi.example.com","new.example.com"]}
2024-12-22T09:46:31Z	INFO	Updating Gateway listeners	{"controller": "httproute", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "HTTPRoute", "HTTPRoute": {"name":"example-route","namespace":"default"}, "namespace": "default", "name": "example-route", "reconcileID": "dd1eb6f4-641a-4e7c-bd67-81a0e4e75401", "AttachedRoutes": 1}
2024-12-22T09:46:33Z	INFO	Updated Tunnel configuration	{"controller": "httproute", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "HTTPRoute", "HTTPRoute": {"name":"example-route","namespace":"default"}, "namespace": "default", "name": "example-route", "reconcileID": "dd1eb6f4-641a-4e7c-bd67-81a0e4e75401", "ingress": [{"service":"http_status:404"}]}
2024-12-22T09:46:33Z	INFO	Updated DNS records	{"controller": "httproute", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "HTTPRoute", "HTTPRoute": {"name":"example-route","namespace":"default"}, "namespace": "default", "name": "example-route", "reconcileID": "dd1eb6f4-641a-4e7c-bd67-81a0e4e75401", "hostnames": []}
2024-12-22T09:47:00Z	INFO	Performing Finalizer Operations for Gateway before delete CR	{"controller": "gateway", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "Gateway", "Gateway": {"name":"gateway","namespace":"cloudflare-gateway"}, "namespace": "cloudflare-gateway", "name": "gateway", "reconcileID": "7b569f8c-2147-4fa7-986c-6056ec6bd2ae"}
2024-12-22T09:47:00Z	ERROR	Failed to update Gateway finalizer status	{"controller": "gateway", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "Gateway", "Gateway": {"name":"gateway","namespace":"cloudflare-gateway"}, "namespace": "cloudflare-gateway", "name": "gateway", "reconcileID": "7b569f8c-2147-4fa7-986c-6056ec6bd2ae", "error": "Operation cannot be fulfilled on gateways.gateway.networking.k8s.io \"gateway\": the object has been modified; please apply your changes to the latest version and try again"}
github.com/pl4nty/cloudflare-kubernetes-gateway/internal/controller.(*GatewayReconciler).Reconcile
	/home/runner/work/cloudflare-kubernetes-gateway/cloudflare-kubernetes-gateway/internal/controller/gateway_controller.go:151
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile
	/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.19.2/pkg/internal/controller/controller.go:116
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler
	/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.19.2/pkg/internal/controller/controller.go:303
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem
	/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.19.2/pkg/internal/controller/controller.go:263
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2
	/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.19.2/pkg/internal/controller/controller.go:224
2024-12-22T09:47:00Z	ERROR	Reconciler error	{"controller": "gateway", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "Gateway", "Gateway": {"name":"gateway","namespace":"cloudflare-gateway"}, "namespace": "cloudflare-gateway", "name": "gateway", "reconcileID": "7b569f8c-2147-4fa7-986c-6056ec6bd2ae", "error": "Operation cannot be fulfilled on gateways.gateway.networking.k8s.io \"gateway\": the object has been modified; please apply your changes to the latest version and try again"}
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler
	/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.19.2/pkg/internal/controller/controller.go:316
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem
	/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.19.2/pkg/internal/controller/controller.go:263
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2
	/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.19.2/pkg/internal/controller/controller.go:224
2024-12-22T09:47:00Z	INFO	Performing Finalizer Operations for Gateway before delete CR	{"controller": "gateway", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "Gateway", "Gateway": {"name":"gateway","namespace":"cloudflare-gateway"}, "namespace": "cloudflare-gateway", "name": "gateway", "reconcileID": "868a0409-51a8-484d-910a-c6e0cd206d34"}
2024-12-22T09:47:01Z	INFO	Deleting Tunnel	{"controller": "gateway", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "Gateway", "Gateway": {"name":"gateway","namespace":"cloudflare-gateway"}, "namespace": "cloudflare-gateway", "name": "gateway", "reconcileID": "868a0409-51a8-484d-910a-c6e0cd206d34"}
2024-12-22T09:47:06Z	DEBUG	events	Gateway gateway is being deleted from the namespace cloudflare-gateway	{"type": "Warning", "object": {"kind":"Gateway","namespace":"cloudflare-gateway","name":"gateway","uid":"d01a05c2-5464-427e-930c-a865dec0c27e","apiVersion":"gateway.networking.k8s.io/v1","resourceVersion":"200435"}, "reason": "Deleting"}
2024-12-22T09:47:06Z	INFO	Removing Finalizer for Gateway after successfully perform the operations	{"controller": "gateway", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "Gateway", "Gateway": {"name":"gateway","namespace":"cloudflare-gateway"}, "namespace": "cloudflare-gateway", "name": "gateway", "reconcileID": "868a0409-51a8-484d-910a-c6e0cd206d34"}
2024-12-22T09:47:06Z	INFO	gateway resource not found. Ignoring since object must be deleted	{"controller": "gateway", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "Gateway", "Gateway": {"name":"gateway","namespace":"cloudflare-gateway"}, "namespace": "cloudflare-gateway", "name": "gateway", "reconcileID": "bc6db5be-b905-4f86-b37e-6b6c03685260"}
2024-12-22T09:47:06Z	INFO	gateway resource not found. Ignoring since object must be deleted	{"controller": "gateway", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "Gateway", "Gateway": {"name":"gateway","namespace":"cloudflare-gateway"}, "namespace": "cloudflare-gateway", "name": "gateway", "reconcileID": "b0a01d66-ad94-4dec-a58a-f5b3b825fe76"}
2024-12-22T09:48:21Z	INFO	Adding Finalizer for Gateway	{"controller": "gateway", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "Gateway", "Gateway": {"name":"gateway","namespace":"cloudflare-gateway"}, "namespace": "cloudflare-gateway", "name": "gateway", "reconcileID": "58cea0d3-d989-480b-a9ee-48c37b831eaa"}
2024-12-22T09:48:21Z	INFO	Updating Gateway listeners	{"controller": "httproute", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "HTTPRoute", "HTTPRoute": {"name":"example-route","namespace":"default"}, "namespace": "default", "name": "example-route", "reconcileID": "c7efab43-bc7b-4e3b-a9f4-87e57e4649ab", "AttachedRoutes": 3}
2024-12-22T09:48:22Z	INFO	Creating tunnel	{"controller": "gateway", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "Gateway", "Gateway": {"name":"gateway","namespace":"cloudflare-gateway"}, "namespace": "cloudflare-gateway", "name": "gateway", "reconcileID": "58cea0d3-d989-480b-a9ee-48c37b831eaa"}
2024-12-22T09:48:22Z	INFO	Tunnel doesn't exist yet, probably waiting for the Gateway controller. Retrying in 1 minute	{"controller": "httproute", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "HTTPRoute", "HTTPRoute": {"name":"example-route","namespace":"default"}, "namespace": "default", "name": "example-route", "reconcileID": "c7efab43-bc7b-4e3b-a9f4-87e57e4649ab", "gateway": "gateway"}
2024-12-22T09:48:24Z	INFO	Creating a new Deployment	{"controller": "gateway", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "Gateway", "Gateway": {"name":"gateway","namespace":"cloudflare-gateway"}, "namespace": "cloudflare-gateway", "name": "gateway", "reconcileID": "58cea0d3-d989-480b-a9ee-48c37b831eaa", "Deployment.Namespace": "cloudflare-gateway", "Deployment.Name": "gateway"}
2024-12-22T09:49:22Z	INFO	Updating Gateway listeners	{"controller": "httproute", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "HTTPRoute", "HTTPRoute": {"name":"example-route","namespace":"default"}, "namespace": "default", "name": "example-route", "reconcileID": "5458a924-cada-4be2-9cc5-e65b887ebf71", "AttachedRoutes": 3}
2024-12-22T09:49:24Z	INFO	Updated Tunnel configuration	{"controller": "httproute", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "HTTPRoute", "HTTPRoute": {"name":"example-route","namespace":"default"}, "namespace": "default", "name": "example-route", "reconcileID": "5458a924-cada-4be2-9cc5-e65b887ebf71", "ingress": [{"hostname":"ex02.example.com","path":"/","service":"http://whoami.default:80"},{"hostname":"ex03.example.com","path":"/","service":"http://whoami.default:80"},{"service":"http_status:404"}]}
2024-12-22T09:49:30Z	INFO	Updated DNS records	{"controller": "httproute", "controllerGroup": "gateway.networking.k8s.io", "controllerKind": "HTTPRoute", "HTTPRoute": {"name":"example-route","namespace":"default"}, "namespace": "default", "name": "example-route", "reconcileID": "5458a924-cada-4be2-9cc5-e65b887ebf71", "hostnames": ["ex02.example.com","ex03.example.com"]}


RuntimeError: unwrapped_count > 0 INTERNAL ASSERT FAILED at "../aten/src/ATen/functorch/TensorWrapper.cpp":181, please report a bug to PyTorch. Should have at least one dead wrapper

functorch fails when the function requires manipulating a scalar variable
 ```
       def kkt(p1_tilde, p2_tilde, lambda_1_tilde, lambda_2_tilde, q_pos1, q_theta1):
        rot_mat = torch.Tensor([[torch.cos(q_theta), -torch.sin(q_theta)],
                                [torch.sin(q_theta), torch.cos(q_theta)]])

        rot_mat_inv = torch.linalg.inv(rot_mat)

        box1_A = A_1_canonical @ rot_mat_inv

        box1_b = b_1_canonical + A_1_canonical @ rot_mat_inv @ q_pos1

        D = 2

        K = torch.zeros(2*D + num_1_points + num_2_points)

        # lagrangian gradient wrt p1

        K[:D] = 2* (p1_tilde - p2_tilde) + box1_A.T @ lambda_1_tilde

        K[D:2*D] = -2* (p1_tilde - p2_tilde) + A_2_canonical.T @ lambda_2_tilde

        K[2*D:2*D+num_1_points] = lambda_1_tilde * (box1_A @ p1_tilde - box1_b)

        K[2*D+num_1_points:2*D+num_1_points+num_2_points] = lambda_2_tilde * (A_2_canonical @ p2_tilde - b_2_canonical)
        return K

The above error in the title comes from having the scalar variable theta

`        J_q_k_out = jacrev(lambda q_pos1, q_theta1: kkt(p1_tilde, p2_tilde, lambda_1_tilde, lambda_2_tilde, q_pos1, q_theta1), argnums=(0, 1))(q_pos, q_theta)
`

I got that error too in some other use case. Strange thing is that it was working fine, and then boom.

This is unexpected. @maulberto3 do you have a script that demonstrates the problem?
@richardrl do you have sample inputs for us to try? Otherwise we can try random inputs until we hit the problem.


Allow use of remote source if URI is specified as database.

Enable pushing to / pulling from a remote postgres server when a full connection url is passed as the local database parameter instead of just a database name.
This was required in order to perform automated deploys from a Dockerized jenkins instance with a linked postgres Docker container where the containers are running on the same docker host, but the database connection must occur via the linked container's virtual IP and the database is not accessible on the jenkins server via localhost.

:+1:

:+1:

this looks useful, we may need to update the docs a bit to include it

@uhoh-itsmaciek Thanks for the catch, it is fixed now and I added tests for the db string parser.
@dickeyxxx I updated the code documentation in pg.rb to reflect the new behavior.

:+1:


remove useGnosis flag

remove useGnosis choice
consolidate localStorage values for accountType, acccountWallet

@pgebheim 👀 when you have a chance


Decouple Free Hosting and Docker easily

It is probably a common case for someone to want one, not both. For that reason, it should be easy to remove and be reflected in the README #4

This is decided not-needed.


KAFKA-13494: WindowKeyQuery and WindowRangeQuery

Hey @patrickstuedi , thanks for the last batch of updates. Aside from the build failure, I think these are my last comments:

After scrolling around the PR a few times to try and clarify whether we're handling all the right cases, I'm more convinced now that we really should consolidate all the query handling logic into StoreQueryUtils. I gather from your comment that you feel the same way. Let's just go for it in this PR. The thing you saw in the other PR was just an oversight.
Now that I'm really confronted with the reality of the code, I think it's going to be pretty confusing for people that WindowRangeQuery only works with WindowStore when you do withWindowStartRange(from, to) and it only works on SessionStore when you do withKey(key). I still think it's ok to do that, but I think we ought to add more description to the failure message than just "this store doesn't know how to handle this query". Can you replace the else cases there with QueryResult.forFailure(FailureReason.UNKNOWN_QUERY_TYPE, "...") and a message that more accurately explains what the problem is? It would also be nice to have negative test cases for these to verify the correct messages makes it to the user.

Once those points are addressed, we should be ready to merge!

The test failures were unrelated:
    Build / JDK 17 and Scala 2.13 / kafka.controller.ControllerIntegrationTest.testTopicIdUpgradeAfterReassigningPartitions()
    Build / JDK 11 and Scala 2.13 / kafka.admin.LeaderElectionCommandTest.[1] Type=Raft, Name=testTopicPartition, Security=PLAINTEXT
    Build / JDK 11 and Scala 2.13 / kafka.admin.LeaderElectionCommandTest.[1] Type=Raft, Name=testTopicPartition, Security=PLAINTEXT


ilo settings updated not being commited into state

6.6.0-13 +
Before: I had this config:
  management_processor {
    manage_mp = true
    mp_settings {

      local_accounts {
        user_name                    = var.iloadmin_username
        display_name                 = var.iloadmin_username
        password                     = var.iloadmin_password
        user_config_priv             = true
        remote_console_priv          = true
        virtual_media_priv           = true
        virtual_power_and_reset_priv = true
        ilo_config_priv              = true
      }

Then I updated it to this config:
  management_processor {
    manage_mp = true
    mp_settings {

      local_accounts {
        user_name                    = var.iloadmin_username
        display_name                 = var.iloadmin_username
        password                     = var.iloadmin_password
        user_config_priv             = true
        remote_console_priv          = true
        virtual_media_priv           = true
        virtual_power_and_reset_priv = true
        ilo_config_priv              = true
        login_priv                   = true
        host_bios_config_priv        = true
        host_nic_config_priv         = true
        host_storage_config_priv     = true
      }

It made the changes on the server profile template, but every TF run, it wants to make those changes again (idempotency issue),
possibly from not committing it properly to state?

Hi @rismoney ,
Will check this and get back to you.

This is fixed in new release. closing it here


Update ir_array.cc

Compilation warning fixed

I'm just curious here, how will this fix the compilation warning? @PariksheetPinjari909

@sanjoy int is creating unnecessary warnings at the time of compilation. So thought of removing it.


Calculator UI

worked on ui of the calculator

[ ] dynamic buttons
[ ] components
[ ] nested components

happy coding

hi @cynthiainga thank for reviewing my code
I definitely fix those required changes
but I want to draw your attention about this mit license link https://github.com/PowerLevel/mathmatica/blob/dev/LICENSE
✅ this link for future as I will merge this in dev
✅  but for now this link is this https://github.com/PowerLevel/mathmatica/blob/calculatorUi/LICENSE
please consider these things


"Please wait..." indefinitely if FB is blocked

If the user is using a tool to block the FB SDK (AdBlock/Ghostery/Facebook Container/Disconnect/Brave Shields/Etc.), the button just says "Please wait..." indefinitely. It would be nice to offer a slot for detecting this.

Thanks, I'll look into this. A PR is also welcome.

I believe this feature is now fulfilled with the release of 1.4.0 (see docs). This release also has introduces an important bugfix, which fixes SDK loading on subsequent component instance creations (this was especially evident in HMR).


Add caller offset to fix caller's problem #63.

After read the zap, I think add caller offset to entry is a good idea to solve #63.
Then we can use a hook like this

import (
	"path/filepath"
	"runtime"
	"strconv"
	"strings"

	"github.com/bobcyw/logrus"
)

type CallerHook struct {
}

func (hook *CallerHook) Fire(entry *logrus.Entry) error {
	entry.Data["caller"] = hook.caller(entry)
	return nil
}

func (hook *CallerHook) Levels() []logrus.Level {
	return []logrus.Level{
		logrus.PanicLevel,
		logrus.FatalLevel,
		logrus.ErrorLevel,
		logrus.WarnLevel,
		logrus.InfoLevel,
		logrus.DebugLevel,
	}
}

func (hook *CallerHook) caller(entry *logrus.Entry) string {
	if _, file, line, ok := runtime.Caller(entry.CallerOffset); ok {
		return strings.Join([]string{filepath.Base(file), strconv.Itoa(line)}, ":")
	}
	// not sure what the convention should be here
	return ""
}

I like this idea a lot more than adding caller information to every entry, which is going to be too much data for those not using this feature. This is the only way to get the correct level in the hook? It cannot be hard-coded?

I think there is some other trick to solve this problem. Such like keep all log function with same stack depth. Now when we invoke Println, the calling path is Println->Infoln->Info->log(stack depth is 3), but when we invoke Infoln, it's caller path is Infoln->Info->log(stack depth is 2). It always change. If we could keep their stack depth a fix number, we can solve this problem without CallerOffset.

If you update this PR to just go directly to Log in all functions, perhaps we don't need to know anything about callers to implement a hook that adds the callee?

It's right. I'll update it this weekend.

I have complete it. But I find another problem some framework insert their own function object between the real caller and entry.log. Look at below stack info:

This is a normal scenario.

This is a special scenario. I found such like socket-io will insert their own layer.
So the caller hook should be well defined for special scenario.

I think I find out the reason. If we use Logger instance, the call stack is
Logger.Println -> Entry.Println -> Entry.log. If we use Entry instance which is created by Logger.WithField, the call stack is Entry.Println -> Entry.log. So I update my PR to solve this problem. Use Logger.Println -> Entry.log instead of Logger.Println -> Entry.Println -> Entry.log.

I write a hook like this. Magic number 5 work well both with Logger and Entry.
func NewNormalCaller() logrus.Hook {
	return &callerHook{}
}

type callerHook struct {
}

func (hook *callerHook) Fire(entry *logrus.Entry) error {
	entry.Data["caller"] = hook.caller(entry)
	return nil
}

func (hook *callerHook) Levels() []logrus.Level {
	return []logrus.Level{
		logrus.PanicLevel,
		logrus.FatalLevel,
		logrus.ErrorLevel,
		logrus.WarnLevel,
		logrus.InfoLevel,
		logrus.DebugLevel,
	}
}

func (hook *callerHook) caller(entry *logrus.Entry) string {
	if _, file, line, ok := runtime.Caller(5); ok {
		return strings.Join([]string{filepath.Base(file), strconv.Itoa(line)}, ":")
	} else {
		return ""
	}
}

Hi, @sirupsen , I have rebased this commit on the newest master branch. And solved the unstable caller problem. The solution is modifying not only entry's function but also public log's function.


Provide API for adding artifact signatures

Expected Behavior
There should be a way to add "signature" files to the published artifacts like .asc files are added in the existing signing plugin.
Rough requirements:

API users should be able to add an extra file to an existing publication. Currently I use internal APIs for that: https://github.com/sigstore/sigstore-java/blob/68498f295f5bc29d1da92c65d305de048e90ee64/sigstore-gradle/sigstore-gradle-sign-base-plugin/src/main/kotlin/dev/sigstore/sign/SigstoreSignExtension.kt#L87-L94
API users should be able to exclude files from signing (e.g. avoid signing .asc files), see https://github.com/sigstore/sigstore-java/blob/68498f295f5bc29d1da92c65d305de048e90ee64/sigstore-gradle/sigstore-gradle-sign-base-plugin/src/main/kotlin/dev/sigstore/sign/SigstoreSignExtension.kt#L84C68-L85C38
API uses should be able to avoid failures when a task producing the artifact is skipped. In other words, imagine a user skips "jar" task. The derived signature should not fail in that case so users should be able to execute ./gradlew build -x jar. Currently, I achieve it with https://github.com/sigstore/sigstore-java/blob/68498f295f5bc29d1da92c65d305de048e90ee64/sigstore-gradle/sigstore-gradle-sign-base-plugin/src/main/kotlin/dev/sigstore/sign/DefaultDerivedArtifactFile.kt#L45-L46

Current Behavior (optional)
There's no public API for adding signatures. sigstore-gradle-sign-plugin has to resort to internal APIs.
Context
Sigstore, see

https://github.com/gradle/gradle/issues/21715
https://github.com/sigstore/sigstore-java/tree/main/sigstore-gradle

Thank you for your interest in Gradle!
This feature request is in the backlog of the relevant team, but this area of Gradle is currently not in focus. It might take a while before it gets implemented.


cleanup(pubsub)!: make Subscriber more consistent

BREAKING CHANGE

Change the pubsub::Subscriber API. A Subscriber is now bound to a specific
Cloud Pub/Sub subscription, with a fixed set of SuscriptionOptions, just
like a pubsub::Publisher is bound to a specific topic and a set of
PublisherOptions. In addition to making publishers and subscribers more
symmetrical, this makes the library more consistent with the Cloud Pub/Sub
library for other languages. Finally, note that we are planning to rename
SubscriptionOptions to SubscriberOptions in a future PR too.

This change is

/cc: @kamalaboulhosn


Installing requirements.txt

Hello!
I have tried installing requirements.txt but it gives an error because of the presence of local files (for instance, aiohttp @ file:///tmp/build/80754af9/aiohttp_1614360990960/work). Can you please let me know how to work around it? Thank you in advance.

Hi,
Thanks for reaching out!
I have updated the requirements.txt file. Hope that helps.
Sagnik


Chapter 19 / selecting-options / Select.android.js

These comments on lines 8 and 9 are incorrect - there's only one View component. It looks like it was copy-and-pasted from the iOS component:

// It actually has two outer views that are
// needed to get the styling right.

These two lines should be deleted from the code.

Will will fix this. Thanks for the report.


Include note to leave ManagerID blank for CEOs

🚨 Looks like you arrived from the internal review site
🚨 Do not enter Microsoft confidential information here
Current guidance says that all required fields, such as ManagerID, need to have non-blank values. The CEO will not have a manager.
We should include a comment in the table for "ManagerID" that for CEOs this can be left blank.  The validation threshold for this field is 95% instead of 100% to account for these scenarios.

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

ID: 5ee20f56-ff3e-9d5d-29bd-f6a86e537a1c
Version Independent ID: 5ee20f56-ff3e-9d5d-29bd-f6a86e537a1c
Content: Prepare organizational data in Viva Insights
Content Source: Viva/insights/advanced/admin/prepare-org-data.md
Service: viva
Sub-service: viva-insights
GitHub Login: @zachminers
Microsoft Alias: v-zachminers

Thank you for the feedback. The doc has been updated to incorporate this feedback, so we can close this ticket now.
https://learn.microsoft.com/en-us/viva/insights/advanced/admin/prepare-org-data#attribute-reference


Add a configurable to display x-ops-api-info only if enabled.

Currently all responses from Chef Infra Server include:
TRACE: x-ops-api-info: flavor=cs;version=12.0.0;oc_erchef=14.1.0

Set a configurable (like) enable-api-info in omnibus. When set to true - it should display the able information.
https://github.com/chef/chef-server/blob/master/src/oc_erchef/apps/oc_chef_wm/src/oc_chef_wm_base.erl#L954 and https://github.com/chef/chef-server/blob/master/src/oc_erchef/apps/oc_chef_wm/src/oc_chef_wm_base.erl#L941 inject the header into every response.
It appears that there might have been the intent to deprecate this. But if it cannot be deprecated it should be under a tunable.
Change to add a configurable will potentially break chef-zero. Document the reason to bypass this in HOW_THINGS_WORK document.
Steps for Reproduction:
knife verbose commands
e.g:
knife cookbook upload -VV
Acceptance Criteria:

Chef Infra Server response will not show x-ops-api-info either by the virtue of it being removed or made optional by a configurable.
Add pedant tests
Update documentation under security tuning section https://docs.chef.io/server/server_tuning/
Update dev documentation as necessary.

Aha! Link: https://chef.aha.io/features/SH-3024

To enable this header set the variable 'opscode_erchef['include_version_in_status']' to true in chef-server.rb and reconfigure.
To check the headers, edit the pedent files on the dev vm to print the response.headers.

closing with the PR - https://github.com/chef/chef-server/pull/2815


dont you think it works more like a service locator?

first of all I have to say, great job. making a DI container is hard and time-consuming.
but i have some issues with your approach. we use DI to be able to write unit tests. ti be able to mock dependencies and inject especially from the constructor.
Your approach especially where you resolve dependencies with their type and make classes bind themselves can cause the system to work like a service locator. service locator is an anti-pattern as it hides dependencies.
maybe I'm making mistakes. can you explain your approach?

Hi, thanks for taking the time and looking into this project!
To be completely honest I don't know much about all these different names they make up and whatnot, but after doing some research it seems people call something a ServiceLocator instead of a DependencyInjection when the dependent class depends on the injector assembly/library. So, technically, this is service locator:
class User {
    [Inject]
    Player _player;
}

Because we're depending on the injector library by using it's InjectAttribute class. And, a true Dependency Injection by definition is:
class User {
    Player _player;
    User(Player player) {
        _player = player;
    }
}

because it then doesn't depend on the injector library.
I think it doesn't make much sense to call the first example a Service Locator when in truth it's literally injecting some dependencies. And a lot of people apparently agree with that, and so there are lots of "Dependency Injection" systems that use syntaxes like the first example. Which makes me wonder if we need to classify them as different systems to begin with. I could be wrong; if so please do let me know.
In any case...

Your approach especially where you resolve dependencies with their type and make classes bind themselves

They don't need to bind themselves. You can bind any class from anywhere, as long as you have the object and a context:
context.Bind(obj);

which brings us to the answer to the following,

we use DI to be able to write unit tests. ti be able to mock dependencies and inject especially from the constructor.

Except "specially from the constructor", Binject can handle the rest. Let's say you have a IInAppPurchaseController and a mock called MockInAppPurchaseController, you can write a unit-test with the mock like so:
var context = new GameObject( "Context" ); // or retrieve the context from elsewhere
context.Bind( new MockInAppPurchaseController() );
// the rest of the test...

Not much different than other dependency injection systems.

service locator is an anti-pattern as it hides dependencies.

If my understanding of both of them are correct, neither seem like an anti-pattern. Both have their pros and cons. Dependency Injection will be hard to configure and customize, while Service Locator will make your classes dependent on the injector library and, as you said, a little bit harder to find all dependencies in a glance for a huge script.


3.x: javadoc is incorrect for ServerRequest.spanContext()

In 3.x the javadoc for ServerRequest.spanContext() says:
    /**
     * Returns a span context related to the current request.
     *

     * {@code SpanContext} is a tracing component from opentracing.io standard.
     *
     * @return the related span context, empty if not enabled
     */
    Optional<SpanContext> spanContext();

But in 3.x SpanContext is not io.opentracing.SpanContext, it is io.helidon.tracing.SpanContext
And the Helidon 3.x upgrade guide does not mention this incompatibility and what to do about it.

Related to #6094