SuperLU solver not freeing memory

I have set up the solution of a system of equations with superlu. The code is the following
    //Create the complete bilinear operator:
    //
    //   H = [ M    C ]
    //       [ C^t  cm D ]
    Array2D<HypreParMatrix*> hBlocks(2,2);
    hBlocks = NULL;
    hBlocks(0, 0) = M;
    hBlocks(0, 1) = C;
    hBlocks(1, 0) = C->Transpose();
    hBlocks(1, 1) = D;

    Array2D<double> blockCoeff(2,2);
    blockCoeff(0, 0) = 1.;
    blockCoeff(0, 1) = -1.;
    blockCoeff(1, 0) = -1.;
    blockCoeff(1, 1) = -1.;

    HypreParMatrix *H = HypreParMatrixFromBlocks(hBlocks, &blockCoeff);

    SuperLUSolver *superlu = new SuperLUSolver(MPI_COMM_WORLD);
    Operator *SLU_A = new SuperLURowLocMatrix(*H);
    superlu->SetOperator(*SLU_A);
    superlu->SetPrintStatistics(true);
    superlu->SetSymmetricPattern(true);
    superlu->SetColumnPermutation(superlu::PARMETIS);
    superlu->SetIterativeRefine(superlu::SLU_DOUBLE);

    //Solve the linear system Ax=B
    X.Randomize();
    superlu->Mult(B, X);

    //Recover the solution on each proccesor
    w->Distribute(&(X.GetBlock(0)));
    for (int ii = 0; ii < w->Size(); ii++)
        (*w)(ii) += (*w_aux)(ii);

    psi->Distribute(&(X.GetBlock(1)));
    for (int ii = 0; ii < psi->Size(); ii++)
        (*psi)(ii) += (*psi_aux)(ii);

    v = new ParGridFunction(fespace_v);
    GradientGridFunctionCoefficient psi_grad(psi);
    MatrixFunctionCoefficient rot(dim, rot_f);
    MatrixVectorProductCoefficient rV(rot, psi_grad);
    v->ProjectDiscCoefficient(rV, GridFunction::ARITHMETIC);

    //Delete used memory
    delete H;
    delete superlu;
    delete SLU_A;

Then I used the same code to solve for the velocity in a time-dependent advection-diffusion equation. I noticed that with every iteration the program kept increasing its RAM usage. So, I went back to my superlu static solver and put it in a for loop and found out that it behaved in the same way. I really don't understand because delete superlu should call the destructor. Further on the program, all the matrixes are deleted and at the end it frees all the memory. The problem is that it doesn't free the memory before the program ends.
Can someone help me solve this problem, or give some advice on how to find the thing that's not freeing memory? I used sanitizers and valgrind but they dint say much.

To complement this, I have been searching for a potential solution and found this http://www.elmerfem.org/forum/viewtopic.php?t=3625.  I also have found people reporting similar leaks.

@cdelv, Thanks for reporting this.
Just for us to test this can you let us know if you are using mfem's master branch or not and with which version of SuperLU you are linking with?
Thanks,
Socratis

@cdelv, would you mind trying mfem/examples/superlu/ex1p.cpp , putting the superlu solver in a loop and let us know if you see the same kind of issue?
Thanks,
Socratis

Ok, I will and let you know.

@psocratis I ran example 1 and had similar behavior. However, if the for loop only gets the mult function there's no leak. If I loop over all the solver set up it happens, this is step 13. To make the memory usage big enough to have a significant leak I used 2 parallel refinements with 4 cores. The rest of the parameters I left as default in the example.

@cdelv, hmm... thanks for doing that. I did the same test as well and I don't see a leak. I do use MFEM master branch though along with SuperLU_dist v.6.3.1. I can look into it more carefully, and get back to you.
Thanks,
Socratis

@psocratis don't you get that each time it iterates it uses more ram? I found that Valgrind doesn't report it as a leak I guess because it frees all the memory at the end, but it doesn't free it when I call delete.

@psocratis don't you get that each time it iterates it uses more ram? I found that Valgrind doesn't report it as a leak I guess because it frees all the memory at the end, but it doesn't free it when I call delete.

Exactly, I don't see the ram increasing ...

then it must be a bug in the spack version of MFEM or SUPERLU. How fixes that? Should I share this with spack developers?
Also, I'm using openmpi, I don't have mpich.

I also just noticed this #2368 . So let me look into this more carefully, and I will get back to you.
Thanks,
Socratis

@psocratis I checked and spack uses superlu_dist version 6.4.0 and mfem 4.2.0

@psocratis I installed MFEM from the master branch of the repository and superlu_dist 6.3.1 and the memory problem was still there. I also used superlu_dist 6.4.0 with the same results. I'm using mpi 4.0.5.
My Linux distro is Pop OS 20.10 based on ubuntu and I used the CMake install.

Update, I change the code to use smart pointers, so the memory management is done automatically. That way is not an implementation error.
    std::unique_ptr<SuperLUSolver> superlu(new SuperLUSolver(MPI_COMM_WORLD));
    std::unique_ptr<SuperLURowLocMatrix> SLU_A(new SuperLURowLocMatrix(*H));

for example. The problem with the memory still happens. So the problem has to be in the destructor of the solver.

for example. The problem with the memory still happens. So the problem has to be in the destructor of the solver.

Just to make sure....you put a loop maybe 100-200 times and it always keeps increasing? How are checking the ram usage btw?

for example. The problem with the memory still happens. So the problem has to be in the destructor of the solver.

Just to make sure....you put a loop maybe 100-200 times and it always keeps increasing? How are you checking the ram usage btw?

Ok I think I might be on to something ....
Can you try puting this call DismantleGrid(); in the end of the SuperLUSolver destructor and let me know if this goes away. I did see some leaks eventually, and with that addition, they went away ...
Thanks

So, eventually I was able to pin down a leak.
Following the comment here, I put the call superlu->DismantleGrid(); right after the solve (superlu->Mult(B, X);) and before deleting the pointers. There are no leaks reported after doing this. Can you try this as well and let me know if anything changes?
Thanks,
Socratis

@psocratis  I monitored the ram usage during execution with htop, a resource monitor. I know that thas not the most accurate way of doing it but for me, it has worked well many times before.  And for the tests, I shut down all the applications except for the terminal. I noticed the problem because the program filled the memory of my computer and crashed. My friends reported the same thing in their machines.
Following your advice, I did the following to the end of the for of example 1
   superlu->SetOperator(*SLU_A);
   superlu->SetPrintStatistics(true);
   superlu->Mult(B, X);
   superlu ->DismantleGrid();

   delete superlu;
   delete SLU_A;

And didn't work. We also tried in other programs that use superlu solver calling it multiple times and dint work. Do you mean we should edit the MFEM source code?

And didn't work. We also tried in other programs that use superlu solver calling it multiple times and dint work. Do you mean we should edit the MFEM source code?

@cdelv
Thanks for checking this. No I don't mean editing the MFEM source code, not just yet anyway. Can you try commenting out the SetOperator and the mult calls just to make sure that this is indeed coming from this? I'll have to dig into this more carefully.
Thanks,
Socratis

@psocratis
Well it ran very very fast, so I increase the number of iterations to 10^6. The program used little memory and maintained quite constant. So I guess that the problem is in the mult function after all. I did the test with both mult and set operator commented and then with only mult commented and it behaved well.
If I put the for loop only in the mult function it doesn't leak. Its quite weird.

Measuring memory usage of a program with top is not deterministic, nor an indicator that a program is leaking memory. Depending on the decision of the memory pool of the operating system, the memory usage won't decrease even if there is an instruction to release memory in your program.
Can you provide a minimal working example where we should be able to reproduce the error?

yeah sure, where can I send you the code?

A minimal working example should be posted here in a code block.

Well, I will post example 1 with the for loop. More complicated code wont fit in a simple code block. Also, variations like calling the solver from a function exhibit the same behavior.
#include "mfem.hpp"
#include <fstream>
#include <iostream>

#ifndef MFEM_USE_SUPERLU
#error This example requires that MFEM is built with MFEM_USE_SUPERLU=YES
#endif

using namespace std;
using namespace mfem;

