Create prototype gRPC getCompactionJob() service for external compactions

This is a prototype that creates a new gRPC service for getCompactionJob(). Instead of using Thrift, gRPC is now used (which is based on http2 and netty) and uses protocol buffers version 3 as the protocol. gRPC supports other formats but using protobuf was the simplest thing to get working as all the examples use protobof and protobuf is pretty similar to Thrift. I am marking this as a draft as it probably wouldn't get merged in its current state without some re-working.
The goal of this is to make it possible to do async RPC processing on the server side to support #4664. With gRPC we will be able to easily offload the RPC calls for getting a next compaction job from the IO threadpool once the queue supports CompletableFuture as described in this comment . The gRPC api makes it easy to respond async to requests so this will allow compactors to request new jobs and wait (long polling) and the server can offload the future and complete it later when a job comes in without blocking and using resources. We also have the option of making the call async on the client side as well.
A few things to note:

I updated the Maven build so that it generates the source just like our thrift set up. I pretty much just tried to mirror everything identically to how thrift works. The defintion for the gRPC service and objects is located in the compaction-coordinator.proto file. The sources have already been generated but with updates a new version can be generated using mvn generate-sources -Pprotobuf In order to get the RPC working I had to re-create all the same objects that we were using in Thrift but now with protobuf. I just combined them all into one namespace for now to keep it simple.
To isolate the changes with the RPC replacement, this PR does a conversion to/from the equivalent Thrift and Protobuf objects. This of course is not very efficient and if we decide to keep this then we would want to remove the extra Thrift conversion steps. There's a utility class just for handling the conversion and may not be needed in the future, there's more info on the comments in that class, including about the differences between protobuf and Thrift and how that is handled (such as proto3 not supporting nulls)
For testing, I didn't bother adding unit tests for the ThriftProtobufUtil conversion utility class because as I said we may not even keep it but I would add tests if it sticks around. I did't run a full b build but I ran the ExternalCompaction_1_IT against this and that test is passing.
There are some short cuts for the prototype that we would need to fix if we keep this. I just hard coded the port for now to 8980, which was just what the example used on their site so it was easy to stand up but needs to be configurable eventually. It also is just using plaintext and a new client is opened/closed for each RPC call vs having a pool.

I pushed up changes that take advantage of #4726 to get a new job async that returns a CompletableFuture. The result is not sent back to the client (coordinator) util the job is completed. To make it simple I just copied the relevant code out of the Thrift method because the current method can't return a CompletableFuture as it's an RPC service. We need to decide if we want to keep the Thrift code around temporarily so either RPC can be used or to just drop it. I also went ahead and dropped the loop that tries to get another job if the reservation fails to simplify things. I figure we just return the empty job and it would try again and that is fine.
There are a couple things we could probably improve here. First, I am using future.thenApply() and future.thenAccept() and it woud probably be better to use a thread pool and the Async versions of those methods. Second, there's currently no timeout so we need to look at having a timeout so things are not waiting forever.