int main(int argc, char *argv[])
{
   // 1. Initialize MPI.
   int num_procs, myid;
   MPI_Init(&argc, &argv);
   MPI_Comm_size(MPI_COMM_WORLD, &num_procs);
   MPI_Comm_rank(MPI_COMM_WORLD, &myid);

   // 2. Parse command-line options.
   const char *mesh_file = "mesh.msh";
   int order = 1;
   const char *device_config = "cpu";
   bool visualization = true;
   int slu_colperm = 4;
   int slu_rowperm = 1;
   int slu_iterref = 2;

   OptionsParser args(argc, argv);
   args.AddOption(&mesh_file, "-m", "--mesh",
                  "Mesh file to use.");
   args.AddOption(&order, "-o", "--order",
                  "Finite element order (polynomial degree) or -1 for"
                  " isoparametric space.");
   args.AddOption(&device_config, "-d", "--device",
                  "Device configuration string, see Device::Configure().");
   args.AddOption(&visualization, "-vis", "--visualization", "-no-vis",
                  "--no-visualization",
                  "Enable or disable GLVis visualization.");
   args.AddOption(&slu_colperm, "-cp", "--colperm",
                  "SuperLU Column Permutation Method:  0-NATURAL, 1-MMD-ATA "
                  "2-MMD_AT_PLUS_A, 3-COLAMD, 4-METIS_AT_PLUS_A, 5-PARMETIS "
                  "6-ZOLTAN");
   args.AddOption(&slu_rowperm, "-rp", "--rowperm",
                  "SuperLU Row Permutation Method:  0-NOROWPERM, 1-LargeDiag");
   args.AddOption(&slu_iterref, "-rp", "--rowperm",
                  "SuperLU Iterative Refinement:  0-NOREFINE, 1-Single, "
                  "2-Double, 3-Extra");

   args.Parse();
   if (!args.Good())
   {
      if (myid == 0)
      {
         args.PrintUsage(cout);
      }
      MPI_Finalize();
      return 1;
   }
   if (myid == 0)
   {
      args.PrintOptions(cout);
   }

   // 3. Enable hardware devices such as GPUs, and programming models such as
   //    CUDA, OCCA, RAJA and OpenMP based on command line options.
   Device device(device_config);
   if (myid == 0) { device.Print(); }

   // 4. Read the (serial) mesh from the given mesh file on all processors.  We
   //    can handle triangular, quadrilateral, tetrahedral, hexahedral, surface
   //    and volume meshes with the same code.
   Mesh mesh(mesh_file, 1, 1);
   int dim = mesh.Dimension();

   // 5. Refine the serial mesh on all processors to increase the resolution. In
   //    this example we do 'ref_levels' of uniform refinement.  Define a parallel mesh by a partitioning of the serial mesh. Refine
   //    this mesh further in parallel to increase the resolution. Once the
   //    parallel mesh is defined, the serial mesh can be deleted.
   ParMesh pmesh(MPI_COMM_WORLD, mesh);
   mesh.Clear();
   {
      int par_ref_levels = 2;
      for (int l = 0; l < par_ref_levels; l++)
      {
         pmesh.UniformRefinement();
      }
   }

   // 7. Define a parallel finite element space on the parallel mesh. Here we
   //    use continuous Lagrange finite elements of the specified order. If
   //    order < 1, we instead use an isoparametric/isogeometric space.
   FiniteElementCollection *fec;
   bool delete_fec;
   if (order > 0)
   {
      fec = new H1_FECollection(order, dim);
      delete_fec = true;
   }
   else if (pmesh.GetNodes())
   {
      fec = pmesh.GetNodes()->OwnFEC();
      delete_fec = false;
      if (myid == 0)
      {
         cout << "Using isoparametric FEs: " << fec->Name() << endl;
      }
   }
   else
   {
      fec = new H1_FECollection(order = 1, dim);
      delete_fec = true;
   }
   ParFiniteElementSpace fespace(&pmesh, fec);
   HYPRE_Int size = fespace.GlobalTrueVSize();
   if (myid == 0)
   {
      cout << "Number of finite element unknowns: " << size << endl;
   }

   // 8. Determine the list of true (i.e. parallel conforming) essential
   //    boundary dofs. In this example, the boundary conditions are defined
   //    by marking all the boundary attributes from the mesh as essential
   //    (Dirichlet) and converting them to a list of true dofs.
   Array<int> ess_tdof_list;
   if (pmesh.bdr_attributes.Size())
   {
      Array<int> ess_bdr(pmesh.bdr_attributes.Max());
      ess_bdr = 1;
      fespace.GetEssentialTrueDofs(ess_bdr, ess_tdof_list);
   }

   // 9. Set up the parallel linear form b(.) which corresponds to the
   //    right-hand side of the FEM linear system, which in this case is
   //    (1,phi_i) where phi_i are the basis functions in fespace.
   ParLinearForm b(&fespace);
   ConstantCoefficient one(1.0);
   b.AddDomainIntegrator(new DomainLFIntegrator(one));
   b.Assemble();

   // 10. Define the solution vector x as a parallel finite element grid function
   //     corresponding to fespace. Initialize x with initial guess of zero,
   //     which satisfies the boundary conditions.
   ParGridFunction x(&fespace);
   x = 0.0;

   // 11. Set up the parallel bilinear form a(.,.) on the finite element space
   //     corresponding to the Laplacian operator -Delta, by adding the Diffusion
   //     domain integrator.
   ParBilinearForm a(&fespace);
   a.AddDomainIntegrator(new DiffusionIntegrator(one));

   // 12. Assemble the parallel bilinear form and the corresponding linear
   //     system, applying any necessary transformations such as: parallel
   //     assembly, eliminating boundary conditions, applying conforming
   //     constraints for non-conforming AMR, static condensation, etc.
   a.Assemble();

   OperatorPtr A;
   Vector B, X;
   a.FormLinearSystem(ess_tdof_list, x, b, A, X, B);

   // 13. Solve the linear system A X = B utilizing SuperLU.
   for(int i=0; i<1000000; i++)
     {
       SuperLUSolver *superlu = new SuperLUSolver(MPI_COMM_WORLD);
       Operator *SLU_A = new SuperLURowLocMatrix(*A.As<HypreParMatrix>());
       superlu->SetPrintStatistics(true);
       superlu->SetSymmetricPattern(false);

       if (slu_colperm == 0)
	 {
	   superlu->SetColumnPermutation(superlu::NATURAL);
	 }
       else if (slu_colperm == 1)
	 {
	   superlu->SetColumnPermutation(superlu::MMD_ATA);
	 }
       else if (slu_colperm == 2)
	 {
	   superlu->SetColumnPermutation(superlu::MMD_AT_PLUS_A);
	 }
       else if (slu_colperm == 3)
	 {
	   superlu->SetColumnPermutation(superlu::COLAMD);
	 }
       else if (slu_colperm == 4)
	 {
	   superlu->SetColumnPermutation(superlu::METIS_AT_PLUS_A);
	 }
       else if (slu_colperm == 5)
	 {
	   superlu->SetColumnPermutation(superlu::PARMETIS);
	 }
       else if (slu_colperm == 6)
	 {
      superlu->SetColumnPermutation(superlu::ZOLTAN);
	 }

       if (slu_rowperm == 0)
	 {
      superlu->SetRowPermutation(superlu::NOROWPERM);
	 }
       else if (slu_rowperm == 1)
	 {
#ifdef MFEM_USE_SUPERLU5
	   superlu->SetRowPermutation(superlu::LargeDiag);
#else
	   superlu->SetRowPermutation(superlu::LargeDiag_MC64);
#endif
	 }

       if (slu_iterref == 0)
	 {
	   superlu->SetIterativeRefine(superlu::NOREFINE);
	 }
       else if (slu_iterref == 1)
	 {
	   superlu->SetIterativeRefine(superlu::SLU_SINGLE);
	 }
       else if (slu_iterref == 2)
	 {
	   superlu->SetIterativeRefine(superlu::SLU_DOUBLE);
	 }
       else if (slu_iterref == 3)
	 {
	   superlu->SetIterativeRefine(superlu::SLU_EXTRA);
	 }
       superlu->SetOperator(*SLU_A);
       superlu->SetPrintStatistics(true);
       superlu->Mult(B, X);
       superlu ->DismantleGrid();

       delete superlu;
       delete SLU_A;
     }

   // 14. Recover the parallel grid function corresponding to X. This is the
   //     local finite element solution on each processor.
   a.RecoverFEMSolution(X, b, x);

   // 15. Save the refined mesh and the solution in parallel. This output can
   //     be viewed later using GLVis: "glvis -np <np> -m mesh -g sol".
   {
      ostringstream mesh_name, sol_name;
      mesh_name << "mesh." << setfill('0') << setw(6) << myid;
      sol_name << "sol." << setfill('0') << setw(6) << myid;

      ofstream mesh_ofs(mesh_name.str().c_str());
      mesh_ofs.precision(8);
      pmesh.Print(mesh_ofs);

      ofstream sol_ofs(sol_name.str().c_str());
      sol_ofs.precision(8);
      x.Save(sol_ofs);
   }

   // 16. Send the solution by socket to a GLVis server.
   if (visualization)
   {
      char vishost[] = "localhost";
      int  visport   = 19916;
      socketstream sol_sock(vishost, visport);
      sol_sock << "parallel " << num_procs << " " << myid << "\n";
      sol_sock.precision(8);
      sol_sock << "solution\n" << pmesh << x << flush;
   }

   // 17. Free the used memory.
   if (delete_fec)
   {
      delete fec;
   }
   MPI_Finalize();

   return 0;
}

And what mesh are you using? Does it happen with the default meshes in mfem?

Im using this simple mesh generated with gmsh. I will test MFEM default meshes and let you know
$MeshFormat
2.2 0 8
$EndMeshFormat
$PhysicalNames
5
1 1 "down"
1 2 "top"
1 3 "left"
1 4 "right"
2 5 "Sea"
$EndPhysicalNames
$Nodes
143
1 0 0 0
2 10 0 0
3 10 10 0
4 0 10 0
5 1 0 0
6 2 0 0
7 3 0 0
8 4 0 0
9 5 0 0
10 6 0 0
11 7 0 0
12 8 0 0
13 9 0 0
14 10 1 0
15 10 2 0
16 10 3 0
17 10 4 0
18 10 5 0
19 10 6 0
20 10 7 0
21 10 8 0
22 10 9 0
23 9 10 0
24 8 10 0
25 7 10 0
26 6 10 0
27 5 10 0
28 4 10 0
29 3 10 0
30 2 10 0
31 1 10 0
32 0 9 0
33 0 8 0
34 0 7 0
35 0 6 0
36 0 5 0
37 0 4 0
38 0 3 0
39 0 2 0
40 0 1 0
41 9.133974596215561 5.5 0
42 4.636303417098427 9.059727590364488 0
43 4.639102936910168 0.9500008811816061 0
44 0.8660254037844384 5.5 0
45 9.133974596215563 3.5 0
46 6.50920199901657 9.1114569792819 0
47 6.512758904849833 0.8857995134062442 0
48 0.8660254037844384 3.5 0
49 2.5 9.133974596215563 0
50 9.138693290134388 7.491826982387224 0
51 2.520415328370953 0.8872509776491073 0
52 0.7959225689634009 7.459788032323782 0
53 8.368818016085651 0.9007714138841676 0
54 8.408174380942597 9.094302752559205 0
55 0.9549528281023978 1.5544405458943 0
56 9.138693290134389 2.508173017612776 0
57 8.268735641417594 3.001362169602128 0
58 8.268080267262201 4.00022702826702 0
59 7.402076709282943 3.500264866311523 0
60 7.401971121224573 4.500081982429755 0
61 6.535931760397936 4.000057808123543 0
62 6.535911836214508 5.000023298425547 0
63 5.669880785559132 4.500013517758179 0
64 5.669876523716736 5.500006136030618 0
65 4.803849468480077 5.000003275631463 0
66 4.803848482930974 6.000001568610344 0
67 4.80384919323804 4.00000279889827 0
68 3.937822325664775 4.500000263541651 0
69 6.535901217194109 6.000004905742692 0
70 3.937822468192349 3.500000510406649 0
71 4.803847895731384 3.000000551550815 0
72 3.071796844197701 4.00000012899138 0
73 3.071796807496 5.000000065422169 0
74 3.071796831250595 3.000000106566334 0
75 6.535929434224238 3.000053779072508 0
76 2.205771365940052 4.499999999999996 0
77 2.205771365940052 5.499999999999996 0
78 3.071796776019743 6.000000010903691 0
79 2.205771365940053 6.499999999999996 0
80 3.0717967707737 7.000000001817279 0
81 2.217101144883348 7.481067630677528 0
82 3.032091287815446 8.145899316879582 0
83 3.93782217350893 7.499999999999996 0
84 8.27501329042887 1.991797573767796 0
85 7.401934391357019 5.500018364432998 0
86 7.401926027820381 6.500003878362613 0
87 6.53589923011317 7.000001464017548 0
88 7.401924302717451 7.500000890396692 0
89 6.528529953070857 8.025174079608163 0
90 5.66836161380589 7.504258351074138 0
91 7.426237728682217 8.507269252472398 0
92 5.607707426714185 8.508900528253136 0
93 4.793453728301794 8.001251432412332 0
94 8.268736100291671 6.998638625191088 0
95 8.267980694117673 5.000054562521629 0
96 5.669876198650419 3.500005572999237 0
97 5.669878745306579 2.50000998393709 0
98 4.803847577293372 1.999999999999993 0
99 6.53589838486225 1.999999999999996 0
100 3.948185257032031 2.517949387185086 0
101 3.035403696774028 1.856955464515777 0
102 2.214991334530517 2.510220805667021 0
103 5.627283536167732 1.501439998622024 0
104 7.432402064145548 1.482844822877428 0
105 9.134001692301833 4.500046931798108 0
106 9.134892196512123 6.498410934596385 0
107 8.301008760416142 8.007166732888324 0
108 3.5 9.133974596215563 0
109 1.505932316993227 9.170502595851184 0
110 5.669622440842375 6.500712070912555 0
111 8.26824066771907 5.999521060850785 0
112 0.8660254037844375 4.5 0
113 0.8154625002685538 2.540998849579219 0
114 3.5 0.8660254037844375 0
115 0.8660254037844375 6.5 0
116 3.937822325672607 6.500000263555217 0
117 2.205771365940051 3.499999999999996 0
118 3.937822697710696 5.500000907944089 0
119 7.408342587393573 2.49605386860523 0
120 4.801821794177094 7.001037281094097 0
121 9.165616675679733 1.542034260871268 0
122 9.179204029437228 8.46947073888594 0
123 1.534846009811132 0.7989182588251706 0
124 0.9385434397696786 8.440933898609099 0
125 1.999999999999999 8.38053117003826 0
126 2.001657094824565 1.619767221838738 0
127 3.999999999999999 1.607695154586731 0
128 3.997918925542147 8.39174722319289 0
129 5.514532766447716 0.6739851280024087 0
130 7.468722821728277 9.342605796862701 0
131 1.535898384862246 4.999999999999996 0
132 1.535898384862248 5.999999999999996 0
133 1.535898384862247 6.999999999999995 0
134 1.535898384862243 2.999999999999999 0
135 1.535898384862247 3.999999999999997 0
136 5.525838045186651 9.341610657998245 0
137 7.473425569297291 0.6438309460829368 0
138 0.7320508075688759 9.267949192431125 0
139 0.7320508075688767 0.7320508075688767 0
140 9.267949192431123 9.267949192431123 0
141 9.267949192431123 0.7320508075688767 0
142 1.513536987473252 2.229790360877329 0
143 1.497493107695735 7.752464146329734 0
$EndNodes
$Elements
284
1 1 2 1 1 1 5
2 1 2 1 1 5 6
3 1 2 1 1 6 7
4 1 2 1 1 7 8
5 1 2 1 1 8 9
6 1 2 1 1 9 10
7 1 2 1 1 10 11
8 1 2 1 1 11 12
9 1 2 1 1 12 13
10 1 2 1 1 13 2
11 1 2 4 2 2 14
12 1 2 4 2 14 15
13 1 2 4 2 15 16
14 1 2 4 2 16 17
15 1 2 4 2 17 18
16 1 2 4 2 18 19
17 1 2 4 2 19 20
18 1 2 4 2 20 21
19 1 2 4 2 21 22
20 1 2 4 2 22 3
21 1 2 2 3 3 23
22 1 2 2 3 23 24
23 1 2 2 3 24 25
24 1 2 2 3 25 26
25 1 2 2 3 26 27
26 1 2 2 3 27 28
27 1 2 2 3 28 29
28 1 2 2 3 29 30
29 1 2 2 3 30 31
30 1 2 2 3 31 4
31 1 2 3 4 4 32
32 1 2 3 4 32 33
33 1 2 3 4 33 34
34 1 2 3 4 34 35
35 1 2 3 4 35 36
36 1 2 3 4 36 37
37 1 2 3 4 37 38
38 1 2 3 4 38 39
39 1 2 3 4 39 40
40 1 2 3 4 40 1
41 2 2 5 1 43 103 98
42 2 2 5 1 82 108 49
43 2 2 5 1 51 114 101
44 2 2 5 1 42 93 92
45 2 2 5 1 84 104 53
46 2 2 5 1 91 107 54
47 2 2 5 1 43 129 103
48 2 2 5 1 49 125 82
49 2 2 5 1 101 126 51
50 2 2 5 1 92 136 42
51 2 2 5 1 54 130 91
52 2 2 5 1 89 91 46
53 2 2 5 1 104 137 53
54 2 2 5 1 46 92 89
55 2 2 5 1 47 104 99
56 2 2 5 1 114 127 101
57 2 2 5 1 82 128 108
58 2 2 5 1 99 103 47
59 2 2 5 1 84 119 104
60 2 2 5 1 107 122 54
61 2 2 5 1 53 121 84
62 2 2 5 1 104 119 99
63 2 2 5 1 124 125 109
64 2 2 5 1 82 125 81
65 2 2 5 1 102 126 101
66 2 2 5 1 98 127 43
67 2 2 5 1 89 92 90
68 2 2 5 1 42 128 93
69 2 2 5 1 123 126 55
70 2 2 5 1 92 93 90
71 2 2 5 1 124 143 125
72 2 2 5 1 91 130 46
73 2 2 5 1 83 120 93
74 2 2 5 1 93 120 90
75 2 2 5 1 94 106 50
76 2 2 5 1 50 107 94
77 2 2 5 1 74 100 70
78 2 2 5 1 58 105 95
79 2 2 5 1 71 97 96
80 2 2 5 1 74 101 100
81 2 2 5 1 70 100 71
82 2 2 5 1 71 98 97
83 2 2 5 1 94 111 106
84 2 2 5 1 106 111 41
85 2 2 5 1 45 105 58
86 2 2 5 1 63 96 61
87 2 2 5 1 97 103 99
88 2 2 5 1 94 107 88
89 2 2 5 1 78 116 80
90 2 2 5 1 60 61 59
91 2 2 5 1 60 85 62
92 2 2 5 1 61 96 75
93 2 2 5 1 62 69 64
94 2 2 5 1 64 110 66
95 2 2 5 1 68 70 67
96 2 2 5 1 85 111 86
97 2 2 5 1 88 107 91
98 2 2 5 1 17 105 45
99 2 2 5 1 19 106 41
100 2 2 5 1 28 108 42
101 2 2 5 1 30 109 49
102 2 2 5 1 95 105 41
103 2 2 5 1 41 111 95
104 2 2 5 1 45 58 57
105 2 2 5 1 60 95 85
106 2 2 5 1 62 85 69
107 2 2 5 1 65 118 68
108 2 2 5 1 110 120 66
109 2 2 5 1 70 71 67
110 2 2 5 1 86 87 69
111 2 2 5 1 78 118 116
112 2 2 5 1 74 102 101
113 2 2 5 1 80 82 81
114 2 2 5 1 90 120 110
115 2 2 5 1 71 96 67
116 2 2 5 1 71 100 98
117 2 2 5 1 58 95 60
118 2 2 5 1 62 63 61
119 2 2 5 1 64 65 63
120 2 2 5 1 65 67 63
121 2 2 5 1 66 118 65
122 2 2 5 1 85 86 69
123 2 2 5 1 72 117 74
124 2 2 5 1 95 111 85
125 2 2 5 1 86 88 87
126 2 2 5 1 89 90 87
127 2 2 5 1 7 51 6
128 2 2 5 1 9 43 8
129 2 2 5 1 43 114 8
130 2 2 5 1 11 47 10
131 2 2 5 1 13 53 12
132 2 2 5 1 34 52 33
133 2 2 5 1 36 44 35
134 2 2 5 1 44 115 35
135 2 2 5 1 38 48 37
136 2 2 5 1 40 55 39
137 2 2 5 1 68 73 72
138 2 2 5 1 73 77 76
139 2 2 5 1 74 117 102
140 2 2 5 1 99 119 75
141 2 2 5 1 80 81 79
142 2 2 5 1 68 72 70
143 2 2 5 1 72 74 70
144 2 2 5 1 73 76 72
145 2 2 5 1 76 117 72
146 2 2 5 1 73 118 78
147 2 2 5 1 78 80 79
148 2 2 5 1 80 83 82
149 2 2 5 1 7 114 51
150 2 2 5 1 34 115 52
151 2 2 5 1 36 112 44
152 2 2 5 1 38 113 48
153 2 2 5 1 55 113 39
154 2 2 5 1 61 75 59
155 2 2 5 1 88 91 89
156 2 2 5 1 8 114 7
157 2 2 5 1 35 115 34
158 2 2 5 1 37 112 36
159 2 2 5 1 48 112 37
160 2 2 5 1 39 113 38
161 2 2 5 1 58 59 57
162 2 2 5 1 57 119 84
163 2 2 5 1 65 68 67
164 2 2 5 1 73 78 77
165 2 2 5 1 58 60 59
166 2 2 5 1 75 119 59
167 2 2 5 1 60 62 61
168 2 2 5 1 62 64 63
169 2 2 5 1 67 96 63
170 2 2 5 1 64 66 65
171 2 2 5 1 69 110 64
172 2 2 5 1 116 118 66
173 2 2 5 1 97 99 75
174 2 2 5 1 78 79 77
175 2 2 5 1 80 116 83
176 2 2 5 1 86 111 94
177 2 2 5 1 88 89 87
178 2 2 5 1 98 103 97
179 2 2 5 1 59 119 57
180 2 2 5 1 68 118 73
181 2 2 5 1 96 97 75
182 2 2 5 1 90 110 87
183 2 2 5 1 16 56 15
184 2 2 5 1 17 45 16
185 2 2 5 1 45 56 16
186 2 2 5 1 18 105 17
187 2 2 5 1 19 41 18
188 2 2 5 1 41 105 18
189 2 2 5 1 20 106 19
190 2 2 5 1 21 50 20
191 2 2 5 1 50 106 20
192 2 2 5 1 24 54 23
193 2 2 5 1 26 46 25
194 2 2 5 1 28 42 27
195 2 2 5 1 29 108 28
196 2 2 5 1 30 49 29
197 2 2 5 1 49 108 29
198 2 2 5 1 31 109 30
199 2 2 5 1 45 57 56
200 2 2 5 1 57 84 56
201 2 2 5 1 66 120 116
202 2 2 5 1 87 110 69
203 2 2 5 1 86 94 88
204 2 2 5 1 116 120 83
205 2 2 5 1 126 142 55
206 2 2 5 1 50 122 107
207 2 2 5 1 15 121 14
208 2 2 5 1 6 123 5
209 2 2 5 1 33 124 32
210 2 2 5 1 22 122 21
211 2 2 5 1 84 121 56
212 2 2 5 1 103 129 47
213 2 2 5 1 46 136 92
214 2 2 5 1 101 127 100
215 2 2 5 1 83 128 82
216 2 2 5 1 47 137 104
217 2 2 5 1 51 123 6
218 2 2 5 1 52 124 33
219 2 2 5 1 56 121 15
220 2 2 5 1 21 122 50
221 2 2 5 1 47 129 10
222 2 2 5 1 9 129 43
223 2 2 5 1 46 130 25
224 2 2 5 1 24 130 54
225 2 2 5 1 26 136 46
226 2 2 5 1 42 136 27
227 2 2 5 1 53 137 12
228 2 2 5 1 11 137 47
229 2 2 5 1 5 139 1
230 2 2 5 1 1 139 40
231 2 2 5 1 2 141 13
232 2 2 5 1 14 141 2
233 2 2 5 1 3 140 22
234 2 2 5 1 23 140 3
235 2 2 5 1 32 138 4
236 2 2 5 1 4 138 31
237 2 2 5 1 109 125 49
238 2 2 5 1 93 128 83
239 2 2 5 1 108 128 42
240 2 2 5 1 100 127 98
241 2 2 5 1 43 127 114
242 2 2 5 1 51 126 123
243 2 2 5 1 55 142 113
244 2 2 5 1 10 129 9
245 2 2 5 1 131 132 44
246 2 2 5 1 115 133 52
247 2 2 5 1 25 130 24
248 2 2 5 1 112 131 44
249 2 2 5 1 44 132 115
250 2 2 5 1 48 135 112
251 2 2 5 1 117 134 102
252 2 2 5 1 132 133 115
253 2 2 5 1 77 132 131
254 2 2 5 1 112 135 131
255 2 2 5 1 113 134 48
256 2 2 5 1 77 131 76
257 2 2 5 1 131 135 76
258 2 2 5 1 76 135 117
259 2 2 5 1 79 132 77
260 2 2 5 1 81 133 79
261 2 2 5 1 134 135 48
262 2 2 5 1 79 133 132
263 2 2 5 1 117 135 134
264 2 2 5 1 27 136 26
265 2 2 5 1 52 143 124
266 2 2 5 1 124 138 32
267 2 2 5 1 123 139 5
268 2 2 5 1 22 140 122
269 2 2 5 1 121 141 14
270 2 2 5 1 12 137 11
271 2 2 5 1 13 141 53
272 2 2 5 1 40 139 55
273 2 2 5 1 54 140 23
274 2 2 5 1 31 138 109
275 2 2 5 1 109 138 124
276 2 2 5 1 53 141 121
277 2 2 5 1 122 140 54
278 2 2 5 1 55 139 123
279 2 2 5 1 125 143 81
280 2 2 5 1 102 142 126
281 2 2 5 1 134 142 102
282 2 2 5 1 113 142 134
283 2 2 5 1 133 143 52
284 2 2 5 1 81 143 133
$EndElements

@jandrej I used MFEM star mesh and the same thing happened.

Here is the peak memory usage for 100 loops
	Command being timed: "./examples/gh2413 --mesh ../data/inline-quad.mesh"
	User time (seconds): 3.58
	System time (seconds): 1.09
	Percent of CPU this job got: 99%
	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:04.68
	Average shared text size (kbytes): 0
	Average unshared data size (kbytes): 0
	Average stack size (kbytes): 0
	Average total size (kbytes): 0
	Maximum resident set size (kbytes): 50276
	Average resident set size (kbytes): 0

and for 1000 loops
	Command being timed: "./examples/gh2413 --mesh ../data/inline-quad.mesh"
	User time (seconds): 34.15
	System time (seconds): 10.64
	Percent of CPU this job got: 99%
	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:44.84
	Average shared text size (kbytes): 0
	Average unshared data size (kbytes): 0
	Average stack size (kbytes): 0
	Average total size (kbytes): 0
	Maximum resident set size (kbytes): 50276
	Average resident set size (kbytes): 0

The value of Maximum resident set size indicates the peak memory usage.

@jandrej
Running the same tes I have for 100 loops
	Command being timed: "mpirun -np 4 ./a.out"
	User time (seconds): 19.00
	System time (seconds): 0.74
	Percent of CPU this job got: 373%
	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:05.28
	Average shared text size (kbytes): 0
	Average unshared data size (kbytes): 0
	Average stack size (kbytes): 0
	Average total size (kbytes): 0
	Maximum resident set size (kbytes): 360760

and for 1000
Command being timed: "mpirun -np 4 ./a.out"
	User time (seconds): 241.10
	System time (seconds): 6.51
	Percent of CPU this job got: 397%
	Elapsed (wall clock) time (h:mm:ss or m:ss): 1:02.26
	Average shared text size (kbytes): 0
	Average unshared data size (kbytes): 0
	Average stack size (kbytes): 0
	Average total size (kbytes): 0
	Maximum resident set size (kbytes): 3289836

Then we narrowed the problem down to the mesh it seems. I am not familiar with gmsh meshes causing these types of issues. They are used by a variety of users.

@jandrej It seems to be something of the parallel rutin. I ran the test again not using mpirun and these are the results
for 100 loop
	Command being timed: "./a.out"
	User time (seconds): 4.41
	System time (seconds): 0.02
	Percent of CPU this job got: 92%
	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:04.79
	Average shared text size (kbytes): 0
	Average unshared data size (kbytes): 0
	Average stack size (kbytes): 0
	Average total size (kbytes): 0
	Maximum resident set size (kbytes): 50700

for 1000 loops
	Command being timed: "./a.out"
	User time (seconds): 45.04
	System time (seconds): 0.09
	Percent of CPU this job got: 99%
	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:45.50
	Average shared text size (kbytes): 0
	Average unshared data size (kbytes): 0
	Average stack size (kbytes): 0
	Average total size (kbytes): 0
	Maximum resident set size (kbytes): 50744

Also, we have used this same mesh for multiple programs before and dint have these problems.

Duplicate of #2368. Closing.

@cdelv, can you test using #2420 ?

@psocratis help me, please. I'm a bit clueless about what should I do. The change is already in the master branch? so, I reinstall MFEM? after that, how do I approve?