I was experimenting with this locally and its really neat to see it in action.
Made the following changes to dae30cf746c135b061e4de87f21542e98c001dda.  The logging changes were to get a bit more information about timing.  The test changes were made to cause a surge of bulk import files after the system was sitting idle for a bit.
diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/CompactionCoordinator.java b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/CompactionCoordinator.java
index ef07b78d8a..838fab35a7 100644
--- a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/CompactionCoordinator.java
+++ b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/CompactionCoordinator.java
@@ -462,7 +462,7 @@ public class CompactionCoordinator
     TIME_COMPACTOR_LAST_CHECKED.put(groupId, System.currentTimeMillis());

     return jobQueues.getAsync(groupId).thenApply(metaJob -> {
-      LOG.trace("Next metaJob is ready {}", metaJob.getJob());
+      LOG.debug("Next metaJob is ready {}", metaJob.getJob());
       Optional<CompactionConfig> compactionConfig = getCompactionConfig(metaJob);

       // this method may reread the metadata, do not use the metadata in metaJob for anything after
@@ -471,6 +471,7 @@ public class CompactionCoordinator

       var kind = metaJob.getJob().getKind();

+      LOG.debug("Reserving compaction job {}", externalCompactionId);
       // Only reserve user compactions when the config is present. When compactions are canceled the
       // config is deleted.
       var cid = ExternalCompactionId.from(externalCompactionId);
diff --git a/test/src/main/java/org/apache/accumulo/test/ComprehensiveBaseIT.java b/test/src/main/java/org/apache/accumulo/test/ComprehensiveBaseIT.java
index 1dc1c2c0f9..a3d5a61856 100644
--- a/test/src/main/java/org/apache/accumulo/test/ComprehensiveBaseIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/ComprehensiveBaseIT.java
@@ -96,6 +96,7 @@ import org.apache.accumulo.core.security.ColumnVisibility;
 import org.apache.accumulo.core.security.NamespacePermission;
 import org.apache.accumulo.core.security.SystemPermission;
 import org.apache.accumulo.core.security.TablePermission;
+import org.apache.accumulo.core.util.UtilWaitThread;
 import org.apache.accumulo.harness.SharedMiniClusterBase;
 import org.apache.accumulo.test.util.Wait;
 import org.apache.hadoop.fs.FileUtil;
@@ -126,12 +127,24 @@ public abstract class ComprehensiveBaseIT extends SharedMiniClusterBase {
     try (AccumuloClient client = Accumulo.newClient().from(getClientProps()).build()) {
       client.tableOperations().create(table);

-      bulkImport(client, table, List.of(generateKeys(0, 100), generateKeys(100, 200)));
+      // sleep for a bit to let compactors idle
+      UtilWaitThread.sleep(60000);
+
+      // add 4 files to a single tablet, should cause tablet to need compaction
+      bulkImport(client, table, List.of(generateKeys(0, 50), generateKeys(50, 100),
+              generateKeys(100, 150), generateKeys(150, 200)));

       verifyData(client, table, AUTHORIZATIONS, generateKeys(0, 200));

+      UtilWaitThread.sleep(60000);
+
+      // add 4 more files to tablet
       bulkImport(client, table,
-          List.of(generateKeys(200, 300), generateKeys(300, 400), generateKeys(400, 500)));
+          List.of(generateKeys(200, 300), generateKeys(300, 400),
+                  generateKeys(400, 450), generateKeys(450, 500)));
+
+      UtilWaitThread.sleep(60000);
+

       verifyData(client, table, AUTHORIZATIONS, generateKeys(0, 500));
     }

Ran the modified test ad then looked in the manager log and saw the following.
2024-07-10T19:55:04,450 120 [manager.EventCoordinator] DEBUG: Bulk load completed on tablet 1<<
2024-07-10T19:55:04,455 63 [compaction.CompactionJobGenerator] DEBUG: Planning for 1<< [SYSTEM, USER]<PHONE_NUMBER>
2024-07-10T19:55:04,456 63 [manager.TabletGroupWatcher] DEBUG: 1<< may need compacting adding 1 jobs
2024-07-10T19:55:04,456 63 [coordinator.CompactionCoordinator] DEBUG: Reserving compaction job ECID-db4c21aa-b615-4109-b3dd-3fc544f8c391
2024-07-10T19:55:04,459 63 [tablet.files] DEBUG: Compacting 1<< id:ECID-db4c21aa-b615-4109-b3dd-3fc544f8c391 group:default compactor:slim:9133 priority:-32759 size:35 KB kind:SYSTEM files:[I000005p.rf, I000005o.rf, I000005n.rf, I000005m.rf]
2024-07-10T19:55:04,459 63 [coordinator.CompactionCoordinator] INFO : Found job ECID-db4c21aa-b615-4109-b3dd-3fc544f8c391
2024-07-10T19:55:04,460 63 [rpc.ThriftProtobufUtil] DEBUG: PExternalCompactionJob: externalCompactionId: "ECID-db4c21aa-b615-4109-b3dd-3fc544f8c391"
2024-07-10T19:55:04,508 87 [fate.Fate] INFO : Seeding FATE:USER:914dd323-a684-38af-aaaf-7cb202a9e672 Commit compaction ECID-db4c21aa-b615-4109-b3dd-3fc544f8c391

Summarizing the above log messages.

A time +0ms the bulk import completed adding files to the tablet and signaled the TGW (tablet group watcher).
At time +6ms the TGW adds a job to the compaction queue
At time +6ms an async rpc job request starts processing the job
At time +9ms the async rpc job request finishes reserving the  job
At time +10ms the last observed lob message for the async rpc job is seen, at this point its on its about to write the return value of the rpc
At time +58ms the compactor has completed the compaction and has made another RPC to the coordinator to start the fate operation that will commit the compaction

So this is really neat, the async request starts working immediately after the job is queued and within 3ms to 4ms has reserved the job and returned it to the compactor.
Saw something else that was interesting besides timing in the logs. The numbers after the times in the logs are thread ids.  So thread id 63 is the TGW thread id.  Can see that currently the TGW thread ends up processing the async RPC job reservation and response.  Once that is changed to use another thread we should see a different thread id in the logs for those steps.

For what is left to be done, what do you think can be done in the initial PR and what could be deferred to follow on PRs?

I will take a look more today at the state of this and report what I think. The tricky part is definitely trying to figure out how big of a scope to make this task vs follow on tasks. We can likely make a lot of things follow on tasks (like SSL and kerberos support) because this is for the elasticity and 4.0 branch so it's not going to be released anytime soon so it's not like it has to be perfect. But if we defer things to follow on issues we should certainly document them so they are not forgotten.
It would be nice to at least clean up the protobuf definitions a bit (move things into different namespaces like thrift) and it would also be nice if we could drop the thrift <-> gRPC conversion entirely but I need to dive into the code and see how big of a change that is. I think we would want to use gRPC for all the RPC calls for the compaction service so I can look today to see how much effort that is and if it makes sense to do it now or split it up.

I have migrated most of Compaction Coordinator Service as gRPC at this point. I also updated the gRPC client to be shared across the different calls as the channel is thread safe and can be re-used, but we are not "pooling" different channels like Thrift. I still need to look more into how their client code works and if we need to pool or not. Some of the rpc calls are commented out because the Manager actually uses them.
I also moved the gRPC objects into their own packages to model after our thrift model. We need to eventually move that into its own jar. This has been talked about a bit already, and that is looking at maybe having a common API for the RPC layer. That is something that I need to look more into and if we were going to do that how far we take it and the scope.  Whatever we decide we         should plan before we go too far. At the very least I think it would be nice to re-factor some things and have some common objects so we stop leaking rpc objects. For example, I think we should have a common object for tracing and credentials. Right now we are passing around TInfo and TCredentials (which I also created PInfo and PCredentials for protobuf) and I think stuff like that should be converted to common objects so we don't leak them. A good example is TCredentials leaking into ClientContext. It would be nice if we could have a more generic object and conversion.
Other than that, I haven't had time to finish up the rest of the list yet, but there are still several things to do and I'm still looking at how to split things up and what to make follow on issues. This PR is getting pretty big by now so it would probably be best to move as much as possible into follow on issues to make things easier to review.

Here is an update to the current state of things. This PR has gotten quite large now so I think it's about time to wrap it up and look at follow on tasks for more work to be done. Below is where things are at for completed, still to be done in this PR, and future work.
Finished:

Added a new gRPC module that contains all the necessary protobuf definitions for Compaction Coordinator Service (including common objects like KeyExtent. Updated the maven build to generate the protobuf objects and CompactionCoordinator service and to be proper dependencies of other modules.
Created a utiity class to convert between Thrift and Protobuf equivalent objects. This should hopefully be temporary until everything is converted.
Created another utility class to share a ManagedChannel for the gRPC connection across clients. This needs to be investigated more to see if pooling will be required (more listed under future work).
Completely replaced the Thrift version of the CompactionCoordinator service with a gRPC version. The Compactor and Monitor use this version now and create gRPC clients for the Compaction coordinator service. The thrift interface has been removed from the CompactionCoordinator. The Manager starts up the gRPC service and stops it on shutdown.
Replaced the thrift version of the compaction related thrift objects with protobuf versions, where possible, throughout the CompactionCoordinator code and related code.
getCompactionJob() RPC uses long polling now and is processed async by using the CompleteableFuture from the job queue. This unblocks the main io threads but there is still work to do with adding more thread pools for processing.
Updated ClientContext to contain a new credentials holder to hold both the grpc and thrift versions of credentials.
Created a property for defining the gRPC port for the Manager. The default port is used for testing for now.
Fixed some tests and ExternalCompaction_1_IT is now passing. (more work is needed for tests still)

Todo in this PR:

Make sure the tests all pass and the build is in a good state. Some tests like ExternalCompaction_2_IT are hanging and require more work to be done like a timeout feature (listed as follow on work). So we may need to do something as a quick solution for those tests for now or just disable them.
Address any concerns or issues found during PR reviews.

Follow on Work:

Update ServiceDescriptor to support gRPC and add the gRPC port for the manager to Zookeeper.
Add support for using a random port with gRPC when setting the port to 0.
Update MiniAccumulo cluster and tests to use a random port. This will require the random port feature to be implemented to find an open port and also ServiceDescriptor to work correcty with finding the gRPC service so clients can use it.
Add a thread pool for async rpc request response processing. We can use the async methods on CompletableFuture to take advantage of the thread pool.
Add accumulo config for thread pools for processing grpc request
Add the needed grpc jars and related jars (protobuf, etc) to tarball
Explore supporting kerberos and ssl w/ grpc
Look into pooling channels/connections for gRPC. ManagedChannel can be shared by multiple threads but it's still a bit unclear how they manage connections and if we need to implement our own custom pooling like we did for Thrift.
Investigate any other properties that need to be customized for the gRPC server and clients. It's netty based and there are a lot of different config options so we should look into what we can set (and their defaults) vs exposing as properties.
Convert more RPC layers, such as the Compactor service, to gRPC. When all of the compaction related items are changed over we can delete the Thrift related generated code (objects and compaction services) entirely.
Implement a timeout for the Compaction queue job CompletableFutures. This would be good to have a reasonable default in case the connections from Compactors associated with the future go away.
Investigate error and exception handling with gRPC. We need to make sure when there are exceptions that the client and server behave correctly and don't kill the connection unless it needs to and it does there is reconnection.
Finish fixing the other External compaction tests. A timeout is necessary to fix ExternalCompaction_2_IT test as tests hang for now. The issue is when the test kill the original compactors and starts up a do nothing compator. The issue is because of the long polling change, there is a race condition where the job is assigned to the future from the original compactor. Then when the compactor dies, the next one won't get a job assigned as the future never times out from the dead compactor even though the job was cleaned up by the dead compaction detector.
Explore how to implement tracing with gRPC. With Thrift we use TraceUtil and pass the TraceInfo object everywhere. There is code that was written to wrap all of these calls with a proxy. The proxy will look for the first argument and expect it to be trace info can can use that for debugging and metrics. With gRPC, there are no longer multiple arguments for RPC calls. Every call has exactly 1 object and that object contains all the fields necessary for the request so we would need to create a new version of this feature that would inspect the object being passed and look for the trace info.
Explore a common API for the RPC layer or at least minimizing what code touches the RPC objects. This needs to be talked about much more and a scope needs to be defined. It would be nice to minimiize the leakage of RPC objects but it's also tricky because we don't want to have to copy objects constantly. For example, we already convert between TKeyExent (and now PKeyExtent) and KeyExtent but I would not want to have to add a second conversion such as PKeyExtent<->Generic RPC KeyExtent<->KeyExtent. The RPC features and behavior are also very different between different RPC implementations such as gRPC being entirely async natively. Thrift also supports nulls where as Protobuf doesn't support null values.

Here is an update to the current state of things.
...
Follow on Work:

Add support for using a random port with gRPC when setting the port to 0.
Explore supporting kerberos and ssl w/ grpc
Explore how to implement tracing with gRPC.
Investigate error and exception handling with gRPC.
Investigate any other properties that need to be customized for the gRPC server and clients.

I feel like we put the cart before the horse here. These items tagged for follow-on work are actually foundational things that, IMO, should be designed and tested first. I think the work that you have done here is useful to show that grpc can be used, but I'm not convinced that this is the starting point for the introduction of grpc into the codebase.

I feel like we put the cart before the horse here. These items tagged for follow-on work are actually foundational things that, IMO, should be designed and tested first. I think the work that you have done here is useful to show that grpc can be used, but I'm not convinced that this is the starting point for the introduction of grpc into the codebase.

So to clarify, follow on work are of course foundational things and need to be done before anything could be released. It's not that they are not important, it's that this PR is already 100 files changed an enormous and I don't think we should try and jam everything into one PR or you end up trying to review too much.
@keith-turner talked about creating another branch like no-chop merge but we didn't really think it would be a huge deal to just merge things into elasticity as long as the build works. However it would certainly be possible to just create another branch like we did with no-chop merge and have multiple PRs against that first before merging into back into elasticity.

So to clarify, follow on work are of course foundational things and need to be done before anything could be released.

IMO, I think the foundation work should be done before this is merged, not released. The implementation of the foundation work may change the approach taken in this PR.

It's not that they are not important, it's that this PR is already 100 files changed and enormous and I don't think we should try and jam everything into one PR or you end up trying to review too much.
@keith-turner and I talked about creating another branch like no-chop merge but we didn't really think it would be a huge deal to just merge things into elasticity as long as the build works. However it would certainly be possible to just create another branch like we did with no-chop merge and have multiple PRs against that first before merging into back into elasticity.

I have no issue with a long-lived feature branch, much like elasticity, for the grpc work. I don't these changes should be merged into elasticity at this time.

If no one has any objecttionsi can create a feature branch )i'll probably just call it grpc unless someone has a better name) so this can be merged sooner rather than later and then we can continue on with the follow on work to get it into a state before it goes into elasticity. It will also allow others to submit PRs as well against it.

If no one has any objections i can create a feature branch (i'll probably just call it grpc unless someone has a better name)

I think a feature branch would be good, can move faster.  naming it grpc SGTM

I created a new grpc feature branch that is based off elasticity and pushed that up.

I started looking into the authentication support a couple weeks ago and resumed looking into it today to see what was supported. mutual TLS is supported as it's Java and Netty supports that however Kerberos is not supported out of the box. The only authentication that is supported out of the box is SSL/TLS, OAUTH, and a custom Google mechanism called ALTS. See https://grpc.io/docs/guides/auth/
I did some digging to see if anyone has implemented anything we could use and found the following:

A proposal has been open since 2018 but nothing has been done so far.
One of the original developers talks about HTTP/2 being a little akward for Kerberos and mentions that we would need to pair it with TLS to be secure, which I think would be fine.
gRPC is based on Netty and HTTP/2 so likely we would have to write a custom authentication mechanism to handle Kerberos authentication and the client would have to pass the credentials as an HTTP header or auth header and the server would need to read that and perform the checks. To make it secure we would probably need to useTLS as mentioned in number 2. I found an archived project on github that we could maybe use as a template to get started (it's ASL2). It looks like it delegates to the built in JDK SASL support and Krb5LoginModule

The changes from #4811 will fix the hanging ExternalCompaction_2_IT issue that is currently happening when merged in

If I'm reading https://issues.apache.org/jira/browse/THRIFT-5762 correctly (should be included in the next version of Thrift), this would allow us to use the Thrift message types with a GRPC transport. If that's true, then I think that makes the jump to GRPC a lot simpler.

If I'm reading https://issues.apache.org/jira/browse/THRIFT-5762 correctly (should be included in the next version of Thrift), this would allow us to use the Thrift message types with a GRPC transport. If that's true, then I think that makes the jump to GRPC a lot simpler.

That would be interesting, I haven't looked yet how hard it is to plug in different protocols with gRPC but I'm sure it will take some work to get the serializer/deserializer stuff correct.
One thing I noticed with protocol buffers that is a bit annoying (besides not supporting null which makes converting from Thrift require more changes) is there seems to be a lot of buffer copying. There's talk about some ways to make it more efficient with zero copy and I found this as well https://github.com/grpc/grpc-java/issues/7387
So we may need to look at memory efficiency for performance if we stayed with protobuf. I found this blog post which I thought was interesting and talks a bit about the challenges they had moving from Thrift to gRPC and lessons learned including dealing with zero copy and also the lack of SASL support like Thrift has https://www.alluxio.io/blog/moving-from-apache-thrift-to-grpc-a-perspective-from-alluxio/

So we may need to look at memory efficiency for performance if we stayed with protobuf.

Did you look at flatbuffers

Did you look at flatbuffers?

I didn't see that but it looks like that could be an option to explore as well.


Unfx Proxy Checker v1.6.1 got bug like old version , still blank white

Hi , sorry after i have update unfx proxy checker to latest version is 1.6.1 it got bug like before from old version , click check and it just show blank , nothing can do continues , pls recheck i think u reuse old module on this .

Tested on the file have 44969 proxies , file size is 892kb , with Unfx Proxy Checker v1.5.2 and Unfx Proxy Checker v1.5.3 i can check a file biger than up to 4-5mb , it work fine.

retest again with 21023 proxies it still blank but with 10000 it run fine , i think problem on limit list or rebuild the list of result

@rchunter80 How much memory you have? I check ~90k always is ok.

Tks my cpu using is xeon e5 2696 v3 with 64gb ram, i am running Unfx Proxy Checker on a vm , it have 13.9 gb ram , 16 core cpu . I think this can work good , so with old version checker can work good without problem but the older more ( sorry i don't remember correct version ) it have same problem , i just remember on version 1 is ok , next version have this error , next version is 1.5.2 and 1.5.3 is run good without error , and latest version this error come back

hi , any news assnctr bro ? I hope u will fix this bug soon . Thanks for ur work hard

Hi bro , can u edit update method just use alert only and we can update install it manual ? this can help me reuse old version without auto update , bsc look like old version can work good for me here and when i try reinstall it will update auto to latest version i can't do anything to stop this process . Thanks bro and hope u will fix this issue as soon as


installation info

hi, i need your help on how to install your program. I have a raspberry pi4 with grafana and influxdb installed, what should I do to install your program? could you tell me the various steps? Thanks

Hi @stepsolar, the setup for Raspberry Pi should be pretty similar to what the instructions have laid out, so long as you have docker and docker-compose installed. I'm not 100% familiar with the steps to install those (depends on which OS you have on your Pi) but I'm happy to work through it with you.
The basic overview would be:

Install docker, docker-compose, and git
Clone this repository (e.g. with the command git clone https://github.com/averysmalldog/tesla-gen3wc-monitor.git)
Follow through the rest of the steps in the readme.

ip of gen3 where do I insert it?
export HPWC_IP=""


Package ensemble annotator code

The list of Ryan's annotators is in the wg meeting notes:
https://docs.google.com/document/u/2/d/1q1UPz9I_Hzft6-sS24P2TVKq6Ov7ghp-LRyVLS9rfFo/edit
Background:
Before this batch, engineering wrote annotators as plugins in modelgauge or in the core code.
Now they're building them for us to integrate.
Their annotators need to go from modeltune to modelgauge. The approach is to build a package artifact containing the annotator files, and install them in MG via poetry from a private repo on GH.
Potential snag: they have been using modelgauge as a submodule inside modeltune, pinned to an older commit. So the steps are:

bring modelgauge up to date inside modeltune and do basic tests
package up the annotators for poetry to install into modelgauge
test poetry install and then run the modelgauge command that lists annotators (poetry run modelgauge list), and see if they show up
let Barbara know so she can run tests w/ the new annotators.

Part 1 https://github.com/mlcommons/modeltune/pull/122

Part 2 https://github.com/mlcommons/modeltune/pull/123

Note: modeltune is currently broken for local development after moving the modelgauge dependency to the dev group. I will fix that.

Part 3 https://github.com/mlcommons/modeltune/pull/124


forward method missing required positional argument ‘masks’ in PyTorch Lightning

Bug description
I am encountering an error in PyTorch Lightning where the forward method does not receive the expected argument, resulting in a TypeError.
I am trying to train a model using PyTorch Lightning, but I am running into an issue where the forward method is not being called with the required masks argument. Below is the error message I am receiving:
TypeError: forward() missing 1 required positional argument: 'masks'

Steps to Reproduce
1.	Set up a PyTorch Lightning model with a forward method that expects a masks argument.
2.	Attempt to train the model using the trainer.fit() method.
3.	Observe the error message indicating that the masks argument is missing.
What version are you seeing the problem on?
v1.8
How to reproduce the bug
###############
### Dataset ###
###############
class VideoDataset(Dataset):
    def __init__(self, df_list, df, tokenizer, bert_model, max_length, comment_batch_size, num_layers, lstm_dropout, lstm_batch_size, lstm_hidden_size, j, frame_batch_size, num_heads, video_batch_size, d=768):
        self.comment_processor = CommentProcessor(d, num_layers, lstm_dropout,  lstm_batch_size, lstm_hidden_size)
        self.title_desc_processor = TitleDescProcessor(d, df, tokenizer, bert_model, max_length, batch_size=32)
        self.get_j_frames = GetJFrames(j, frame_batch_size, video_batch_size=1, d=768)
        self.video_processor = VideoProcessor(d, num_heads, video_batch_size)

        self.df_list = df_list
        self.tokenizer = tokenizer
        self.bert_model = bert_model
        self.max_length = max_length
        self.comment_batch_size = comment_batch_size

    def __len__(self):
        return len(self.df_list)

    def __getitem__(self, idx):
        # 各データをstackして返す
        df = self.df_list[idx]
        # 動画によってコメント数が違う→バッチサイズが異なる→スタックできない→padding
        comment_embeddings = get_comment_embedding(df, self.tokenizer, self.bert_model, self.max_length, self.comment_batch_size)
        comment_output_avg = self.comment_processor(comment_embeddings)
        hit_likes = torch.tensor(df['like_count'].values, dtype=torch.float16)
        title_desc_output_avg = self.title_desc_processor()
        top_j_sim_video_embeddings_list = self.get_j_frames()
        video_output_avg = self.video_processor(top_j_sim_video_embeddings_list)

        label = df['label'].values
        label = torch.tensor(label, dtype=torch.float16)
        # 自動的にlabelは(batch_size,)の形状にして渡される

        return comment_output_avg, hit_likes, title_desc_output_avg, video_output_avg, label

def collate_fn(batch):
    # バッチ内の全ての要素からコメントテンソルを取得し、最大のコメント数を計算
    max_comments = max([comments.size(0) for comments, _, _, _, _ in batch])
    padded_comments = []
    masks = []

    # バッチ内の各要素に対してパディングとマスク処理を実施
    for comments, hit_likes, title_desc_embeddings, video_output, label in batch:
        pad_size = max_comments - comments.size(0)
        mask = torch.ones(comments.size(0), dtype=torch.bool)
        if pad_size > 0:
            pad_tensor = torch.zeros(pad_size, comments.size(1), comments.size(2), dtype=comments.dtype)
            comments = torch.cat([comments, pad_tensor], dim=0)
            pad_mask = torch.zeros(pad_size, dtype=torch.bool)
            mask = torch.cat([mask, pad_mask], dim=0)
        padded_comments.append(comments)
        masks.append(mask)

    # リストをTensorに変換
    padded_comments_stack = torch.stack(padded_comments, dim=0)
    masks_stack = torch.stack(masks, dim=0)
    hit_likes = torch.stack([hit_likes for _, hit_likes, _, _, _ in batch], dim=0)
    title_desc_embeddings = torch.stack([title_desc_embeddings for _, _, title_desc_embeddings, _, _ in batch], dim=0)
    video_output_stack = torch.stack([video_output for _, _, _, video_output, _ in batch], dim=0)
    labels = torch.stack([label for _, _, _, _, label in batch], dim=0)

    return padded_comments_stack, masks_stack, hit_likes, title_desc_embeddings, video_output_stack, labels

#############
### Class ###
#############
class FakeNewsDetector(pl.LightningModule):
    def __init__(self, tokenizer, bert_model, random_state, max_length, batch_size, num_workers, lr, n_split, dropout_rate, lstm_dropout, input_size, lstm_hidden_size, hidden_dim, num_layers, bidirectional, num_heads, max_epochs, patience, fig_save_name, name, weight_decay, d=768):
        super().__init__()
        self.save_hyperparameters(ignore=['tokenizer', 'bert_model'])

        self.validation_step_outputs = []
        self.d = d

        self.video_fc = nn.Linear(2*d, 2*d)

        self.flatten = nn.Flatten()
        self.fc1 = nn.Linear(max_length * 2*d, 1024)
        self.bn1 = nn.BatchNorm1d(1024)
        self.dropout = nn.Dropout(dropout_rate)
        self.fc2 = nn.Linear(1024, 512)
        self.bn2 = nn.BatchNorm1d(512)
        self.fc3 = nn.Linear(512, 128)
        self.bn3 = nn.BatchNorm1d(128)
        self.fc4 = nn.Linear(128, 1)

        self.comment_weight = nn.Parameter(torch.randn(1))
        self.title_desc_weight = nn.Parameter(torch.randn(1))
        self.video_weight = nn.Parameter(torch.randn(1))

        self.bilstm_model = BiLSTM(input_size=int(input_size), hidden_size=int(lstm_hidden_size),
                                    num_layers=int(num_layers), dropout=float(lstm_dropout))
        self.bilstm_model = self.bilstm_model.to('cuda')

        self.comment_processor = CommentProcessor(d, num_layers, lstm_dropout, lstm_batch_size, lstm_hidden_size=768//2)
        self.title_desc_processor = TitleDescProcessor(d)
        self.get_j_frames = GetJFrames()
        self.video_processor = VideoProcessor()

    def forward(self, comment_embeddings, masks_stack, hit_likes, title_desc_embedding, video_output_stack):

        comment_output_avg = self.comment_processor(comment_embeddings)
        # shape: (batch_size, 2*d)

        title_desc_output_avg = self.title_desc_processor(title_desc_embedding)
        # shape: (batch_size, 2*d)

        top_j_sim_video_embeddings_list = self.get_j_frames(common_ids_list)
        video_output_avg = self.video_processor(top_j_sim_video_embeddings_list)
        # shape: (1, 2*d)

        weights = F.softmax(torch.stack([self.comment_weight, self.title_desc_weight, self.video_weight]), dim=0)

        combined_output = weights[0] * comment_output_avg + weights[1] * title_desc_output_avg + weights[2] * video_output_avg

        x = self.flatten(combined_output)
        x = self.fc1(x)
        x = F.relu(x)
        x = self.bn1(x)
        x = self.dropout(x)

        x = self.fc2(x)
        x = F.relu(x)
        x = self.bn2(x)
        x = self.dropout(x)

        x = self.fc3(x)
        x = F.relu(x)
        x = self.bn3(x)
        x = self.dropout(x)

        x = self.fc4(x)
        x = torch.sigmoid(x)
        x = x.squeeze()  # 不要な次元を削除して形状を(batch_size,)にする
        return x

    def training_step(self, batch, batch_idx):
        comment_embeddings, masks, hit_likes, title_desc_embedding, weighted_avg_video_embedding, label = batch
        output = self(comment_embeddings, masks, hit_likes, title_desc_embedding, weighted_avg_video_embedding)
        loss = F.binary_cross_entropy(output, label)
        self.log('train_loss', loss)

        return loss

    def validation_step(self, batch, batch_idx):
        comment_embeddings, masks, hit_likes, title_desc_embedding, weighted_avg_video_embedding, label = batch
        output = self(comment_embeddings, masks, hit_likes, title_desc_embedding, weighted_avg_video_embedding)

        loss = F.binary_cross_entropy(output, label)
        self.log('val_loss', loss)

        label_predicted = output

        label_predicted = label_predicted.cpu().numpy()
        label = label.cpu().numpy()
        logits = torch.logit(output).cpu().numpy()

        self.validation_step_outputs.append({'label': label, 'label_predicted': label_predicted, 'logits': logits})

        accuracy = accuracy_score(label, label_predicted)
        f1 = f1_score(label, label_predicted)
        precision = precision_score(label, label_predicted)
        recall = recall_score(label, label_predicted)

        self.log('val_acc', accuracy)
        self.log('val_f1', f1)
        self.log('val_precision', precision)
        self.log('val_recall', recall)

        return loss

    def on_validation_epoch_end(self):
        all_label = []
        all_preds = []
        all_pred_probs = []

        for output in self.validation_step_outputs:
            all_label.extend(output['label'])
            all_preds.extend(output['logits'])
            all_pred_probs.extend(output['label_predicted'])

        cm = confusion_matrix(all_label, all_preds)
        for i in range(cm.shape[0]):
            for j in range(cm.shape[1]):
                self.log(f'val_cm_{i}_{j}', float(cm[i, j]))

        auc = roc_auc_score(all_label, all_pred_probs)
        self.log('val_AUC', auc)

        fpr, tpr, thresholds = roc_curve(all_label, all_pred_probs)

        plot_roc_curve(fpr, tpr, random_state, self.batch_size, self.max_length, self.fig_save_path, fig_save_name='test_roc')
        plot_fpr_threshold(thresholds, fpr, random_state, self.batch_size, self.max_length, self.fig_save_path, fig_save_name='test_fpr')
        plot_tpr_threshold(thresholds, tpr, random_state, self.batch_size, self.max_length, self.fig_save_path, fig_save_name='test_tpr')

        self.validation_step_outputs.clear()

    def configure_optimizers(self):
        optimizer = AdamW(self.parameters(), lr=self.hparams.lr, weight_decay=self.hparams.weight_decay)
        return optimizer

### Error messages and logs

```Puthon
TypeError                                 Traceback (most recent call last)
Cell In[32], line 16
      8 logger = TensorBoardLogger(
      9     save_dir="lightning_logs",
     10     name=name,
     11     version=f"Fold_{fold+1}"
     12     )
     14 trainer = make_trainer(max_epochs, logger, name, patience)
---> 16 trainer.fit(model, train_loader, val_loader)
     18 val_results = trainer.validate(model, val_loader)
     20 val_losses.append(val_results[0]['val_loss'])

File ~/anaconda3/envs/choi_venv/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py:532, in Trainer.fit(self, model, train_dataloaders, val_dataloaders, datamodule, ckpt_path)
    530 self.strategy._lightning_module = model
    531 _verify_strategy_supports_compile(model, self.strategy)
--> 532 call._call_and_handle_interrupt(
    533     self, self._fit_impl, model, train_dataloaders, val_dataloaders, datamodule, ckpt_path
    534 )

File ~/anaconda3/envs/choi_venv/lib/python3.8/site-packages/pytorch_lightning/trainer/call.py:43, in _call_and_handle_interrupt(trainer, trainer_fn, *args, **kwargs)
     41     if trainer.strategy.launcher is not None:
     42         return trainer.strategy.launcher.launch(trainer_fn, *args, trainer=trainer, **kwargs)
---> 43     return trainer_fn(*args, **kwargs)
     45 except _TunerExitException:
...
    return self._call_impl(*args, **kwargs)
  File "/home/foo/anaconda3/envs/choi_venv/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1541, in _call_impl
    return forward_call(*args, **kwargs)
TypeError: forward() missing 1 required positional argument: 'masks'

Environment

Current environment
Ubuntu 20.04
VSCode==1.89
PyTorch==2.1.2
pytorch-lightning==2.0.8

More info

Hey @YuyaWake did you take a look at the full stack trace where this happened? You didn't post all of it, it's truncated, but if you look at it closely you'll be able to see in which module forward this happens, and then you can find where you need to pass the missing masks args.

I think I caught the error ....
The error is saying that forward function requires one more argument to be defined or putting it another way , you are passing arguments more than that expected by forward function.
Looking at your collate() definition , it is returning 6 objects...
But forward is defined to take 5 objects except the self....
Pls correct the forward() definition to remove this error....
Hope I could deliver my point...
Please put your take on it...
Thanks

Thank you for your response. I lacked knowledge about the collate function. Following your advice, the error has been resolved. Thank you!

Really feeling awesome to help you out on the issue...
On Mon, 17 Jun, 2024, 4:45 pm lalalalalafo, @.***>
wrote:

Thank you for your response. I lacked knowledge about the collate
function. Following your advice, the error has been resolved. Thank you!
—
Reply to this email directly, view it on GitHub
https://github.com/Lightning-AI/pytorch-lightning/issues/19921#issuecomment-2173109582,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AWTSGUFNZMIUXOKDWDHC4JDZH3ALTAVCNFSM6AAAAABIQC62UCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNZTGEYDSNJYGI
.
You are receiving this because you commented.Message ID:
@.***>

Thank you for making me realize my lack of knowledge. Thanks to you, I have an opportunity to study again (even though I just learned it from ChatGPT, haha). This program is the most complex and difficult one I have ever written, so I think I will continue to post issues. If you don't mind, I would appreciate your help in the future as well.
Thank you!

Sure, no problem.
You can raise the issue whenever you want...
On Tue, 18 Jun, 2024, 12:18 pm lalalalalafo, @.***>
wrote:

Thank you for making me realize my lack of knowledge. Thanks to you, I
have an opportunity to study again (even though I just learned it from
ChatGPT, haha). This program is the most complex and difficult one I have
ever written, so I think I will continue to post issues. If you don't mind,
I would appreciate your help in the future as well.
Thank you!
—
Reply to this email directly, view it on GitHub
https://github.com/Lightning-AI/pytorch-lightning/issues/19921#issuecomment-2175258592,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AWTSGUF7K7TYY5374VRC6MDZH7J2VAVCNFSM6AAAAABIQC62UCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNZVGI2TQNJZGI
.
You are receiving this because you commented.Message ID:
@.***>


Bug: Auto Roll NPC Hit Points is not adding NPC Constitution modifier

When dragging an NPC actor to a scene with the "Auto Roll NPC Hit Points" setting turned on, the system rolls a number of 8-sided dice equal to the level of the NPC and sets the token's hit points and max hit points.
Expected behavior: The system should roll a number of 8-sided dice equal to the level of the NPC, adding the Constitution modifier of the NPC (with a minimum of 1 hit point in the case of a negative modifier).

This is Evo from discord so you guys know.
I believe I found the line that needs to be corrected for this.
`async _npcRollHP(options={}) {
const data = {
rollType: "hp",
actor: this,
};
	**const parts = [`${this.system.level.value}d8`];**

	options.fastForward = true;
	options.chatMessage = true;

	options.title = game.i18n.localize("SHADOWDARK.dialog.hp_roll.title");
	options.flavor = options.title;
	options.speaker = ChatMessage.getSpeaker({ actor: this });
	options.dialogTemplate = "systems/shadowdark/templates/dialog/roll-dialog.hbs";
	options.chatCardTemplate = "systems/shadowdark/templates/chat/roll-card.hbs";
	options.rollMode = CONST.DICE_ROLL_MODES.PRIVATE;

	const result = await CONFIG.DiceSD.RollDialog(parts, data, options);

	const newHp = Number(result.rolls.main.roll.result);
	this.update({
		"system.attributes.hp.max": newHp,
		"system.attributes.hp.value": newHp,
	});
}`

I only know one way to fix this and its not the right way, its the brute force way.
Trying to learn so if this helps here is my jank.
`// Get the dexterity modifier
let dexBonus = this.system.attributes.dex.modifier;
// Ensure that the bonus is at least +1
dexBonus = Math.max(dexBonus, 1);
// Create the dice roll string
const parts = [${this.system.level.value}d8 + ${dexBonus}];
`


Constant docker crashes

Hello and thanks for developping this app !
I've been using it for the past couple of years or so but I see recently that the docker app keeps crashing and in the logs I can see {"error":{"message":"Request Failed with status 400 - Bad Request","request": (etc...)
Any hints where to start investigating ? I have 2 of these running (one for each car) and both fail to work properly.
thanks !

Mine's been running for the last 8 days. Nothing has really changed except for OnStarJS updates and some dependency libraries. I'd suggest checking your docker, environment, etc.

Does MFA have to be disabled in order for the app to work ? It still crashes within seconds ...

So I created new containers for my 2 cars in docker, for some reason despite selecting "latest", the old ones would not update to the latest version of the app. The new containers are with the latest version now.
The app does not crash within seconds so this is getting better, however I now have this error :
error: Error {"error":{"message":"Request Failed with status 504 - Gateway Timeout","request":{"method":
"POST"},"response":{"data":"","headers":{"cache-control":"no-store","connection":"keep-alive","content-l
ength":"0","date":"Tue, 12 Dec 2023 19:48:37 GMT","pragma":"no-cache","request-context":"appId=cid-v1:a7
e19842-5b19-4b47-a9cf-85cc6e87a746"},"status":504,"statusText":"Gateway Timeout"},"stack":"Error: Reques
t Failed with status 504 - Gateway Timeout\n    at RequestService. (/app/node_modules/onstarj
s/dist/index.cjs:588:32)\n    at Generator.throw ()\n    at rejected (/app/node_modules/onsta
rjs/dist/index.cjs:27:65)\n    at process.processTicksAndRejections (node:internal/process/task_queues:9
5:5)"}}
Any hints as to what I am doing wrong ?
thanks

Try starting the vehicle if it hasn't been started recently. That usually resets any request limits.

Hi
The vehicle is used everyday but I also notice that the crappy OnStar app "MyChevrolet" is also not updating properly, I have info from 22 days ago and it wont update to the current status despite the car being on...
The good thing is that the docker is not crashing, but it seems that for some time now, all the logs are "Request Failed with Status 504 - Gateway timeout" ... so I was not getting any update. I restarted the docker and seems to work now...
Does that mean we need to restart the docker on a regular basis ?

Closing as related to API performance.

I have the latest version of onstar2MQTT, I have waited 24 hours before restarting the docker image and I am still getting an instant crash with the following message in the logs:
error: Main function error. {"error":{"message":"Request Failed with status 400 - Bad Request","request":{"  (....)
I'm unsure about it being on the API side if I am the only one reporting these crashes. The config setup has not changed, neither have my credentials...

I have the latest version of onstar2MQTT, I have waited 24 hours before restarting the docker image and I am still getting an instant crash with the following message in the logs:
error: Main function error. {"error":{"message":"Request Failed with status 400 - Bad Request","request":{"  (....)
I'm unsure about it being on the API side if I am the only one reporting these crashes. The config setup has not changed, neither have my credentials...

Please see #208 (comment) and #208 (comment) and #208 (comment).

Thanks @BigThunderSR installed your fork and seems to work great !!


[0.5.2] Points selection tool graphic is missing

🐛 Bug Report
When using the points selection tool, the rectangle selection isn't drawn.
The tool does appear to work, so it appears to be a graphical glitch.
https://github.com/user-attachments/assets/d07fb43c-6d3a-4c84-8bb5-725e1e5c938a
💡 Steps to Reproduce

Make a points layer
Add some points
Use the selection tool (3) and try to select them. See that it works, but no box is drawn.

💡 Expected Behavior
I expect to see the selection box graphic.
🌎 Environment
napari: 0.5.2.dev27+g3c7d1a463
Platform: macOS-14.5-arm64-arm-64bit
System: MacOS 14.5
Python: 3.12.5 | packaged by conda-forge | (main, Aug 8 2024, 18:32:50) [Clang 16.0.6 ]
Qt: 6.7.1
PyQt6:
NumPy: 2.0.1
SciPy: 1.14.0
Dask: 2024.8.0
VisPy: 0.14.3
magicgui: 0.9.1
superqt: 0.6.7
in-n-out: 0.2.1
app-model: 0.2.8
npe2: 0.7.7
OpenGL:

GL version: 2.1 Metal - 88.1
MAX_TEXTURE_SIZE: 16384
GL_MAX_3D_TEXTURE_SIZE: 2048

Screens:

screen 1: resolution 1680x1050, scale 2.0

Optional:

numba: 0.60.0
triangle not installed
napari-plugin-manager: 0.1.0

Settings path:

/Users/piotrsobolewski/Library/Application Support/napari/napari-dev_a1eb8b76ba95fa16ad06e26097b46b8455dfbf0b/settings.yaml

💡 Additional Context
No response

Bisect points to: b7a8d00decfde0ee255d768ad195e2c18dd89902
https://github.com/napari/napari/pull/7162
Makes sense I guess, since that dealt with selection.

Hm. I do not like this. It looks like highlight event is wrongly defined. If this is an event for "anything highlighted on layer" then it should be a private event.
Or at leat any Pr fixing this, should contain detailed update of docstrings

Eeep! This is way worse! It affects shapes drawing too, depending on your edge & face color and what you are annotating you can't see, especially with the polygon tool.

It's even worse, it also makes interacting with vertexes bugged:

And same with moving Shapes:


Sass features don't work within components using inlineStyle within a library (published

Which @angular/* package(s) are the source of the bug?
Don't known / other
Is this a regression?
No
Description

I have a components library within an Nx monorepo.
I use scss for my styling and need to use @use for some responsive mixins (since css variables don't work within media queries).
I'm in inlineStyles mode.

Please provide a link to a minimal reproduction of the bug
No response
Please provide the exception or error you saw
I published my library on npm (on my company's registry) and now the inlineStyle doesnt work 😢

Within a demo app in my monorepo, it works fine but when I download my lib and do the same in a completely different project (with the same angular.json options well set too) it doesn't work anymore... I have to put my styles using `@use` within .scss files to make it work...

In my app I have set inlineStyleLanguage to scss + and I added stylePreprocessorOptions with includePaths pointing to the scss file where my mixins are to be sure it works as expected

Can you please share your ng-packagr configuration?

Sure, here it is
{
  "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
  "dest": "../../dist/libs/components",
  "assets": ["./assets", "./styles"],
  "lib": {
    "entryFile": "src/index.ts"
  }
}

@LcsGa, it looks like inlineStyleLanguage is not configured in your library.
{
  "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
+ "inlineStyleLanguage": "scss",
  "dest": "../../dist/libs/components",
  "assets": ["./assets", "./styles"],
  "lib": {
    "entryFile": "src/index.ts"
  }
}

Really... I didn't even know we could do that in ng-packagr 😅
Amazing, thank you verry much!!

Just one question though: Is it still necessary to set the app inlineStyleLanguage to scss too or did I miss antoher thing (apparently yes, I still need it)?

The app level setting is still needed if your application has inline styles that are written in SCSS.

okay but I apparently also need it even for my libs styles to work fine, even if my app itself doesn't have any inline scss

(I have this behavior in my monorepo demo app though, I'll check if that's the same when it's published + dl within a completely different app)

It looks like you might be consuming the “library” using path mappings to the Typescript source during development instead of the built version of the library.
This fundamentally causes the “library”, to be built as part of the application.

Okay, thanks! Didn't think about it!
I set up the inlineStyleLanguage as you said in my ng-package.json but it still doesn't work though 😕

I tried with relative paths but it didn't work => I thought it was due to packaging into one folder before that caused a wrong path
Then I tried by adding absolute path with stylePreprocessorOptions adding styles folder (where my mixins file is) to the includePaths => it still doesn't work as expected

ng-package.json of my lib
{
  "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
  "dest": "../../dist/libs/components",
  "inlineStyleLanguage": "scss",
  "assets": ["./assets", "./styles"],
  "lib": {
    "entryFile": "src/index.ts"
  }
}

angular.json of my external app
...
"inlineStyleLanguage": "scss",
"stylePreprocessorOptions": {
  "includePaths": ["node_modules/@kw/components/styles"]
},

=> within my components I do @use 'responsive' with things like @include responsive.mobile { ... } and in styles I directely have a _responsive.scss file

You also need to configure the scss includes for your library build.
{
  "lib": {
    "styleIncludePaths": ["../node_modules/@kw/components/styles"]
  }
}

I'm really sorry but I might be missing something else and can't figure out what in the docs (that I didn't read carefully enough yet, I admit):

is the path through my styles folder relative to the project itself? If yes, I did

"styleIncludePaths": "./styles"

my components are all built as secondary entry points, which means they also have their own ng-package.json => should I also configure theme with that styleIncludePaths and inlineStyleLanguage or is it enough to declare it globally, for the whole library?

The styleIncludePaths needs also be to provided in secondary entry-points. The value, is relative to the configuration file.

okay, so I:

added inlineStyleLanguage + styleIncludePaths in every secondary entry points
kept styleInlncludePaths for the main ng-package.json since I also need it for a global style thing
removed inlineStyleLanguage from the main ng-package.json of my lib since I don't have anything in src

=> it still doesn't work 😕 Am I still missing another thing? (I'm really sorry 😅)

Here is one of my ng-package.json from a secondary entry point
{
  "inlineStyleLanguage": "scss",
  "lib": {
    "entryFile": "src/index.ts",
    "styleIncludePaths": ["../styles"]
  }
}

Here is the main one
{
  "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
  "dest": "../../dist/libs/components",
  "assets": ["./assets", "./styles"],
  "lib": {
    "entryFile": "src/index.ts",
    "styleIncludePaths": ["./styles"]
  }
}

The paths seem to be good

@LcsGa, can you please provide a minimal reproduction?

Here it is: https://github.com/LcsGa/angular-sass-issue-26712-nx
But currently I have a more explicit issue where, in this repo, it directly tells that it can't find the stylesheet

When I build the lib itself, the build succeeds though

When I replace @use 'responsive' with @use '../styles/responsive' it works fine ! But what's strange is that I don't meet that issue within the real project, whereas the configuration is exactly the same

This seems to be a problem with @nx/angular, https://github.com/nrwl/nx/tree/master/packages/angular/src/executors/package/ng-packagr-adjustments. When NX custom logic from the executor is removed the compilation works as expected.

You can also verify this by replacing the executor from @nx/angular:package to @angular-devkit/build-angular:ng-packagr.

Oh okay! I could definitely never find by myself 😅 Thank you very much!
Is this issue already known from Nx? Is there a fix incomming or can I simply use @angular-devkit/build-angular:ng-packagr or are there some unwanted side effects?

I tried to replace @nx/angular:package with @angular-devkit/build-angular:ng-packagr but I still have the exact same issue

I reset nx + rebuilt the lib + served the app

Looking at the error again it looks like the error appears to be coming from the application compilation. This is caused by the following path mappings which causes the library to be compiled as part of the application.
"paths": {
  "@org/components": ["libs/components/src/index.ts"],
  "@org/components/button": ["libs/components/button/src/index.ts"]
}

This should be changed to
"paths": {
  "@org/components": ["dist/libs/components"],
  "@org/components/button": [""dist/libs/components"]
}

Yeah, about the error that's what I thought to but what I felt strange is that I don't have it in the real app 🤔
About the paths change, if I do that, I face a new error

Thanks for your answer about the builder!
Okay, I wasn't sure if I had to include inlineStyleLanguage to the root ng-package.json, thanks !

There are two options to fix that.
Either update the paths to the following;
"paths": {
    "@org/components": [
      "dist/libs/components",
      "libs/components/src/index.ts"
    ],
    "@org/components/*": [
      "dist/libs/components/*",
      "libs/components/button/src/index.ts"
    ]
  }

Or revert the paths changes in the root level tsconfig and add them in the tsconfig.app.json

Thanks @alan-agius4 ! I'll try all of that as a temporary fix and opened an issue on Nx (if you wanna take a look at it/correct me)!
Just one question though, I understood your first example adding multiple paths into my tsconfig.base.ts which works great, but I didn't understand the other one, especially when you say to "revert the paths changes" => do you mean removing all of it or simply reverting it "normally", like this:
"paths": {
    "@org/components": ["libs/components/src/index.ts"],
    "@org/components/button": ["libs/components/button/src/index.ts"]
  }

Also I just tried to replace @nx/angular:package with @angular-devkit/build-angular:ng-packagr but I can't make it work in my real project since I have another library that components depends on 😬 Is there another thing I'm missing?

@kw/components/tabs is dependent on a @kw/angular-extensions/rxjs which is either not built yet or the path mappings are not pointing to the built version of the said library.

Thanks, I added multpile paths as you showed me before and it built !
Now that I could build it, I retried to see how it behaves in the app but my scss rules are still not working. I published a new branch on my miniaml reproduction here if you want to take a look at it

inlineStyleLanguage is still missing in https://github.com/LcsGa/angular-sass-issue-26712-nx/blob/ce7aac634c348bc7515f50396031475df0c74429/libs/components/ng-package.json

Indeed, sorry... I did it in the real project but forgot to do it there too 😅 Thanks! Everything works well except that I lose the nx incremental build! Now i simply need to wait for an answer from nx!

There are two options to fix that.
Either update the paths to the following;
"paths": {
    "@org/components": [
      "dist/libs/components",
      "libs/components/src/index.ts"
    ],
    "@org/components/*": [
      "dist/libs/components/*",
      "libs/components/button/src/index.ts"
    ]
  }

Or revert the paths changes in the root level tsconfig and add them in the tsconfig.app.json

One last question if I may ask: how can I do the second option? I couldn't find a way to handle it and I'd prefer having one path per file

Just add the path mappings in the tsconfig.app.json instead of tsconfig.json

But the one to the dist right? If yes then I can't find which file to point to => for example on the button => should I do something like:
"paths": {
    "@org/components/button": ["dist/libs/components/button/???"]
}

I tried with the esm/fesm folders, on .mjs files but it didn't work and I don't see any other option

For secondary entry-point you need to use the wildcard. See: https://github.com/angular/angular-cli/issues/26712#issuecomment-1866306384


Automate split

We now do a manual split from time to time to the different packages. We need to automated this and maybe Github actions can help us with that.
The package that we use now is this
https://github.com/dflydev/git-subsplit
They also have a github webhook
https://github.com/dflydev/dflydev-git-subsplit-github-webhook

Done in https://github.com/SimpleBus/SimpleBus/commit/308f66399339a603d82daaec837dea04251a408b


chore: drop dependency-review action

As suspected in https://github.com/freeCodeCamp/freeCodeCamp/pull/45879#pullrequestreview-965326717 this is more of an anoyance. The idea while noble is sort of pointless IMHO. Going ahead and droping this to avoid holding up renovate PRs

cc @naveensrinivasan


[Bug][DagHelper] Time complexity is O(N^N)

function  getFlowNodeListPost's  time complexity is O(N^N)

If you have a better solution, contributions are welcome,

Hi,
This actually is not a bug, you can change the title to [Improvement][api] DagHelper time complexity is O(N^N).

PR #3249 solved this


Add appropriate message if we try to make screenshot on remote browser

If the only browser specified is remote browser or if error occurs in remote browser we need to add appropriate error message that screenshots are not available for remote browsers. Also, if run configuration contains remote browser and screenshots are enabled we need to write warning to stderr after bootstrapping about disabled screenshots.

Closing in favor of #671


Osiraa requires  insufficient_verification reason but DRP specifies insuf_verification

Hi guys!
just double checking about which will be the final reason  string for insufficient verification. I'm getting error validations on OSIRAA when i try insuf_verification but works with insufficient_verification, on the other hand DRP specifies insuf_verification
DRP link https://github.com/consumer-reports-innovation-lab/data-rights-protocol?tab=readme-ov-file#302-request-statuses

Hi, I've updated the app to use insuf_verification in conformance with the spec.  I will post a new version soon.

Updates committed to code base.

Updates committed to code base.


Printing does not work

I try to print the order confirmation, but it does not work.

I can press "sent to" but if i press the "print" button it happens nothing.
I hear it is because in the container there is missing a default printer service.

What image are you using, what version of windows are you running and what isolation?
We build our containers on ServerCore and that doesn't have the printing server role.
https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/print-spooler
Not since 1803:
https://docs.microsoft.com/en-us/windows-server/administration/server-core/server-core-container-removed-roles
But... I would assume that it should work if you use ltsc2016 (then the container should have spooler service) or if you use process isolation (-useBestContainerOS)
Tried with process isolation on my machine:

Tried with hyperv isolation on my machine:
Works as well.
what are you running? script and output please

Please provide more information and reopen the issue if it still persists,

Hey @freddydk,
We are trying to setup printer on bc container, but cannot get it working.
Business scenario is the following: we are trying to documents using job queue. Warehouse labels and etc...
Easiest way to test, is to check for Printer Name on Job Queue Entry Card. If you drill down on Printer Name, it tries to list down printers installed on the server side (inside container).

Of course it fails, since container does not have spooler service running/installed.
if we try to install it, we get an error

My host OS version

My container OS version

Any suggesiton/advice?
Best Regards,
Gintautas


feat: add boost chrono, tokenizer

as title
need skip url stability check

Hello @bazelbuild/bcr-maintainers, modules without existing maintainers (boost.chrono, boost.tokenizer) have been updated in this PR. Please review the changes.


Network related panels in the System Resources dashboard don't keep track of interface names

Bug Description
All the network-related panels in the System Resources dashboard display a hardcoded legend text that does not distinguish among interface names, rendering filtering by interface impossible.

The device names do exist in the metrics so it's just a matter of exposing them in the dashboard.
To Reproduce

juju deploy ubuntu
juju deploy grafana-agent
juju relate ubuntu grafana-agent
relate grafana-agent with cos (cross-model)

Environment
This is a small cos on openstack environment.
Sending side (the microk8s unit contains the COS):
ubuntu@aieri-bastion:~$ juju status -m machines --relations
Model     Controller        Cloud/Region             Version  SLA          Timestamp
machines  aieri-controller  serverstack/serverstack  2.9.42   unsupported  00:10:05Z

SAAS                             Status  Store             URL
grafana-dashboards               active  aieri-controller  admin/cos-lite.grafana-dashboards
loki-logging                     active  aieri-controller  admin/cos-lite.loki-logging
prometheus-receive-remote-write  active  aieri-controller  admin/cos-lite.prometheus-receive-remote-write

App            Version  Status  Scale  Charm          Channel  Rev  Exposed  Message
grafana-agent           active      2  grafana-agent  edge       5  no
microk8s                active      1  microk8s       stable    35  no
ubuntu                  active      2  ubuntu         stable    22  no

Unit                Workload  Agent  Machine  Public address  Ports                     Message
microk8s/1*         active    idle   1        <IP_ADDRESS>      80/tcp,443/tcp,16443/tcp
ubuntu/0*           active    idle   2        <IP_ADDRESS>
  grafana-agent/0*  active    idle            <IP_ADDRESS>
ubuntu/1            active    idle   3        <IP_ADDRESS>
  grafana-agent/1   active    idle            <IP_ADDRESS>

Machine  State    Address     Inst id                               Series  AZ    Message
1        started  <IP_ADDRESS>  cf92d2b1-8ed7-47cb-803d-39ede6b65b02  focal   nova  ACTIVE
2        started  <IP_ADDRESS>  f64a8889-6356-495e-9cc9-48ce60d852f7  focal   nova  ACTIVE
3        started  <IP_ADDRESS>  2cb13a22-d7c6-40f3-8966-eb88e178e558  focal   nova  ACTIVE

Relation provider                                     Requirer                              Interface                Type         Message
grafana-agent:grafana-dashboards-provider             grafana-dashboards:grafana-dashboard  grafana_dashboard        regular
loki-logging:logging                                  grafana-agent:logging-consumer        loki_push_api            regular
microk8s:cluster                                      microk8s:cluster                      microk8s-cluster         peer
prometheus-receive-remote-write:receive-remote-write  grafana-agent:send-remote-write       prometheus_remote_write  regular
ubuntu:juju-info                                      grafana-agent:juju-info               juju-info                subordinate

Receiving side:
ubuntu@aieri-bastion:~$ juju status -m cos-lite --relations
Model     Controller        Cloud/Region     Version  SLA          Timestamp
cos-lite  aieri-controller  micro/localhost  2.9.42   unsupported  00:12:21Z

App           Version  Status  Scale  Charm             Channel  Rev  Address         Exposed  Message
alertmanager  0.25.0   active      1  alertmanager-k8s  edge      64  <IP_ADDRESS>   no
catalogue              active      1  catalogue-k8s     edge      14  <IP_ADDRESS>  no
grafana       9.2.1    active      1  grafana-k8s       edge      76  <IP_ADDRESS>   no
loki          2.7.4    active      1  loki-k8s          edge      80  <IP_ADDRESS>  no
prometheus    2.42.0   active      1  prometheus-k8s    edge     119  <IP_ADDRESS>  no
traefik       2.9.6    active      1  traefik-k8s       edge     124  <IP_ADDRESS>      no

Unit             Workload  Agent  Address       Ports  Message
alertmanager/0*  active    idle   <IP_ADDRESS>
catalogue/0*     active    idle   <IP_ADDRESS>
grafana/0*       active    idle   <IP_ADDRESS>
loki/0*          active    idle   <IP_ADDRESS>
prometheus/0*    active    idle   <IP_ADDRESS>
traefik/0*       active    idle   <IP_ADDRESS>

Offer                            Application   Charm             Rev  Connected  Endpoint              Interface                Role
alertmanager-karma-dashboard     alertmanager  alertmanager-k8s  64   0/0        karma-dashboard       karma_dashboard          provider
grafana-dashboards               grafana       grafana-k8s       76   1/1        grafana-dashboard     grafana_dashboard        requirer
loki-logging                     loki          loki-k8s          80   1/1        logging               loki_push_api            provider
prometheus-receive-remote-write  prometheus    prometheus-k8s    119  1/1        receive-remote-write  prometheus_remote_write  provider
prometheus-scrape                prometheus    prometheus-k8s    119  0/0        metrics-endpoint      prometheus_scrape        requirer

Relation provider                   Requirer                     Interface              Type     Message
alertmanager:alerting               loki:alertmanager            alertmanager_dispatch  regular
alertmanager:alerting               prometheus:alertmanager      alertmanager_dispatch  regular
alertmanager:grafana-dashboard      grafana:grafana-dashboard    grafana_dashboard      regular
alertmanager:grafana-source         grafana:grafana-source       grafana_datasource     regular
alertmanager:replicas               alertmanager:replicas        alertmanager_replica   peer
alertmanager:self-metrics-endpoint  prometheus:metrics-endpoint  prometheus_scrape      regular
catalogue:catalogue                 alertmanager:catalogue       catalogue              regular
catalogue:catalogue                 grafana:catalogue            catalogue              regular
catalogue:catalogue                 prometheus:catalogue         catalogue              regular
grafana:grafana                     grafana:grafana              grafana_peers          peer
grafana:metrics-endpoint            prometheus:metrics-endpoint  prometheus_scrape      regular
loki:grafana-dashboard              grafana:grafana-dashboard    grafana_dashboard      regular
loki:grafana-source                 grafana:grafana-source       grafana_datasource     regular
loki:metrics-endpoint               prometheus:metrics-endpoint  prometheus_scrape      regular
prometheus:grafana-dashboard        grafana:grafana-dashboard    grafana_dashboard      regular
prometheus:grafana-source           grafana:grafana-source       grafana_datasource     regular
prometheus:prometheus-peers         prometheus:prometheus-peers  prometheus_peers       peer
traefik:ingress                     alertmanager:ingress         ingress                regular
traefik:ingress                     catalogue:ingress            ingress                regular
traefik:ingress-per-unit            loki:ingress                 ingress_per_unit       regular
traefik:ingress-per-unit            prometheus:ingress           ingress_per_unit       regular
traefik:metrics-endpoint            prometheus:metrics-endpoint  prometheus_scrape      regular
traefik:traefik-route               grafana:ingress              traefik_route          regular

Relevant log output
N/A

Additional context
No response

This should be solved by https://github.com/canonical/grafana-k8s-operator/pull/211 ; the Grafana charm with the fix has not been released yet, but it will later today.


Use relative paths for covers and library files

This hardcodes not just the absolute path like ~/Music/Submariner/Music/Artist/Album/Track.mp3, but the entire sandbox path, which seems very fragile (i.e. what about bundle IDs? or if we allow relocating the library path?)
For new objects, don't bake in the path, but assume a relative path is based in the current application directory. For old objects, leave them be or migrate them somehow (on load?). Probably provide a helper function to deal with it.

Probably need to track Track, Episode, ImportOperation

As well as probably override the getters on Artist/Album/Cover, since those can be called up. Check for relative, append as needed.

Covers have been converted, though no migration yet.

Cover migration implemented, though it's a little clumsy looking of a function body.

thinking about this some more, perhaps putting just the file name isn’t wise. if the user renames the server resource, then the path won’t match. what we could do is:

do a migration again but bake the covers dir in in a relative manner from library dir
rename the covers dir when the server name gets renamed

Note tracks can be linked, so an absolute path outside of the library directory is still valid in that context.

It's also worth not really moving tracks if they're accessible either - local tracks can be removed and re-added, unlike covers which are user-invisible. It's just a matter of collapsing them when sensible required.


Reference build status in global service list alongside with current deployment status

Originally posted by @MartinKavik in https://github.com/coollabsio/coolify/issues/294#issuecomment-1453968340

I'm closing this issue, because tracking features will be moved to GitHub discussions. Github issues will be only for bugs.
Version 4 is in full focus. v3 related issues will be closed, if it is not a critical bug.
Thanks for your understanding.


[flutter_tools] Update background isolates when performing hot reload/restart

Description
When performing a hot restart, collect isolates without an attached flutter view and send a kill signal. These must have been spawned by running main, so restarting without removing them leads to isolate duplication.
This works provided that there are no cases where these isolates should not be removed...
When performing a hot reload, ensure that we send a reloadSources command to every isolate and not just uiIsolates.
Fixes https://github.com/flutter/flutter/issues/47646
Fixes https://github.com/flutter/flutter/issues/48091 (but only for existing isolates).
There are two edge cases here:

plugins that communicate with isolates launched via the main isolate
background isolates

This change might shutoff isolates prematurely in 1), however I would argue this isn't a big deal since today these plugins would not function under a hot restart anyway (duplicates spawned).
For 2, since we do not kill isolates with a FlutterView attached (which includes android alarm manager) there is no difference in functionality, though the isolate itself still can't be restarted.

Need to update mocks in the resident runner test, otherwise this works as is

This approach generally LGTM. Thanks for fixing this!

PTAL

For 2, since we do not kill isolates with a FlutterView attached (which includes android alarm manager) there is no difference in functionality, though the isolate itself still can't be restarted.

The alarm manager plugin shouldn't have a view attached, unless a FlutterEngine instance does by default?

I think flutter view = FlutterEngine instance, which is what I see when I run an app using android alarm manager:
I/AlarmService(21540): AlarmService started!
Syncing files to device Pixel 4...                                 486ms

Flutter run key commands.
r Hot reload. 🔥🔥🔥
R Hot restart.
h Repeat this help message.
d Detach (terminate "flutter run" but leave application running).
c Clear the screen
q Quit (terminate the application on the device).
 In that case we'll want to figure out how we're going to deal with isolates held via a FlutterEngine. Otherwise, this change LGTM for regularly spawned isolates.


PyInstaller built Package can't run on OSX Catalina 10.15.3

Versions

Python: 3.7.6
OS: Catalina 10.15.3
Kivy: 1.11.1
Kivy installation method: pip install kivy

Description
I tested with a minimal python script, after building with PyInstaller 3.6 with :
pyinstaller -y --clean --windowed --add-data "kivytest.kv":. \
  --exclude-module _tkinter \
  --exclude-module Tkinter \
  --exclude-module enchant \
  --exclude-module twisted \
  kivytest.py

The packed app won't run, error message contains :
[ERROR  ] [Clock       ] Unable to import kivy._clock. Have you perhaps forgotten to compile kivy? Kivy contains Cython code which needs to be compiled. A missing kivy._clock often indicates the Cython code has not been compiled. Please follow the installation instructions and make sure to compile Kivy
 Traceback (most recent call last):
   File "kivytest.py", line 2, in <module>
   File "/Volumes/SSD 1T/Dropbox/[MQ]/Files/Python/test/env37/lib/python3.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 623, in exec_module
     exec(bytecode, module.__dict__)
   File "kivy/app.py", line 319, in <module>
   File "/Volumes/SSD 1T/Dropbox/[MQ]/Files/Python/test/env37/lib/python3.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 623, in exec_module
     exec(bytecode, module.__dict__)
   File "kivy/base.py", line 26, in <module>
   File "/Volumes/SSD 1T/Dropbox/[MQ]/Files/Python/test/env37/lib/python3.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 623, in exec_module
     exec(bytecode, module.__dict__)
   File "kivy/clock.py", line 363, in <module>
   File "kivy/_clock.pyx", line 9, in init kivy._clock
 ModuleNotFoundError: No module named 'kivy.weakmethod'
[12719] Failed to execute script kivytest
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

But doing the same thing on my High Sierra 10.13.6 computer is no problem (altho the app created on it won't run on the Catalina)
Code and Logs
import kivy
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout

class Base(BoxLayout):
    pass

class KivyTest(App):
    def build(self):
        return Base()

if __name__ == '__main__':
    KivyTest().run()

#:kivy 1.11.1

<Base>:
    Button:
        text:'a'

Just found out it works on internal hard drive on the Catalina machine. Why?
Thanks.

Same question

Need more investigation, could be a permissions issue with access to the drive.

@Julian-O This can be closed.
I routinely use pyinstaller with kivy with a spec file.   When debugging build issues with pyinstaller it is best to look at the kivy log to determine the cause of the failure.
Attached below is a spec file I use on MacOS.
# -*- mode: python -*-

block_cipher = None
app_name = 'Your App Name'
mac_icon = '../Images/your_logo_512.icns'  # use 512 x 512 for mac icon

a = Analysis(['../main.py'],
             pathex=[],
             binaries=[],
             datas=[('../*.kv', '.'),
                    ('../Images/*.png', './Images')],  # customize for your code
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=['_tkinter', 'Tkinter', 'enchant', 'twisted'],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)

pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)

exe = EXE(pyz,
          a.scripts,
          [],
          exclude_binaries=True,
          name=app_name,
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=False,
          console=False)

coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=False,
               name=app_name)

app = BUNDLE(coll,
             name=app_name + '.app',
             icon=mac_icon,
             bundle_identifier=None)


Inference file

Is there a inference file for this ?

Hello, we didn't setup a config file for inference, bu you can find a trained model here : https://www.dropbox.com/s/vnkbfrui1ldwtah/checkpoint.pth?dl=0


Send event to host if plugin failed to load

Based on the discussion with VSCode last week, we need to marshal an event about failing plugin loads.

From https://github.com/angelozerr/tslint-language-service/issues/32, we also need a way for plugins have send events to the host. for instance, in tslint, if a rule is deprecated, the plugin needs to send a warning to the user. currently they use console.log, but obviously this is not what we want.

This doesn't seem to be needed


Adds option to "create table from query" from a visualisation:

Fixes #3192.
With this PR, it's now possible to "create a new dataset from a SQL query" while viewing a visualisation. This option has been added to the SQL warning and to the options menu displayed in the header.
@viddo what do you think?

Frontend tests were OK :+1: (details)

:+1: looks good to me

Frontend tests were OK :+1: (details)

Frontend tests were OK :+1: (details)


pass azure IOT secrets to composite actions via the inputs

With reference to the PR-1018.
Secrets defined in the env section of a GitHub Actions workflow cannot be accessed directly within composite actions. Instead, you need to pass the secrets as inputs to the composite action and then map them as environment variables within the action.

@shjalaI  don’t have merge access for the Eden repo. If you do, please feel free to merge the PRs.

I will merge this once I check it...

Is there any way to test this before merging?

There is one way. We need to modify test.yml to be triggered on pull_request_target - this way GHA would be able to read the secrets and then ideally the secrets would be passed to the composite actions. But to test the end to end the changes of the PR-1011 should be in this PR.


Added "copy profile url" button

On clicking "copy profile url" button, profile URL (/user/:username) will be copied to clipboard.
On visiting this URL, profile page will be displayed and logged in user can follow/unfollow. If the URL is for logged in user then "edit profile" button will be displayed instead of follow/unfollow
Fixes benawad/dogehouse#569

fixed merge conflicts with the Greek translation file

@HarrisonMayotte are we good to merge this?

Sure.

@HarrisonMayotte in the future, wait to merge until I review it when there are backend changes

Sorry about that. Will do.


Install non-olm test failing

See https://github.com/apache/camel-k/actions/runs/6928393029/job/18844111599

Duplicated from #4929


Access Single Phone No.?

How do I get a single phone number from a person?

Have you solved your problem?

Yes, sorry, bad question. Got it

Nevermind! I appreciate your interest and feedback :)


Account deletion

For better or for worse, one of the main reasons people contact support is to ask for their account to be deleted. Most of these requests are due to duplicate accounts. We should add a "delete account" option under account settings so people can request a deletion instead of e-mailing us (which takes up a lot of support's time).
On the account settings page below the password change section, there should be the following text:
If you would like to delete you account click **here**.
When you click on "here" then there should be a dialog box that appears with the following:
Delete account?
Are you sure you want to delete your account? This cannot be undone.
Reason (optional):
[ Free text input box where user can input reason for cancelling]
[Delete account forever]    [Cancel]
Text input into the box for the reason should be sent to<EMAIL_ADDRESS>so we can gather data on why users are deleting their account.

I prefer typing a confirmation text message instead of a button (i.e. please type 'allhandsnofeet', case insensitive)

design idea to spark more ideas
a Delete Account section at the bottom of account settings

followed by a modal pop up

followed by

Please keep GitHub issues for bugs and features which are requested/ready for devs to implement. I have added the "awaiting design" label for now and when we have a finalized design let's remove it and add a link to a finalized mock-up.

Also have a look at what the procedure will be, as discussed in last backend meeting:
https://github.com/Couchers-org/couchers/blob/develop/docs/meetings/backend/Meeting 028.md

Closed in #1630


[Feature request] Provide camera name as an attribute

Is your feature request related to a problem? Please describe.
The entity id in HA does not always match the frigate camera name, with multiple camera integrations i have ended up with entities driveway_1 and then driveway_1_1 provided by frigate. For automations/blueprints it is hard to know what mqtt events to listen to for driveway_1_1
Describe the solution you'd like
Provide the frigate camera name as an attribute or sensor
Describe alternatives you've considered
I have removed my generic camera integrations in the mean time so the entity id's match the frigate camera names
Additional context
This blueprint started stripping _n suffixes only because the actual camera name is not available
https://github.com/SgtBatten/HA_blueprints/issues/32

Thanks @pdx0 . Hoping it's an easy win. Friendly names and entity ids are not always reliable.

Just to make sure I understand, the request is that for the a camera entity in HA to include an attribute in the HA state that includes the Frigate camera_name . Is that correct? How will this be used?
Please note that that camera_name is not a unique identifier in the HA universe. If the user has multiple Frigate instances configured, it's entirely possible there will be two Frigate cameras with the same name. As such, we'd need to also include a client_id attribute to help tell the two apart. client_id and camera_name will be a unique pair.

Is that correct? How will this be used?

Hey DD. Yes that is correct. The use case that has triggered this particular request is for how i have employed entity selection in the frigate blueprint 2.0 https://community.home-assistant.io/t/frigate-mobile-app-notifications-2-0/559732
Long story short, it uses a filtered entity selector to only show frigate camera entities in the dropdown. (side note: this depends heavily on the fact frigate adds a device class of camera to the actual cameras and not the additional entities created for each object e.g camera.front_person doesn;t get the device class but camera.font does. Please don't change that )
The entity id is then used to match frigate events and trigger the automation. As you know, the entity id is not always consistent. I implemented a strip function to trim away _1 _2 etc from the entity id as this caused issues for inexperienced HA users. But some users actually have two front cams and use _2 legitimately. So it hurts one group or another either way.
The purpose of this feature request would allow me to leverage the frigate camera name correctly irrespective of the HA entity_id, but still allow the entity selector to be used to make choosing the trigger camera easy.

Please note that that camera_name is not a unique identifier in the HA universe. If the user has multiple Frigate instances configured, it's entirely possible there will be two Frigate cameras with the same name. As such, we'd need to also include a client_id attribute to help tell the two apart. client_id and camera_name will be a unique pair.

Had not considered this, and yes a client id attribute would indeed solve it. As it has never been raised, it would be an uncommon use case, but worth considering.


fix link to docs

I can't fix the DCO,
ERROR: Permission to StarRocks/starrocks-kubernetes-operator.git denied to DanRoscigno.
fatal: Could not read from remote repository.


Confirm license

Simple text referencing CC-BY 4.0 license used as placeholder

By default and where possible we should use open government licenses, e.g.
https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/
license could then become
Model data produced by the Met Office Hadley Centre is licensed under the Open Government Licence v3.0 (https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/)

For which a regex of Model data produced by .* is licensed under .* (http.*) would work if flexibility is needed.

open government license used -- full license hard coded in the CVs to
ARISE data produced by MOHC is licensed under the Open Government License v3 (https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/)
for simplicity


Error syncing pod, skipping: failed to "StartContainer" for "kubernetes-pod-ip-finder" with CrashLoopBackOff: "Back-off 5m0s restarting failed container=kubernetes-pod-ip-finder pod=kubernetes-pod-ip-finder-2m0c3_default(082f216a-11c5-11e7-b65c-0e91cf24fb2c)"

This is a...

[ ] Feature Request
[x] Bug Report

Problem:
Proposed Solution:
Page to Update:
http://kubernetes.io/...

I am trying to create a Replicationcontroller with the bellow yaml file. But it giving CrassLoopBackoff.
Why is this happening? any idea
Copyright 2016, Google, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
apiVersion: v1
kind: ReplicationController
metadata:
name: kubernetes-pod-ip-finder
spec:
replicas: 1
selector:
name: kubernetes-pod-ip-finder
template:
metadata:
labels:
name: kubernetes-pod-ip-finder
spec:
containers:
- image: thesandlord/kubernetes-pod-ip-finder
name: kubernetes-pod-ip-finder
ports:
- containerPort: 3000
name: http-server

@python225 It doesn't look like you provided enough info to find out what page you had the issue or enough logs to understand what is going on.
I suggest you to close this issue and asking it on user forums listed at https://kubernetes.io/community/#talkToUs instead. This issue tracker is to track docs issues.
Also please use code blocks in your issue reports to format them properly.


Screenshots

I love this project! Can you add some screenshots so we can see what it looks like? Maybe also a small demo showing how to consume content from the server from the command line?

Whew, I completely missed this! I've been on a massive programming hiatus for a while now, but I plan on restarting things in the coming weeks. I'll add some screenshots then :)
What do you mean by consuming content from the server from the command line?

I guess I've just never seen Hypermedia to render TUIs. How does that work? Can we see it in action?

I like to think of celx more as a browser than just a framework, i.e. Chrome instead of React (and I guess React's place would be taken by Celadon), but one that consumes a special XML schema as opposed to HTML (which in itself is a special XML schema, but that's a conversation for a different day).
Here's a small example. I'm writing it in PHP since it's about the simplest looking router I can think of making, but the beauty of the system is any language with any templating solution should work for the same causes.
Note that <?= $something ?> is a shorthand for <?php echo $something ?>, just in case that bit of PHP syntax is confusing.
<?php
$route = $_SERVER["REQUEST_URI"];
$parts = explode("/", $route);
$page = $parts[1];

// Handle a phony "update-resource" POST call
if ($_SERVER["REQUEST_METHOD"] == "POST" && $page == "update-resource") {
    echo "<text>The time is " . date("h:i:sa") . "</text>";
    return;
}

// A simple component with some repeated styling. You could also put these
// styles into a Yaml file, and select something like `#nav *> link`!
function nav_link(string $text, string $link) { ?>
    <link to="<?= $link ?>">
        <style>
            /hover:
                content_style: underline
        </style>
        <?= $text ?>
    </link>
<?php } ?>

<celx version="0">
    <page>
        <tower>
            <style> frame: light </style>
            <row>
                <text>
                    <style> width: null </style>
                    Welcome!
                </text>
                <row>
                    <?= nav_link("Blog", "/blog") ?>
                    <?= nav_link("History", "/history") ?>
                    <?= nav_link("Dogfood", "/dogfood") ?>
                </row>
            </row>
            <tower>
                <!--
                    Some styling for this tower, and some for any Towers that are direct
                    descendants (`>`) of it.
                -->
                <style>
                    frame: padded
                    alignment: [center, start]

                    \> Tower:
                        alignment: [center, center]
                        gap: 1
                </style>
                <text>This is the "/<?= $page ?>" page. Hello!</text>
                <tower>
                    <!-- A simple increment button, using Lua. -->
                    <button>
                        Count: $count
                        <script>
                        count = 0

                        function on_submit(btn)
                            count = count + 1
                            return true
                        end
                        </script>
                    </button>
                    <!--
                        A server button, using our hypermedia instruction language
                        Chocl. Sends a POST request to /update-resource, and swaps its
                        result in as the content of #output.

                        Equivalent to:
                            hx-post="/update-resource"
                            hx-target="#output"
                            hx-swap="innerHTML" (though this one is default for HTMX)
                    -->
                    <button on-submit="POST /update-resource; swap in #output">
                        Ask and ye shall receive
                    </button>
                </tower>
                <tower eid="output"></tower>
            </tower>
        </tower>
    </page>
</celx>

This creates a (very simple) application that's pretty similar to a basic website. It has some routing using the <link> elements, interactivity both client side (with Lua) and server side (using an HTMX inspired system).
Some of the layout engine is a bit all over the place, it's one of my primary goals before 1.0. I also want celx to be an open standard, so I plan to create a detailed specification of the XML format, markup language, styling & layout systems before going stable.
Thank you for your interest! I've been off from programming for a minute, this is the exact kind of comment I needed to dust off this project. Very excited for the future!

Hey! That actually sounds pretty cool as a TUI-App Backend! Would you mind creating a minimal working example in python? That is currently the only problem i have found before using this library as backend for an Editor for my Textadventure-Engine!


Add Trove Classifiers

In your setup.py file you should have the proper trove classifier specifying what versions of Python you support. Ideally you should also specify each major/minor version of Python that you do support, e.g. Programming Language :: Python :: 2.7.
There are potentially many others you can categorize your module with
https://pypi.python.org/pypi?%3Aaction=list_classifiers

Thank you, provided classifiers is quite enough in my opinion

@corpix thanks! Can you push to PyPi?
On Oct 7, 2017 1:00 PM, "corpix"<EMAIL_ADDRESS>wrote:

Thank you, provided classifiers is quite enough in my opinion
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/corpix/shortid/pull/6#issuecomment-334962059, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABnZMu5AqLRM63pUErMrMiXlRoRR2M4dks5sp9hHgaJpZM4PxTpT
.


Tabs + New-HTMLTable -FixedFooter

I've noticed an issue when switching tabs using tables with -FixedFooter
If the footer is 'floating' when you switch tabs, the footer stays in view.
$data = Get-Process | select -First 50

New-HTML -Online -FilePath $env:TEMP\test.html -ShowHTML {

  New-HTMLTab -Name 'Tab1' {

  }
  New-HTMLTab -Name 'Tab2' {

    New-HTMLSection -HeaderText 'Test Table' {

      New-HTMLTable -DataTable $data -DisablePaging -FixedFooter

    }

  }

}

Switch to Tab2, you should have a floating footer (else select more processes), then switch back to Tab1, you'll find the table footer from Tab2 still visible.
I also noticed that -FixedFooter auto enables -FixedHeader - is this intentional?

Hi, I see the issue. I will have to ask DataTables support if this can be prevented. Fixed Footer/Fixed Header is probably a bug.
But having it visible only on one tab, that may be as designed as a table is not expecting to have boundaries. I'll open an issue on their end.

2nd issue is fixed.
1st issue requires implementation of: https://datatables.net/extensions/fixedheader/examples/options/show-hide.html as per help from DataTables developers: https://datatables.net/forums/discussion/comment/182051#Comment_182051


Fix Markdown syntax

We actually caught this at the same time. I wrote this readme awhile ago, and didn't notice my mistake until I published everything. Oh the shame!
Anyway, Thanks for contributing. The issue has been fixed, albeit not by merging your branch.


Matrix visualization is buggy

when aggregated, the placement histograms of matrices is being shifted with every group

Seems to be fixed.


UI: Display Firewall, LB and Port Forwading rules tab for CKS clusters deployed on isolated networks

Description
This PR fixes a small UI regression to display FW, PF and LB tabs for CKS on isolated networks

Types of changes

[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] New feature (non-breaking change which adds functionality)
[X] Bug fix (non-breaking change which fixes an issue)
[ ] Enhancement (improves an existing feature and functionality)
[ ] Cleanup (Code refactoring and cleanup, that may add test cases)
[ ] build/CI
[ ] test (unit or integration test code)

Feature/Enhancement Scale or Bug Severity
Bug Severity

[ ] BLOCKER
[ ] Critical
[ ] Major
[X] Minor
[ ] Trivial

Screenshots (if appropriate):
Before Fix:

After fix:

How Has This Been Tested?

How did you try to break this feature and the system with this change?

Done @weizhouapache

@blueorangutan ui

@weizhouapache a Jenkins job has been kicked to build UI QA env. I'll keep you posted as I make progress.

UI build: :heavy_check_mark:
Live QA URL: https://qa.cloudstack.cloud/simulator/pr/9458 (QA-JID-411)