@psocratis help me, please. I'm a bit clueless about what should I do. The change is already in the master branch? so, I reinstall MFEM? after that, how do I approve?

@cdelv, You can repull master and then switch to the branch slu-destroy-fix. Then recompile mfem and try your example against the new built.
Don't worry about approving, just let us know if if the issue is resolved.
Thanks,
Socratis

@psocratis ok, give me 30 min

@psocratis The fix worked


need help with spotxchange ads

Hi!,
My test spotxchange vpaid ad not display..can anyone help me solved this issue..
Links:
http://xaphanentertainment.com/my-adsplayer/player-garry/
http://xaphanentertainment.com/my-adsplayer/player-garry/spotxchange.html

1- get the latest version of the plugin since we release a important bug fix.
2- you need to provide the correct path for the flash if you want flash ads to work.

http://xaphanentertainment.com/VPAIDFlash.swf Failed to load resource: the server responded with a status of 404 (Not Found)

3- check why you getting this error

Uncaught ReferenceError: videojs is not defined

http://xaphanentertainment.com/my-adsplayer/player-garry/spotxchange.html uses a wrong order of the scripts. you're trying to set videojs.options.flash.swf, before loading the videojs library.


Add Artifactory link to build description

Signed-off-by: Adam Brousseau<EMAIL_ADDRESS>

Test Build
https://ci.eclipse.org/openj9/view/Test/job/Test-sanity.system-JDK11-linux_x86-64_cmprssptrs/220/

Could you provide a Grinder link? Thanks

https://ci.eclipse.org/openj9/view/Test/job/Test-sanity.functional-JDK11-linux_x86-64_cmprssptrs/641/

What is the difference between this Artifacts link and the default artifactory link?

The default (green line and circle) is a link to the webui for the Build artifact. On the OSS version, you can't easily navigate from there to the artifacts. The new one links to the file browser level directly to the folder where the artifacts are stored. In this case nothing was uploaded because the build was green so you get a 404. We should probably wrap the upload in a condition and check if there is anything to upload first.
Related eclipse/openj9#5212. Note that in the OpenJ9 change we have the full URLs linked for a direct download. Where as here we just link to the folder because we don't know what artifacts, if any, exist.

ah, I see. This is for Artifactory OSS version.


Able to get posts that belong to another user

given: "users": [ {"id": 1}, {"id": 2} ], "posts": [ {"id": 1, "text": "hello", "userId": 1}, {"id": 2, "text": "world", "userId": 2}] and
access token: xxx.xxx.xxx for user id:1
when: curl -H "Authorization: Bearer xxx.xxx.xxx" http://localhost:3000/600/posts
expect: only [ { "id": 1, "text": "hello", "userId": 1} ]
actual: [ { "id": 1, "text": "hello", "userId": 1}, {"id": 2, "text": "world", "userId": 2} ]

Hi @carballosa
I am new to json-server-auth module
But I tried about "your query " and locally fixed this  with the following
node_modules\json-server-auth\dist\guards.js
added the following line
if (hasRightUserId) {                 **req.query.userId = req.claims.sub;**                 next();             } else {                 res.status(403).jsonp('Private resource access: entity must have a reference to the owner id');             }
Please let me know if anything...


Git - 3wm editor not closed when enabling git.closeDiffOnOperation

Have git.closeDiffOnOperation enabled
Resolve a merge conflict in 3wm editor
Stage it
:bug: 3wm editor is not closed

I realize it's technically a merge editor not a diff editor but would it make sense for the git extension to also close 3wm editors when the corresponding resource is staged? Otherwise after resolving the conflict, the merge editor hangs around and has empty inputs:

I took a look at this flow again and I believe that most people use the "big blue button" to complete the merge which will close the merge editor. Not sure if the "big blue button" was in place when the issue was filed. I would not want to conflate diff editors with merge editors so I will close this issue as "not planned".


Fixes Frameworks' image-loading issue.

Hi there! Long-time user, first-time contributor :iphone:
The behaviour of imageNamed: has changed in version 0.36 of CocoaPods (which is currently in RC 1). This blog post has some more details.
Long story short: imageNamed: won't work in the way that the library is using them; they need to be loaded directly from the file system, instead.
This is in lieu of #403 because I didn't see it before I made my changes, because its implementation is a bit heavy-handed, and because it is incomplete (doesn't work in the indefinite animated view class).
I'm happy to modify the code style or structure to get it merged – just let me know!
Fixes #396.

Hi @ashfurrow. Thx very much, I agree. Compared to your solution #403 is very heavy handed. Also compared to #398 (somewhat similar to your PR), this works also with iOS 7.

:+1:


Make fuzzy matching opt-in instead of default

What:
Fixes #30
Why:

How:

Checklist:

[x] Documentation
[x] Tests
[x] Ready to be merged
[x] Added myself to contributors table

Sorry, me merging #34 gave you some conflicts :-(

That's ok, rebased.


 I've only seen it beeing implemented  here:
https://github.com/fizyr/keras-retinanet/blob/ebb4512a0ab0efc08bdb8e800e77ab89b6ca2cc1/keras_retinanet/preprocessing/generator.py#L210
The idea is to avoid destructive resizing by precomputing aspect ratios (image dimensions) for all images, and then yielding images with similar AR's to use as little padding as possible.

done in #70


[tools] Add --resources-only option for packing

BUG=https://crosswalk-project.org/jira/browse/XWALK-6428

's/--resources-only/--resource-only'

Please document it on https://github.com/crosswalk-project/crosswalk-test-suite/blob/master/doc/Web_Test_Suite_Packaging_Guide.md

LGTM


feat: added marketplace item porting page

Description
Create a page to describe the process to follow for marketplace item porting from private to public marketplace and vice versa
Pull Request Type

[X] Documentation content changes
[ ] Bugfix / Missing Redirects
[ ] Docusaurus site code changes

PR Checklist

[X] The commit message follows our guidelines included in the CONTRIBUTING.md
[X] All tests of Lint, cspell and check-content pass. (How to launch them?)
[X] No sensible content has been committed

@marcofilippi @malta895 LGTM but please have a look at it to prevent conflicts with what your doing in #631 and #633

I wrote in uppercase the terms suggested by @malta895 and closed the open comments.

LGTM

Fixed title and id.
change_marketplace_item_visibility as id and Change Marketplace Items Visibility as title (both page and sidebar)


How to remove delete option for default submit button in angular formio?

We're currently addressing a backlog of GitHub issues, and as part of this effort, some inactive issues may be marked as closed. This isn't a dismissal, but a step toward more efficient tracking.
If you feel the issue is still relevant, please re-open and we'll ensure it gets the attention it deserves. Your understanding is appreciated as we work to enhance our open-source responsiveness.


extend mac64 action tests to cover all scenarios

closed this PR as it was a mistake. Will create a new one shortly.


Export CORS constants for convenience

This adds the export cors to @bufbuild/connect. This object provides helpful constants to configure CORS middleware for cross-domain requests with the protocols supported by Connect.

Timo, wouldn't an approach around or similiar to interceptors on the ConnectRouter be a good place for handling CORS too? There are use-cases for CORS where you want to explicitly enable it for some service methods but not for others. Hence, tying it to the router seems reasonable instead of lifting it to the server / adapter level.

Timo, wouldn't an approach around or similiar to interceptors on the ConnectRouter be a good place for handling CORS too?

I think Connect routes should receive only requests in protocol. This export will make it really easy to configure @fastify/cors and the like properly. It's just a small incremental improvement.

Timo, wouldn't an approach around or similiar to interceptors on the ConnectRouter be a good place for handling CORS too?

I think Connect routes should receive only requests in protocol. This export will make it really easy to configure @fastify/cors and the like properly. It's just a small incremental improvement.

OK. The only limitation there would be that you wouldn't have the gRPC service method context outside of the router. But I can see wour point.


[proposal] Split ASYNC101 into 3 separate rules

Following the request here in the original flake8-async repo (which is now archived) I think breaking the 3 rules into individual rules would be beneficial.
Is this a contribution that Ruff would be open to upstreaming?

I believe that flake8-async is now managed here: https://github.com/python-trio/flake8-async. All the codes were renamed to ASYNC so we'll likely follow suit. Do you mind filing a request on that repo? I'd prefer not to deviate without strong motivation.

It looks like in that repo they are already broken up into separate rules for different calls I think.


Fix grab ray pos

Overview
Moves the grab ray position to the average of the thumb tip and the index tip and fix tests affected by this change.
Changes

Fixes: #5450.
Grab ray position change.
Change the pinch hand gesture JSON to centre on the new grab point.
Add a new open hand gesture that is centred on the grab point (mostly for testing)
Some minor gesture changes to a couple of tests
Removed NearInteractionTouchableStack test as it was broken (see comments in file)

@davidkline-ms  should I retarget this PR to the 2.0.0_stabilization branch?

/azp run mrtk_pr

run /azp run stabilization_pr


Fixed Type Definition File

I fixed the type definition file because it the package wasn't working with typescript. Now everything works fine.

Will take a look at it once im home!


Non-spectre VS libraries are loaded for spectre-enabled project, which leads to binskim warnings

Description
My C++ DLL project (on Windows) has dependency on some of VS libraries (such as krnel32.dll). I've added those dependencies to Additional Dependencies section of project properties. And the project is spectre-enabled. Binskim reports warnings for VS libraries (as below). This blocks warning-free use of BinSkim for binaries.
Platforms affected

[X] Azure DevOps
[ ] GitHub Actions - Standard Runners
[ ] GitHub Actions - Larger Runners

Runner images affected

[ ] Ubuntu 20.04
[ ] Ubuntu 22.04
[ ] macOS 11
[ ] macOS 12
[ ] macOS 13
[ ] macOS 13 Arm64
[ ] macOS 14
[ ] macOS 14 Arm64
[X] Windows Server 2019
[ ] Windows Server 2022

Image version and build link
Visual Studio 2019
Platform Toolset v142
Windows C++ DLL project
Is it regression?
No
Expected behavior
When running the Guardian: BinSkim task to scan for vulnerabilities in compiled binaries, no warnings due to the CRT being used should be encountered.
Actual behavior
At a minimum, libcmt.lib, libcpmt.lib, libvcruntime.lib, msvcrt.lib, and msvcprt.lib are impacted.
Binskim warnings for MD runtime library flag with Spectre-enabled
MD_Spectre.txt
Binskim warnings for MT runtime library flag with Spectre-enabled
MT_Spectre.txt
Repro steps

Create a C++ Windows DLL project (in VS2019 or VS2022)
Add source files to use any of above .lib files (such as libcmt.lib, libcpmt.lib, libvcruntime.lib, msvcrt.lib, and msvcprt.lib)
Add the VS lib used in Project Properties-> Linker -> Additional Dependencies
Enable Spectre
Create project DLL
Run binskim scan

Hello @sureshyerva87. I'm afraid we can't help you since we're installing Visual Studio and its components without any modifications. Could you please ask the VS developer community for help, I hope they will be able to help you.
If you have any other questions feel free to reach us.


Add an opinionated formatter

It is always useful to have a formatter to fix whitespace and other minor formatting changes in your code. Our VSCode extension should provide a formatter for Clarity files.

I believe the main missing component needed to implement this would be maintaining the comments in the AST. There is currently no data structure to hold comments, so they are treated the same as whitespace in the code. If we add a new PreSymbolicExpressionType for comments, then it should be relatively easy to implement a formatter.


File List: Add a filesize component

File List: Add a filesize component to intuitively convert bytes to appropriate standards format.

Got to make sure there is no unit confusion between: megabits or mebibytes and megabytes.


Add docs for onCaughtError and onUncaughtError

Overview
In the React 19 canary we've added two new root options:

onCaughtError
onUncaughtError

This PR adds docs for how to use these new options to display an error dialog.
Additionally, this PR also:

Adds usage docs for the onRecoverableError option
Add error.cause to onRecoverableError docs

Preview

createRoot
hydrateRoot

@eps1lon - Are these two functionalities we'd want to support in React Testing Library?

Yeah definitely. Should be straight forward. But something to discuss on the RTL repo instead.


dune_2: fix hash

Motivation for this change
dune 2.7.1 was re-released
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[X] NixOS
[X] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[X] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[X] Fits CONTRIBUTING.md.

@GrahamcOfBorg build flow beluga fstar satysfi ocamlformat

@GrahamcOfBorg eval


Add guides section with deploy markers guide

Add first guide about deploy markers to the new guides section in the
docs. This section will be more hands on in taking people through the
steps we recommend they take to get the most out of AppSignal.
I started with the deploy markers guide because that would be my first
recommendation after an app reports data to AppSignal.
There's a list of links to other guides that have yet to be written.

@shairyar I've updated the page with instructions for every integration. It may not be the perfect solution (as I don't know the specifics or recommended methods for Elixir, Node.js and JavaScript), but at least there's something. Any improvements can be made later.


lib.attrsets.mergeAttrsList: init

Description of changes
Introduces a new function to lib:

lib.attrsets.mergeAttrsList :: [ Attrs ] -> Attrs: Merge a list of attribute sets together using the // operator. The result is the same as foldl mergeAttrs { }, but the performance is better.

Underneath the list is merged in a binary tree style.
This is motivated by needing an efficient such operation for the implementation of RFC 140, see https://github.com/NixOS/nixpkgs/pull/237439#discussion_r1263000645
Things done

[x] Docs
[x] Tests

Is there is a reason this function is not also set top-level under lib? Most (all?) lib functions seem to be defined under a section, such as this one under lib.attrsets, but also inherited to be a top-level lib function in /lib/default.nix.

@thanegill I think lib should move towards not exporting everything under lib.*. Though if we really want to go that route, it should be lib.attrsets.mergeList or even lib.attrs.mergeList instead.
But I fully admit that just starting to not export symbols in lib.* anymore is just confusing right now and doesn't really help. So I'd happily merge a PR that exported this function under lib.*.

But I fully admit that just starting to not export symbols in lib.* anymore is just confusing right now and doesn't really help. So I'd happily merge a PR that exported this function under lib.*.

#291583


Add terma as developer to ec2-fleet-plugin

Description
https://github.com/jenkinsci/ec2-fleet-plugin
@schmutze please comment to approve

Submitter checklist for changing permissions

Always

[x] Add link to plugin/component Git repository in description above

For a newly hosted plugin only

[ ] Add link to resolved HOSTING issue in description above

For a new permissions file only

[ ] Make sure the file is created in permissions/ directory
[ ] artifactId (pom.xml) is used for name (permissions YAML file).
[ ] groupId / artifactId (pom.xml) are correctly represented in path (permissions YAML file)
[x] Check that the file is named plugin-${artifactId}.yml for plugins

When adding new uploaders (this includes newly created permissions files)

[x] Make sure to @mention an existing maintainer to confirm the permissions request, if applicable
[x] Use the Jenkins community (LDAP) account name in the YAML file, not the GitHub account name
[x] All newly added users have logged in to Artifactory at least once

approve


Problem running the code snippets in py_process.py

There is a small code snippet at the top of the py_process.py source file, however, when I tried to run the code, I have the following problem, can anyone give some suggestion?
2019-03-01 17:37:16.260732: W tensorflow/core/framework/op_kernel.cc:1389] Unknown: AttributeError: 'Zeros' object has no attribute 'b'compute''
Traceback (most recent call last):

  File "/home/yuming/tensorflow/lib/python3.6/site-packages/tensorflow/python/ops/script_ops.py", line 207, in __call__
    ret = func(*args)

  File "/data/yuming/eeg-dpg/py_process.py", line 89, in py_call
    raise result

AttributeError: 'Zeros' object has no attribute 'b'compute''

By the way, I run the code snippet on Red Hat 7.5, with TensorFlow 1.13.1, Python 3.6.3.
I suspect maybe there is a mismatch between encoding? But not for sure.

I solved it by adding a decode() here
https://github.com/deepmind/scalable_agent/blob/6c0c8a701990fab9053fb338ede9c915c18fa2b1/py_process.py#L142
 method_name = str(serialized[0].decode("utf-8"))

Great, thanks.
I would think there should be some internal fix in TensorFlow, but seems guys there are very funny.
Let's stick to the fix here, thanks again.
I will close the thread.

@Da-Capo Hi, I just had a test, it works both for Python 3.6 and Python 2.7, probably you can make a pull request to address it. Thanks.


Add action to publish extension to Open VSX

This change will close issue #4 by adding publishing to Open VSX.

@worksofliam Instead of just asking for publishing to Open VSX I thought I could at least contribute the change myself. 😃


Clicking on a search field breaks the window on Linux

Godot version
4.1.1-stable
System information
Godot v4.1.1.stable - Nobara Linux 38 (Thirty Eight) - Vulkan (Compatibility) - AMD Radeon RX 570 Series (polaris10, LLVM 15.0.7, DRM 3.52, 6.3.12-204.fsync.fc38.x86_64) () - AMD Ryzen 5 5500 (12 Threads)
Issue description
Whenever I try to find an button in the Event Configuration window in the Input Map, the window for it minimizes itself and I can't access it anymore unless I restart Godot. On version 4.0.3 provided by the official Fedora repo, the same exact thing happened to the node creation menu when you try to search for a specific node.
As I were trying to reproduce this bug, I noticed that such thing only happens with the Compatibility renderer.
Steps to reproduce

Create a new project with the Compatibility renderer
Open Project > Project Settings > Input Map
Add a new action
Press the plus sign next to the action to add a new event
Click filter inputs, the window gets minimized, it's there, but it's not accessible anymore

Minimal reproduction project
N/A

I am unable to replicate this on Debian X11 Xfce.
Testes with v4.1.stable.official [970459615] and v4.2.dev.custom_build [6588a4a29]
Can you please check if you are using X11 or Wayland? Use echo $XDG_SESSION_TYPE to find out.

I am unable to replicate this on Debian X11 Xfce. Tested with v4.1.stable.official [9704596] and v4.2.dev.custom_build [6588a4a]
Can you please check if you are using X11 or Wayland? Use echo $XDG_SESSION_TYPE to find out.

Yes, I am using GNOME Wayland, and I have suspicions that it could be the reason I have problems with it. Other pop-up windows would get minimized instantly, but I can access them anyway, unlike the windows in which I click on a search field.

This issue is breaking and does not let me use Godot at all. Whenever I click on any field in Godot, the window or sub window will minimize and refuse to come up again. Godot is broken after this until restarted.

This should be fixed in 4.2.dev5 according to https://github.com/godotengine/godot/issues/77333.


move bootc builder (dtk) to common

Relates to: https://github.com/containers/ai-lab-recipes/pull/585#discussion_r1646422455
Depends on rebase and merge of #585
/cc @fabiendupont @enriquebelarte

CI still needs to be implemented / updated for generic builder but Ill wait for parent PR to rebase in Jasons changes

Why not call the image driver-toolkit?

I was keeping it as it was for consistency but I think since were already moving this we may as well name it in a more friendly way.


Translate in Italian and Change Date Format

Is important to translate this project in italian and to allow to change date format from MM-dd-yyyy to dd/MM/yyyy because in Italy we don't use the first format type. I'm working on it......

These are only a part of italian translation but you can start to apply them. For the date format I've created a propertie called DateFormat and so you can change it with the locale if you change <p:calendar > tag pattern from pattern="MM-dd-yyyy" to pattern="#{messages.DateFormat}".
resources.zip

Ok. Great job! I will make those changes!


Weekly view enhanced

When I click on arrows, I would like for it to go to the following week instead of month so I can easily plan ahead. Is this bug or has it just not been implemented?

Hello,
Since the official weekly calendar view support, the weekly mod is no longer necessary, right ?

Correct @ncoquelet, thanks for the pickup!


Data Extraction Fine Tuning

I am attempting to fine tune and train a model to extract the fields highlighted in yellow in the sample reports here. My results are not good when testing the model and I'm looking for some guidance on what to do to improve the model other than obtaining more training data. I currently have only about 40 images for training and 5 each for testing and validation (50 total). The ground truth JSON I have defined follows each of the sample report images. My training config is at the end here. I'm running on a single GPU local machine.
I've added the following code to the train.py program but have no idea if it's correct or needed.
if task_name == "ngs":             model_module.model.decoder.add_special_tokens([                 "<biomarker_findings/>, <genomic_findings/>, <tumor_mutation_burden/>, <microsatellite_status/>, <form/>", "<scientific_publication/>", "<scientific_report/>"             ])
Any help would be greatly appreciated!
Sample Report 1

{     "microsatellite status": "cannot be determined",     "tumor mutation burden": "cannot be determined",     "genomic findings": [         "BRCA2",         "IDH1",         "ARID1A",         "TP53"     ],     "variants of unknown significance": [         "FH",         "MAP3K1"     ] }
Sample Report 2

`{
    "microsatellite status": "STABLE",
    "tumor mutation burden": 0,
    "genomic findings": [
        "EGFR",
        "NF1",
        "MTAP",
        "BCORL1",
        "CDKN2A/B"
    ],
    "variants of unknown significance": [
        "BRCA2",
        "MAF",
        "SOX9"
    ]
}`
Training Config
resume_from_checkpoint_path: null # only used for resume_from_checkpoint option in PL result_path: "./result" pretrained_model_name_or_path: "naver-clova-ix/donut-base" # loading a pre-trained model (from moldehub or path) dataset_name_or_paths: ["/home/mattreidy/projects/ngs/data/ngs_donut"] # loading datasets (from moldehub or path) sort_json_key: False # cord dataset is preprocessed, and publicly available at https://huggingface.co/datasets/naver-clova-ix/cord-v2 train_batch_sizes: [1] val_batch_sizes: [1] input_size: [960, 1600] # even multiples of 320. original=1700x2200.  max_length: 768 align_long_axis: False num_nodes: 1 seed: 2022 lr: 3e-5 warmup_steps: 800 num_training_samples_per_epoch: 8 max_epochs: 5 max_steps: -1 num_workers: 8 val_check_interval: 1.0 check_val_every_n_epoch: 2 gradient_clip_val: 1.0 verbose: True

Hey Matt,
I'm still coming up to speed on this repo myself, but it looks to me like there's a slight problem with your approach here. This line of train.py indicates to me that it will read your task_name as ngs_donut, based on your config including dataset_name_or_paths: ["/home/mattreidy/projects/ngs/data/ngs_donut"].
So I think you probably have to update your train.py edit from:
if task_name == "ngs":
to:
if task_name == "ngs_donut"
Can you let me know here if that helps?

Hey Matt,
I'm still coming up to speed on this repo myself, but it looks to me like there's a slight problem with your approach here. This line of train.py indicates to me that it will read your task_name as ngs_donut, based on your config including dataset_name_or_paths: ["/home/mattreidy/projects/ngs/data/ngs_donut"].
So I think you probably have to update your train.py edit from: if task_name == "ngs":
to:
if task_name == "ngs_donut"
Can you let me know here if that helps?

MaxPowerWasTaken, Thank you very very much for taking the time to read and respond to my post - good eye - I did actually change the code after posting to catch the exact issue you identified. I just modified it by removing the "if" statement and add my special tokens all the time. I'm still not at all clear about what the tokens do or how to use them... Thanks again. -Matt


Ratel Dashboard post duplicate query and mutate

When I click "run" button in the Ratel dashboard console, the mutate (or query) operation will execute two times, which make two nodes added, not one it should be. Is it a bug or any thing i do wrong?
dgraph version: Dgraph v1.0.16, Binaries for Windows
ratel dashboard: Local Bundle version
browser: Firefox 68.0.2

yes, I find that too..
when Mutation from the local console.
Dgraph v1.0.17 Windows
Browser, Edge

Just tried this on my local instance and could not reproduce the two nodes added part.
@LoganLee1991 can you please run a query to confirm that indeed two nodes got added in your system?
Two requests are normal because the first one is CORS pre-flight (HTTP OPTIONS), the second one is the actual request.
Closing this bug because from what's reported in here and based on my test everything's working as expected.
If anyone is still seeing duplicate nodes -- please re-open

I do the same test as you did, and i found two nodes with different uid.
Thanks for your response. @paulftw
you can see that same POST request occured when do mutation and query operation.


fix TestPullFailsWithAlteredLayer

This test was failing if after the busybox image switched to a
single layer.
The test fails because it alters the data of an empty layer and
relies on a side effect of another empty layer not being skipped
on pull to pass.
Thanks to @tonistiigi for providing the patch https://github.com/docker/docker/pull/29030#issuecomment-268389298

LGTM


Add some style fixing

Add some style fixing

The build fails but for an unrelated reason : https://travis-ci.org/vlucas/phpdotenv/jobs/91935396

StyleCI's not even enabled here.

This is quite unnecessary I think.

StyleCI can be enabled here without any changes.

@GrahamCampbell , this PR is not only related to StyleCi ;-)

I know. StyleCI removes the need for people to bother messing with local config or fixing.


add [smt-prelude] attribute

Add [smt-prelude] attribute that indicates the sort declaration/definition is provided in the SMT prelude file.
Usage example:
K definition:
syntax MyMap [smt-prelude]
syntax Key [smt-prelude]
syntax Val [smt-prelude]

syntax MyMap ::= storeMyMap(MyMap, Key, Val) [function, smtlib(store)]
syntax Val ::= selectMyMap(MyMap, Key) [function, smtlib(select)]

SMT prelude:
(declare-sort Key)
(declare-sort Val)
(define-sort MyMap () (Array Key Val))

Note that the declaration/definition order is important in the SMT prelude file, which is not guaranteed by the current SMT encoder KILtoSMTLib.

@ehildenb this will be needed for the devcon4 demo.

Jenkins: test this please

@dwightguth It is ready to review.


2.5.1: changing checksum for north_star_data_bytes fixture

Initial Checks

[X] I confirm that I'm using Pydantic V2

Description
Hi! :wave:
I package this project for Arch Linux.
I am currently seeing issues with version 2.5.1 and the test setup. The fixture north_star_data_bytes appears to provide wrong results:
=========================== short test summary info ============================
ERROR tests/benchmarks/test_north_star.py::test_north_star_validate_json - Va...
ERROR tests/benchmarks/test_north_star.py::test_north_star_validate_json_strict
ERROR tests/benchmarks/test_north_star.py::test_north_star_dump_json - ValueE...
ERROR tests/benchmarks/test_north_star.py::test_north_star_validate_python - ...
ERROR tests/benchmarks/test_north_star.py::test_north_star_validate_python_strict
ERROR tests/benchmarks/test_north_star.py::test_north_star_dump_python - Valu...
ERROR tests/benchmarks/test_north_star.py::test_north_star_json_loads - Value...
ERROR tests/benchmarks/test_north_star.py::test_north_star_json_dumps - Value...
=========== 4605 passed, 152 skipped, 9 xfailed, 8 errors in 20.63s ============

This is the current build script: https://gitlab.archlinux.org/archlinux/packaging/packages/python-pydantic/-/blob/86d7dd5bb1fbd48ffa3aa33ce402d70680c4be2a/PKGBUILD
The full build and test log:
python-pydantic-2.5.1-1-x86_64-check.log
python-pydantic-2.5.1-1-x86_64-build.log
Example Code
No response
Python, Pydantic & OS Version
n/a (I'm building from the 2.5.1 source tarball).

@dvzrv,
Thanks for reporting. Closing as a duplicate of #8099.


feat: implement fact_student_status model

Description
This PR creates an MV for the latest course enrollment status for a learner and renames the fact_grade_status to fact_learner_status with information of the current grade, current approving status and current enrollment status.
It also updates the fact_video_plays model to include video duration and visualization progress.

Thanks for the pull request, @Ian2012! Please note that it may take us up to several weeks or months to complete a review and merge your PR.
Feel free to add as much of the following information to the ticket as you can:

supporting documentation
Open edX discussion forum threads
timeline information ("this must be merged by XX date", and why that is)
partner information ("this is a course on edx.org")
any other information that can help Product understand the context for the PR

All technical communication about the code itself will be done via the GitHub pull request interface. As a reminder, our process documentation is here.
Please let us know once your PR is ready for our review and all tests are green.

@daniriosp Does this model update make sense to you?

@Ian2012 I think my first question above isn't relevant anymore, but I'm still interesting in the answer to my second question. Are there specific charts or dashboards that this dataset is meant to support?

@SoryRawyer I'm still missing the course_run filed on all those models. I will let you know when it's done

@Ian2012 🎉 Your pull request was merged!  Please take a moment  to answer a two question survey so we can improve your experience in the future.


Adding filters and selectors

fix #43906
Also, it changes:

description field to Description - which is the current Hotels sample schema.
hotels indexer name to hotels-sample-index, which is also the default value to Hotels sample when deployed from Azure portal.
Id 1002 to 20, since 1002 is not a valid id in the sample

@allantargino : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@allantargino Thanks for your contribution! I've suggested some fixes for grammatical issues and consistency.
FYI @HeidiSteen

@allantargino : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Hi @brjohnstmsft!
Thank you for all detailed comments! I addressed them in my last commit.

@allantargino : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@Jak-MS : Thanks for your contribution! The author(s) have been notified to review your proposed change.


[gating group collections] micro tweaks

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.


ApiModelProperty(name="property_name") on @ModelAttribute annotated models

Controller:
@ResponseBody
@RequestMapping(value="articles", method=RequestMethod.POST, produces = "application/json; charset=UTF-8")
public String getArticles(HttpServletRequest request, @ModelAttribute FilterParameters filterParameters){}

@JsonNaming(value = PropertyNamingStrategy.SnakeCaseStrategy.class)
public class FilterParameters {

    @ApiModelProperty(name = "start_millis")
    private Long startMillis;

    public FilterParameters() {
    }

    public Long getStartMillis() {
        return startMillis;
    }

    public void setStartMillis(Long startMillis) {
        this.startMillis = startMillis;
    }
}

On swagger-ui.html, parametr name is "startMillis". Why isn't "start_millis"?

@ApiModelProperty doesnt affect name. May be it should?

Yes.
When I use @JsonNaming(value = PropertyNamingStrategy.SnakeCaseStrategy.class) in ApiModel class, then the names of the parameters are changed.
My model:
@JsonNaming(value = PropertyNamingStrategy.SnakeCaseStrategy.class)
public class FilterParameters {
    private Long startMillis;

    public Long getStartMillis() {
        return startMillis;
    }

    public void setStartMillis(Long startMillis) {
        this.startMillis = startMillis;
    }
}

@ResponseBody
@RequestMapping(value="articles", method=RequestMethod.POST, produces = "application/json; charset=UTF-8")
public String getArticles(HttpServletRequest request, @RequestBody FilterParameters filterParameters){}

Here i use @RequestBody annotation, so the name of the parameter is "start_millis" in swagger-ui.html.
But when i use @ModelAttribute, @JsonNaming not working.
@ResponseBody
@RequestMapping(value="articles", method=RequestMethod.POST, produces = "application/json; charset=UTF-8")
public String getArticles(HttpServletRequest request, @ModelAttribute FilterParameters filterParameters){}

Here i use @ModelAttribute  annotation, so  the name of the parameter is "startMillis" in swagger-ui.html.
I tried to change the name of the parameter using "name" in @ApiModelProperty annotation. But it's not working. What do I do?

@dekan-kob Not convinced that @JsonNaming and @ApiModelProperty should be allowed to override the property name. Could you check by curling with snake cased property names to see if @JsonNaming has any effect @ runtime? I would be surprised if it did, I think model attributes are based on java bean specification.

Yes, @JsonNaming change the names of the parameters.
I have created two classes:
public class TestClassWithoutJsonNaming {
    private String propertyName;

    public String getPropertyName() {
        return propertyName;
    }

    public void setPropertyName(String propertyName) {
        this.propertyName = propertyName;
    }
}

and
@JsonNaming(value = PropertyNamingStrategy.SnakeCaseStrategy.class)
public class TestClassWithJsonNaming {
    private String propertyName;

    public String getPropertyName() {
        return propertyName;
    }

    public void setPropertyName(String propertyName) {
        this.propertyName = propertyName;
    }
}

Also, i have created two methods in controller:
@ApiOperation(value = "test1")
@RequestMapping(value = "/api/v3/test1", method = RequestMethod.POST)
public TestClassWithoutJsonNaming test1(HttpServletRequest request) {
    return null;
}

@ApiOperation(value = "test2")
@RequestMapping(value = "/api/v3/test2", method = RequestMethod.POST)
public TestClassWithJsonNaming test2(HttpServletRequest request) {
    return null;
}

After application starting, I get the following:

It's very good for me. But i have problems when using @ModelAttribute.

This has nothing to do with springfox/swagger. I was actually suggesting you do the following instead
@RequestMapping(value = "/api/v3/test1", method = RequestMethod.POST)
public void test1(@ModelAttribute TestClassWithoutJsonNaming request) {
    return null;
}

@RequestMapping(value = "/api/v3/test2", method = RequestMethod.POST)
public void test2(@ModelAttribute TestClassWithJsonNaming request) {
    return null;
}

Then doing a curl
curl http://host/api/v3/test2?property_name=test

and seeing if spring creates a model correctly with the value test. I suspect it will not

You are right. It doesn't work. Thanks for the help. I will continue to investigate with the ModelAttribute.


chapter_recurrent-modern/gru

Job d2l-zh/PR-856/1 is complete.
Check the results at http://preview.d2l.ai/d2l-zh/PR-856/

Job d2l-zh/PR-856/6 is complete.
Check the results at http://preview.d2l.ai/d2l-zh/PR-856/

Job d2l-zh/PR-856/7 is complete.
Check the results at http://preview.d2l.ai/d2l-zh/PR-856/


Add react example to Graphback fullstack template

Rebased. going to improve it over the comming days

Spent some time trying to refine this and I think there is simply too much work involved:

Todo model can be easily broken - Our client app needs to be dynamically generated on some specific object
App is in JS
Offix makes things very very specific and it will make absolutely hard to use it in generic context. Removing offix is too much work. It will be easier for us to integrate with existing boilerplate react typescript app etc.

To be clear. App seems amazing.. I just did not anticipated how much work will be needed to get this running

If we have master detail with pluggable offix we will be much ready. no sense to spent effort to migrate app, but we can use this wireframes later


Feature/license

Coverage remained the same at 100.0% when pulling 00c34aad615e860aa5e6b6f03cff9455d607f9da on feature/license into 9870e1640898c11e2723475561e39ad52e7d8bf8 on develop.


Rogue API reportback-items inconsistencies.

The /reportback-items endpoint has some inconsistencies (production / thor)

[ ] created_at is in ISO-8601 format, should be a UNIX timestamp
[ ] campaign property is missing (should be on each item
[ ] kudos property is formatted differently (in an array on prod, plain object on Thor)
[ ] kudos.term.total seems to always be appearing as 0 ⚠
[ ] user object is just a Northstar ID string (meaning all users appear as "A Doer" in PN gallery)

Also worth noting we call the corresponding endpoint in Rogue /reportbacks but it's actually returning reportback items.


The bin2seven design for PP3 makes ABC9 segfault

Apparently the design triggers segfault in ABC9 in Yosys:
<IP_ADDRESS>. Executing ABC9.
ERROR: ABC: execution of command "/home/mkurc/Repos/quicklogic-symbiflow-arch-defs/env/conda/envs/symbiflow_arch_def_base/bin/yosys-abc -s -f /tmp/yosys-abc-Dcmv5k/abc.script 2>&1" failed: return code 134.

This and other test failures in CI are probably caused by the recent update of yosys-symbiflow-plugins from 1.0.0_7_375_ge9e412b=20210813_070938 to 1.0.0_7_405_g041f93b=20210928_224703


statsd-emitter - add option to disable logging errors when mapping is missing

I enabled statsd-emitter which works great, the only problem I have with it is that it pollutes our logs with many errors for missing statsd mapping, coming from here:
https://github.com/druid-io/druid/blob/master/extensions-contrib/statsd-emitter/src/main/java/io/druid/emitter/statsd/StatsDEmitter.java#L123
e.g:
February 22nd 2017, 17:41:10.000	2017-02-22T16:41:10,731 ERROR [Coordinator-Exec--0] io.druid.emitter.statsd.StatsDEmitter - Metric=[segment/count] has no StatsD type mapping
February 22nd 2017, 17:41:00.000	2017-02-22T16:41:00,390 ERROR [MonitorScheduler-0] io.druid.emitter.statsd.StatsDEmitter - Metric=[jetty/numOpenConnections] has no StatsD type mapping
February 22nd 2017, 17:40:49.000	2017-02-22T16:40:49,507 ERROR [MonitorScheduler-0] io.druid.emitter.statsd.StatsDEmitter - Metric=[jetty/numOpenConnections] has no StatsD type mapping
February 22nd 2017, 17:40:40.000	2017-02-22T16:40:40,730 ERROR [Coordinator-Exec--0] io.druid.emitter.statsd.StatsDEmitter - Metric=[segment/underReplicated/count] has no StatsD type

about 220 log lines in 15 mins (running 1 node of each druid role). Would be nice to have an option to turn these off.

Yes, I faced the same problem for graphite too... could you please provide the option of disabling.

What protocol is druid statsd emitter using?

I haven't used statsd I have used graphite emitter..
With regards,
Gopi kiran
On Thu, Sep 28, 2017 at 3:24 AM, knepperjm<EMAIL_ADDRESS>wrote:

What protocol is druid statsd emitter using?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/druid-io/druid/issues/3960#issuecomment-332666855,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AF3jsAfz-ZmERe4gZRW0DXvQ4IOkOLzLks5smsQwgaJpZM4MI6Er
.


metadata test fails

       def test_metadata() -> None:
  >       assert __version__.__title__ == "screenpy-selenium"
  E       AssertionError: assert 'screenpy_selenium' == 'screenpy-selenium'
  E         - screenpy-selenium
  E         ?         ^
  E         + screenpy_selenium
  E         ?         ^

https://github.com/ScreenPyHQ/screenpy_selenium/actions/runs/5966029789/job/16184798124#step:5:70
I see why it's failing.  I don't understand why it didn't fail a long time ago.

It would appear I needed to update my poetry from 1.5.1 to 1.6.1.
Using 1.5.1, poetry build would create the metadata title as screenpy_selenium but when I would use poetry install the metadata for the local package would set the title as screenpy-selenium.
Moving to 1.6.1 would create the local package metadata title as screenpy_selenium, making it consistent with the build.
However, I still don't exactly know why the change in metadata behavior occurred. I found this lengthy discussion talking about how the overall community should proceed but I can't seem to pinpoint a specific issue/PR/commit that illustrates the change.
My best guess at the moment is this was a planned change and we simply need to update the test to reflect the change.  I asked for help over in the poetry discussion in trying to pinpoint the change.

Found it -- was looking in the poetry repo.  I needed to look in poetry-core.
https://github.com/python-poetry/poetry-core/pull/620/files


Automatically approve and update certs on Trow restart

Trow was running well until I rebooted one K8s nodes.
Then trow-init container was failing on
Saved key to /certs/domain.key
certificatesigningrequest.certificates.k8s.io "trow.kube-public" deleted
certificatesigningrequest.certificates.k8s.io/trow.kube-public created

Waiting for CSR to be approved.

Please run:
$ kubectl certificate approve trow.kube-public

So when Trow came back up, it requested a new TLS certificate, which is probably necessary as it will have a new IP. It should be safe to rerun the install script, which won't recreate trow but will repeat the steps that approve and copy the cert to the appropriate locations.
I'm still considering the best solution to this. I've renamed the issue until I figure it out.

So, this is partly fixed on master. We're now distributing the CA cert rather than the trow cert, so clients don't need to be updated.
I'll test re-using the old cert to avoid the need to run "kubectl certificate approve", but this may fail due to the change in IP address.

On second thoughts, I need a way to update certs in case they are leaked or when they expire.
I think the correct solution is to find a way to automatically approve certificates, which probably means an operator.
If this happens again, just running "kubectl certificate approve trow.kube-public" should be enough, as all clients should have the CA cert and automatically trust the new cert.
I'm going to add a section on this to trouble-shooting and add an issue for auto-approving certificates, then close this issue.

In the end what I ended up doing was putting the key in a secret and reusing it, which does work. You shouldn't need to run kubectl certificate approve. I've also updated the user guide.
We still need a way to rotate certificates.


Is it possible to include a function to test api keys for Mongodb?

I am just wonder how do i test the api keys obtained from Mongodb using this library. Is it included in it ?
Where i refer to test what it meant is to check if the api keys are working and able to successfully establish a connection.

Hi, we have tested mongoDB connection and able to write cleaned raw data into database. You can have a look at test case under Tests>>Automate Test cases>>test_ai.py
Revert to us in case of any questions.

I saw the code below in test_ai.py. It seems if for any reason the connection things didn't workout it will print mongodb connnection failed. I am looking for something to test api keys specifically.
Let's say before starting a project i want to ensure my keys are working. I import the ai library...i don't have the dataset yet. How do i test my keys in this scenraio.
Note : Assuming i understood below code correctly.
    try:
        wrt_raw_data = ai.write_raw_data(data_layer, raw_data, date_fields)
    except:
        print('----------MONGODB CONNECTION FAILED----------')

Hello @Amar244.  You can use below code snippet to check MongoDB connection.
from pymongo import MongoClient
client = MongoClient("mongodb://{user}:{password}@{host}:{port}")
db = client.{database}
try: db.command("serverStatus")
except Exception as e: print(e)
else: print("You are connected!")
client.close()

In our test cases we are focusing on complete end to end testing in MongoDB data insertion.  When we run our tests then automatically it will take care about this connection string also.
If you have any doubts in using above code snippet, please reach out to me I can help you.

Hi ,
If i understand correctly the above code works if you have a password and a username. However i do believe this AI Library takes api keys as input to connect to the server. i am looking for something like ai.test_keys() method or function to return True or False if my keys are working and able to reach the server.

Hi @npulagam ,
The code you presented seems to provide a way for me to test to my connection.
Thank you.
from pymongo import MongoClient
client = MongoClient("mongodb://{user}:{password}@{host}:{port}")
db = client.{database}
try: db.command("serverStatus")
except Exception as e: print(e)
else: print("You are connected!")
client.close()


Buffer::set_text seems very slow?

On both my laptop and my desktop, calling Buffer::set_text takes anywhere from 100µs to 1.3ms, averaging around 600µs for a string of around 20-22 characters using Shaping::Advanced. Using Shaping::Basic takes around 450µs. This to me seems very slow, calling Buffer::set_text a couple of times per frame takes up a serious part of the frame budget.
OS: nixos/arch
Rustc: 1.77.2
Cosmic-text: 0.11.2
Font: Roboto Regular
Edit:
This only seems to be a problem with the mono space version of the font.

use std::time::Instant;

use cosmic_text::{
    Attrs, Buffer, CacheKeyFlags, Family, FontSystem, Metrics, Shaping, Stretch, Style, Weight,
};

fn set_text(font_system: &mut FontSystem, buffer: &mut Buffer, family: Family, i: u64) {
    buffer.set_text(
        font_system,
        &format!("rgb(69  , 103  , {i})"),
        Attrs {
            color_opt: None,
            family,
            stretch: Stretch::Normal,
            style: Style::Normal,
            weight: Weight::NORMAL,
            metadata: 0,
            cache_key_flags: CacheKeyFlags::empty(),
        },
        Shaping::Advanced,
    );
}

fn main() {
    let mut font_system = FontSystem::new();

    let mut buffer = Buffer::new(&mut font_system, Metrics::new(12.0, 16.0));

    buffer.set_size(&mut font_system, 100.0, 100.0);

    let serif_start = Instant::now();

    for i in 0..1000 {
        set_text(&mut font_system, &mut buffer, Family::Serif, i);
    }

    let serif_duration = serif_start.elapsed() / 1000;
    println!("Time: {:?}", serif_duration);

    let monospace_start = Instant::now();

    for i in 0..1000 {
        set_text(&mut font_system, &mut buffer, Family::Monospace, i);
    }

    let monospace_duration = monospace_start.elapsed() / 1000;
    println!("Time: {:?}", monospace_duration);

    println!(
        "Monospace was {} times slower than Serif",
        monospace_duration.as_secs_f64() / serif_duration.as_secs_f64()
    );
}

This crude examples gives the result that Monospace is around 28 times slower than Serif on my machine.


SUGGESTION: Add a Stock_Additions build number to the OP version number

Several updates have come in to the C2 but it still just shows 0.7.7 release.  It would be helpful to have a build number included. For example: <IP_ADDRESS>

I think the minor updates don’t get added just due to the extra work. Most updates are minor and can be viewed in the comment logs.

I used to have Stock Additions 0.7.4 (v1.1 for ex.) in my changelog, but thought that I didn't add too much in each version to justify it. But I think now it might be a good idea since I'm adding much more features than when I first started. For now you can check this file out for the SA changes for openpilot version: https://github.com/ShaneSmiskol/openpilot/blob/stock_additions/SA_RELEASES.md


add k8s feature

[x] test in VM1
[x] test in VM2
[x] test in VM3

[ ] complete testing of #455
[ ] merge #455 in dev server
[ ] test again the dev branch in completely new instance
[ ] then start merging of this branch into master


Due to lack of permission users who signup cannot self enroll a device

The users who fill the registration form and sign up by default are not given permission to enrol to a device. There is a banner stating - You don't have any enrolled devices. Let's enrol a device!  but the user does not have the option to enrol a device.

Labels - Bug, 3.1.0-M7, Blocker


refactor logging policy and fix resource scope

This refactors the way the shared logging policy is applied to the lambda roles, but more importantly if fixes an error with the logging policy document where the resource filter was incorrect.
Has been updated to confirm to these docs: https://docs.aws.amazon.com/lambda/latest/operatorguide/access-logs.html

Deployed to dev and prod
./deploy-iam.sh
+ STACK=javabuilder-iam
+ TEMPLATE=iam.yml
+ aws cloudformation deploy --template-file iam.yml --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM --stack-name javabuilder-iam

Waiting for changeset to be created..
Waiting for stack create/update to complete
Successfully created/updated stack - javabuilder-iam


Update sbt-paradox to 0.9.0

Updates com.lightbend.paradox:sbt-paradox from 0.8.0 to 0.9.0.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "com.lightbend.paradox", artifactId = "sbt-paradox" } ]

labels: sbt-plugin-update, semver-minor

Codecov Report

Merging #331 (9845739) into master (ae5d9e1) will increase coverage by 0.07%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #331      +/-   ##
==========================================
+ Coverage   84.48%   84.56%   +0.07%
==========================================
  Files         106      106
  Lines        1276     1276
  Branches       25       25
==========================================
+ Hits         1078     1079       +1
+ Misses        198      197       -1

Impacted Files
Coverage Δ

...ore/src/main/scala/net/BufferedMessageSocket.scala
96.15% <0.00%> (+3.84%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update ae5d9e1...9845739. Read the comment docs.


Microservice clear listener

How to clear listener in NodeJS (MicroService) of LiquidCore.on()?
In java it is possible by service.removeEventListener(), how do it in javascript node?
Can't see method LiquidCore.off() like in socket.io.

The LiquidCore javascript object is just an events object.  You can call LiquidCore.removeListener().

Thanks this is it!


Complex SVD JVP rule

The current implementation of the singular value decomposition is only differentiable for real-valued input.
I derived the JVP rule [to appear on arxiv.org soon] for complex matrices and implemented it. I also tested it on various random matrices. Happy holidays!
Here is some minimal example to demonstrate that the current implementation does not work on complex matrices.
from jax import grad
import jax.numpy as jnp

A = jnp.array([[1.j, .5j],
               [0.,  0. ]], dtype=jnp.complex64)
B = jnp.array([[1.,  0.],
               [0.,  0.]], dtype=jnp.complex64)
def f(x):
    U, S, V = jnp.linalg.svd(A + x * B, full_matrices=False)
    return U.dot(jnp.diag(S).dot(V))[0, 0].real

print(f'The gradient should give 1 but gives: {grad(f)(1.)}')

Wow, what a gift for the holidays! Amazing!

This is really fantastic!
It would be great to add some unit tests for this to verify this fix. The specific example you give above would be a good example to add as a regression test.
Here are our current tests for SVD gradients. But as noted by @hawkinsp, "these tolerances seem very loose":
https://cs.opensource.google/jax/jax/+/master:tests/linalg_test.py;l=567;drc=f74235cdae037c686f1b05bb9608fc48cd849664

It seems like these tolerances need to be so loose because the eps used for the numerical JVP is 1e-4, which is the lowest possible value for np.complex64 numbers. For np.complex128 numbers one can set eps = 1e-8 and atol = 1e-4 and rtol = 1e-4, possibly even lower.
I will add this and some test for the entire SVD, as @shoyer mentioned.

I just noticed the JVP test is also run when compute_uv is true. I don't know how the test cases are picked from all possible parameters, but only one configuration, namely 3 matrices of shape (53, 7), is run and here the test passes, probably by luck (or bad luck).
When I run it manually for a 2 by 2 matrix it fails, which is not surprising, since the (numerical) derivative of U and Vt is not well defined.
I will fix this as well.

I hope these tests look good to you. I also have a question:
In my note I want to motivate a bit why one would want to use the JVP rule instead of the VJP.  As far as I understand, for backward-mode differentiation the JVP rule is "translated" into the VJP rule via transposition. Could you point me to the relevant piece of code, or are there any references on this technique?

I don't think there's a formal write up of how JAX does backwards mode
autodiff, but perhaps there should be! Another way of thinking of a
vector-Jacobian product is that is it transpose(Jacobian)-vector product.
So JAX first derives how to calculate a JVP, which is a linear map, and
then transposes it operation by operation using the rule for transposing
matrix products: (AB)^T = B^T A^T.
On Wed, Dec 23, 2020 at 9:35 AM Frederik Wilde<EMAIL_ADDRESS>wrote:

I hope these tests look good to you. I also have a question:
In my note I want to motivate a bit why one would want to use the JVP rule
instead of the VJP. As far as I understand, for backward-mode
differentiation the JVP rule is "translated" into the VJP rule via
transposition. Could you point me to the relevant piece of code, or are
there any references on this technique?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/google/jax/pull/5225#issuecomment-750401838, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAJJFVTDX3UCS4XQ66GFGN3SWIS7NANCNFSM4VBNBBZQ
.

@shoyer LGTY?

@shoyer LGTY?

Just to confirm -- your changed unit-tests would fail with the original (unmodified) JVP rule?

Just to confirm -- your changed unit-tests would fail with the original (unmodified) JVP rule?

Yes. Here are the tests on the unmodified JVP rule, which is exactly what one would expect.
[ RUN      ] NumpyLinalgTest.testSVD_n=complex128[2,3,29,7]_full_matrices=False_compute_uv=False
[       OK ] NumpyLinalgTest.testSVD_n=complex128[2,3,29,7]_full_matrices=False_compute_uv=False
[ RUN      ] NumpyLinalgTest.testSVD_n=complex128[53,3]_full_matrices=False_compute_uv=False
[       OK ] NumpyLinalgTest.testSVD_n=complex128[53,3]_full_matrices=False_compute_uv=False
[ RUN      ] NumpyLinalgTest.testSVD_n=complex64[2,3,3,53]_full_matrices=False_compute_uv=False
[       OK ] NumpyLinalgTest.testSVD_n=complex64[2,3,3,53]_full_matrices=False_compute_uv=False
[ RUN      ] NumpyLinalgTest.testSVD_n=complex64[3,53,7]_full_matrices=False_compute_uv=True
[  FAILED  ] NumpyLinalgTest.testSVD_n=complex64[3,53,7]_full_matrices=False_compute_uv=True
[ RUN      ] NumpyLinalgTest.testSVD_n=float32[2,3,29,53]_full_matrices=True_compute_uv=False
[       OK ] NumpyLinalgTest.testSVD_n=float32[2,3,29,53]_full_matrices=True_compute_uv=False
[ RUN      ] NumpyLinalgTest.testSVD_n=float32[2,3,7,53]_full_matrices=False_compute_uv=False
[       OK ] NumpyLinalgTest.testSVD_n=float32[2,3,7,53]_full_matrices=False_compute_uv=False
[ RUN      ] NumpyLinalgTest.testSVD_n=float32[3,7,7]_full_matrices=False_compute_uv=False
[       OK ] NumpyLinalgTest.testSVD_n=float32[3,7,7]_full_matrices=False_compute_uv=False
[ RUN      ] NumpyLinalgTest.testSVD_n=float32[7,29]_full_matrices=False_compute_uv=True
[       OK ] NumpyLinalgTest.testSVD_n=float32[7,29]_full_matrices=False_compute_uv=True
[ RUN      ] NumpyLinalgTest.testSVD_n=float64[29,7]_full_matrices=False_compute_uv=False
[       OK ] NumpyLinalgTest.testSVD_n=float64[29,7]_full_matrices=False_compute_uv=False
[ RUN      ] NumpyLinalgTest.testSVD_n=float64[3,7,3]_full_matrices=False_compute_uv=False
[       OK ] NumpyLinalgTest.testSVD_n=float64[3,7,3]_full_matrices=False_compute_uv=False

Yes. Here are the tests on the unmodified JVP rule, which is exactly what one would expect.
[ RUN      ] NumpyLinalgTest.testSVD_n=complex128[2,3,29,7]_full_matrices=False_compute_uv=False
[       OK ] NumpyLinalgTest.testSVD_n=complex128[2,3,29,7]_full_matrices=False_compute_uv=False
[ RUN      ] NumpyLinalgTest.testSVD_n=complex128[53,3]_full_matrices=False_compute_uv=False
[       OK ] NumpyLinalgTest.testSVD_n=complex128[53,3]_full_matrices=False_compute_uv=False
[ RUN      ] NumpyLinalgTest.testSVD_n=complex64[2,3,3,53]_full_matrices=False_compute_uv=False
[       OK ] NumpyLinalgTest.testSVD_n=complex64[2,3,3,53]_full_matrices=False_compute_uv=False
[ RUN      ] NumpyLinalgTest.testSVD_n=complex64[3,53,7]_full_matrices=False_compute_uv=True
[  FAILED  ] NumpyLinalgTest.testSVD_n=complex64[3,53,7]_full_matrices=False_compute_uv=True
[ RUN      ] NumpyLinalgTest.testSVD_n=float32[2,3,29,53]_full_matrices=True_compute_uv=False
[       OK ] NumpyLinalgTest.testSVD_n=float32[2,3,29,53]_full_matrices=True_compute_uv=False
[ RUN      ] NumpyLinalgTest.testSVD_n=float32[2,3,7,53]_full_matrices=False_compute_uv=False
[       OK ] NumpyLinalgTest.testSVD_n=float32[2,3,7,53]_full_matrices=False_compute_uv=False
[ RUN      ] NumpyLinalgTest.testSVD_n=float32[3,7,7]_full_matrices=False_compute_uv=False
[       OK ] NumpyLinalgTest.testSVD_n=float32[3,7,7]_full_matrices=False_compute_uv=False
[ RUN      ] NumpyLinalgTest.testSVD_n=float32[7,29]_full_matrices=False_compute_uv=True
[       OK ] NumpyLinalgTest.testSVD_n=float32[7,29]_full_matrices=False_compute_uv=True
[ RUN      ] NumpyLinalgTest.testSVD_n=float64[29,7]_full_matrices=False_compute_uv=False
[       OK ] NumpyLinalgTest.testSVD_n=float64[29,7]_full_matrices=False_compute_uv=False
[ RUN      ] NumpyLinalgTest.testSVD_n=float64[3,7,3]_full_matrices=False_compute_uv=False
[       OK ] NumpyLinalgTest.testSVD_n=float64[3,7,3]_full_matrices=False_compute_uv=False

Hi, just wanted to leave relevant links here where differentiation rules for complex-valued SVD are derived.
https://giggleliu.github.io/2019/04/02/einsumbp.html
https://arxiv.org/abs/1909.02659

Hi, just wanted to leave relevant links here where differentiation rules for complex-valued SVD are derived.
https://giggleliu.github.io/2019/04/02/einsumbp.html
https://arxiv.org/abs/1909.02659

The failing TPU tests are almost certainly yet another manifestation of the surprisingly low default precision for TPU matmul (https://github.com/google/jax/issues/2161). To fix them, either try setting precision=lax.Precison.HIGHEST inside jnp.matmul, or feel free to skip the test entirely on TPU, e.g.,
    if jtu.device_under_test() == "tpu":
      raise unittest.SkipTest("TPU matmul does not have enough precision")

The failing TPU tests are almost certainly yet another manifestation of the surprisingly low default precision for TPU matmul (https://github.com/google/jax/issues/2161). To fix them, either try setting precision=lax.Precison.HIGHEST inside jnp.matmul, or feel free to skip the test entirely on TPU, e.g.,
    if jtu.device_under_test() == "tpu":
      raise unittest.SkipTest("TPU matmul does not have enough precision")

Thanks! GPU tests are passing, but TPU tests are still failing. Example failure:
NumpyLinalgTest.testSVD_n=float32[2,29]_full_matrices=False_compute_uv=True

AssertionError:
Not equal to tolerance rtol=0.001, atol=0.0005

Mismatch: 86.2%
Max absolute difference: 0.03964618
Max relative difference: 0.22800188
 x: array([[-6.51828 ,  1.907845,  1.439919, -1.211914,  3.241142,  0.213531,
        -0.334927,  2.037017, -0.959   , -5.248371,  3.44313 , -0.882515,
        -5.530334,  0.243767, -5.050095,  0.480526,  6.139389, -1.660263,...
 y: array([[-6.503403,  1.909549,  1.441591, -1.208022,  3.229221,  0.173885,
        -0.340035,  2.025751, -0.968591, -5.264877,  3.430215, -0.867395,
        -5.54072 ,  0.249359, -5.049953,  0.474082,  6.128053, -1.67023 ,...

I'd recommend following @shoyer's advice above and skip the TPU tests for now, with a TODO to re-enable them; someone with more direct access to TPU runtimes can iterate faster to fix the issue.

Thanks! GPU tests are passing, but TPU tests are still failing. Example failure:
NumpyLinalgTest.testSVD_n=float32[2,29]_full_matrices=False_compute_uv=True

AssertionError:
Not equal to tolerance rtol=0.001, atol=0.0005

Mismatch: 86.2%
Max absolute difference: 0.03964618
Max relative difference: 0.22800188
 x: array([[-6.51828 ,  1.907845,  1.439919, -1.211914,  3.241142,  0.213531,
        -0.334927,  2.037017, -0.959   , -5.248371,  3.44313 , -0.882515,
        -5.530334,  0.243767, -5.050095,  0.480526,  6.139389, -1.660263,...
 y: array([[-6.503403,  1.909549,  1.441591, -1.208022,  3.229221,  0.173885,
        -0.340035,  2.025751, -0.968591, -5.264877,  3.430215, -0.867395,
        -5.54072 ,  0.249359, -5.049953,  0.474082,  6.128053, -1.67023 ,...

I'd recommend following @shoyer's advice above and skip the TPU tests for now, with a TODO to re-enable them; someone with more direct access to TPU runtimes can iterate faster to fix the issue.

Failures are unrelated, due to the issue in #5374
Can you sqash your commits and rebase on master? Thanks!

Failures are unrelated, due to the issue in #5374
Can you sqash your commits and rebase on master? Thanks!

I hope this looks good. There are actually still a few code comments that are obsolete. Should I remove the TODO by phawkins?

I hope this looks good. There are actually still a few code comments that are obsolete. Should I remove the TODO by phawkins?

We merged this PR. If you want to send another doing any cleanup, that'd be welcome.

We merged this PR. If you want to send another doing any cleanup, that'd be welcome.

Thanks @frederikwilde, this is an awesome contribution!

Thanks @frederikwilde, this is an awesome contribution!

Yeah, thanks! Amazing work!

Yeah, thanks! Amazing work!

Thanks everyone! Also for maintaining this great package. It's been an educating experience all the way :-)

Thanks everyone! Also for maintaining this great package. It's been an educating experience all the way :-)


Refactor globals into a PlayerState table

There are too many globals that keep track of the various aspect of player state:
OnePlayer, TwoPlayer, PersonalUndo, PersonalRedo, LastCoords, LastRedoCoords and possibly more.
These should all be refactored into a single player state table:
local State = GetPlayerState(a_Player:GetUniqueID())
State.Selection:SetFirstPoint(50, 50, 50)
State.Selection:SetSecondPoint(70, 70, 70)
State:PushUndo(SomeBlockArea)
-- etc.

I think this can now be closed?

I'm closing this.


Creating and retrieving flat composition

Hi,
I’m trying to create flat composition of a template using docker container. I’m facing issues mentioned below after restarting docker composer multiple times.
During first try I’m able to create a composition, But after restarting multiple times, If I commit a composition I will get an error as mentioned below:
{
“error”: “java.lang.IllegalArgumentException: Composition missing mandatory attribute: language”,
“status”: “Internal Server Error”
}
Secondly, I’m able to retrieve a composition using compositionId which is fetched after committing a composition. But after restarting, If I try to retrieve a same composition I can see different path coming up in the link attached below:
https://drive.google.com/file/d/1XhWp2BUR53VCkKt8V4LU6gHc0AwS2i3Q/view?usp=sharing
Please find the attached template for your reference.
https://drive.google.com/file/d/1zBIuVo9-E2s79f3-0O9nNtaFaBp4eaB-/view?usp=sharing
Thanks,
Raksha R

The ctx shorcut is not supported right now:
"ctx/language"
try with
"diagnosis/language|terminology": "ISO_639-1",
"diagnosis/language|code": "en",
I don't understand you second problem since you retrieving  to different compositions:
ehrbase/rest/ecis/v1/compositiond4fbb010-21cb-4ccf-84d8-ab83a15b2748
0/ehrbase/rest/ecis/v1/composition817379f4-00ff-4161-a03c-8f1bb4e46da1

Hi,
The below mentioned paths works once started the service, i.e before restarting service.
"ctx/language"
"diagnosis/language|terminology": "ISO_639-1",
"diagnosis/language|code": "en"
But after restarting couple of times, throws an error:
{
“error”: “java.lang.IllegalArgumentException: Composition missing mandatory attribute: language”,
“status”: “Internal Server Error”
}
And, I'm retrieving the composition using same compositionId but could see different paths coming up.
I have updated the document.

Can you post the result of /ehrbase/rest/ecis/v1/template/EHRN Diagnosis.v1 and /ehrbase/rest/openehr/v1/definition/template/adl1.4/EHRN Diagnosis.v1
Was the Template EHRN Diagnosis.v1  updated/changed during the runtime of the system
Since the ip of your two request is different. A you running multiple instances of ehrbase on the same db.

I have updated the result in the above mentioned link. Please have a look at it.
The template was not updated during the runtime.

I didn't understand the 3rd point mentioned.

When I click on https://drive.google.com/file/d/1XhWp2BUR53VCkKt8V4LU6gHc0AwS2i3Q/view I can only see your old Reuest.
Can you please Provider a updated link.