Shared face information broken on distributed nc tet meshes

Hi,
found a bug with shared faces on nc tet meshes.
Reproduction should be easy:
mpirun -np 2 ex15p -m ../data/escher.mesh -r 2 -tf 0.3 -est 1

which yields
Options used:
   --mesh ../data/escher.mesh
   --problem 0
   --nfeatures 1
   --order 2
   --max-err 0.0001
   --hysteresis 0.25
   --ref-levels 2
   --nc-limit 3
   --t-final 0.3
   --estimator 1
   --visualization
   --no-visit-datafiles

Time 0

Refinement:
Iteration: 1, number of unknowns: 4401, total error: 0.00878944
Iteration: 2, number of unknowns: 5275

Assertion failed: (data && i >= 0 && i < height && j >= 0 && j < width) is false:
 -->
 ... in function: double &mfem::DenseMatrix::operator()(int, int)
 ... in file: /home/termi/Repos/mfem-master/linalg/densemat.hpp:928

Backtrace:
0) [0x5ad41f]: mfem::mfem_error(char const*)
1) [0x5eaf11]: mfem::DenseMatrix::operator()(int, int)
2) [0x7e1098]: mfem::ParNCMesh::GetFaceNeighbors(mfem::ParMesh&)
3) [0x7ac684]: mfem::ParMesh::ExchangeFaceNbrData()
4) [0xbbb87e]: mfem::ParFiniteElementSpace::ExchangeFaceNbrData()
5) [0xbdbac5]: mfem::ParGridFunction::ExchangeFaceNbrData()
6) [0x9f67dc]: mfem::KellyErrorEstimator::ComputeEstimates()
7) [0x9faf0e]: mfem::KellyErrorEstimator::GetLocalErrors()
8) [0x6ef76f]: mfem::ThresholdRefiner::ApplyImpl(mfem::Mesh&)
9) [0x57d3be]: mfem::MeshOperator::Apply(mfem::Mesh&)
10) [0x57a302]: main
11) [0x7fe4f645ff89]: __libc_start_main
12) [0x578839]: _start

Lookup backtrace source lines:
addr2line -C -e ex15p 0x5ad41f 0x5eaf11 0x7e1098 0x7ac684 0xbbb87e 0xbdbac5 0x9f67dc 0x9faf0e 0x6ef76f 0x57d3be 0x57a302
addr2line -C -e /lib64/libc.so.6 0x7fe4f645ff89
addr2line -C -e ex15p 0x578839

--------------------------------------------------------------------------
MPI_ABORT was invoked on rank 1 in communicator MPI_COMM_WORLD
with errorcode 1.

You may or may not see output from other processes, depending on
exactly when Open MPI kills them.

I can reproduce this against latest release (4.3) and latest master (0843a87).
Edit: Just remember that this was already broken when implementing Kelly (see #1722).
Edit 2: Better MWE.
#include "mfem.hpp"
#include <fstream>
#include <iostream>

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 = "../data/star-hilbert.mesh";

   OptionsParser args(argc, argv);
   args.AddOption(&mesh_file, "-m", "--mesh", "Mesh file to use.");
   args.Parse();
   if (!args.Good())
   {
      if (myid == 0)
      {
         args.PrintUsage(cout);
      }
      MPI_Finalize();
      return 1;
   }

   // 3. 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 = new Mesh(mesh_file, 1, 1);
   int dim = mesh->Dimension();
   int sdim = mesh->SpaceDimension();

   // 4. Project a NURBS mesh to a piecewise-quadratic curved mesh. Make sure
   //    that the mesh is non-conforming if it has quads or hexes and refine it.
   mesh->EnsureNCMesh(true);
   // Make sure tet-only meshes are marked for local refinement.
   mesh->Finalize(true);

   // 5. Define a parallel mesh by partitioning the serial mesh.  Once the
   //    parallel mesh is defined, the serial mesh can be deleted.
   ParMesh pmesh(MPI_COMM_WORLD, *mesh);
   delete mesh;

   // pmesh.ExchangeFaceNbrData(); // <- works

   // 6. Do any refinement ...
   pmesh.RandomRefinement(0.25);

   // ... to crash this
   pmesh.ExchangeFaceNbrData();

   // 7. Exit
   MPI_Finalize();
   return 0;
}

Works:
mpirun -np 2 nc-tet-mwe -m ../data/amr-hex.mesh

Crashes:
mpirun -np 2 nc-tet-mwe -m ../data/escher.mesh

Assertion failed: (data && i >= 0 && i < height && j >= 0 && j < width) is false:
 -->
 ... in function: double &mfem::DenseMatrix::operator()(int, int)
 ... in file: /home/termi/Repos/mfem-master/mesh/../linalg/densemat.hpp:928

Backtrace:

Assertion failed: (data && i >= 0 && i < height && j >= 0 && j < width) is false:
 -->
 ... in function: double &mfem::DenseMatrix::operator()(int, int)
 ... in file: /home/termi/Repos/mfem-master/mesh/../linalg/densemat.hpp:928

Backtrace:
0) [0x582abf]: mfem::mfem_error(char const*)
0) [0x582abf]: mfem::mfem_error(char const*)
1) [0x5fbcf1]: mfem::DenseMatrix::operator()(int, int)
1) [0x5fbcf1]: mfem::DenseMatrix::operator()(int, int)
2) [0x736f18]: mfem::ParNCMesh::GetFaceNeighbors(mfem::ParMesh&)
2) [0x736f18]: mfem::ParNCMesh::GetFaceNeighbors(mfem::ParMesh&)
3) [0x700644]: mfem::ParMesh::ExchangeFaceNbrData()
3) [0x700644]: mfem::ParMesh::ExchangeFaceNbrData()
4) [0x572f70]: main
4) [0x572f70]: main
5) [0x7fbbf7d0cf89]: __libc_start_main
5) [0x7f093a1ccf89]: __libc_start_main
6) [0x572c19]: _start

[...]

so this is unrelated to my Kelly implementation.

Okay, I can reproduce the error with mpirun -np 2 ex15p -m ../data/escher.mesh -r 2 -tf 0.3 -est 1.
The illegal access happens here: https://github.com/mfem/mfem/blob/0843a87d7953cf23e556dcfd426d27bd9cfb3e21/mesh/pncmesh.cpp#L1126
I think that this method does not really work for triangle faces, in general, as suggested several lines above the crash line, here: https://github.com/mfem/mfem/blob/0843a87d7953cf23e556dcfd426d27bd9cfb3e21/mesh/pncmesh.cpp#L1122-L1128
Basically, we are trying to swap columns 2 and 4 (corresponding the vertices 2 and 4 in a quad) in a 2x3 matrix whose columns are the vertices of a triangle.
Originally ex15p was using conforming refinement for simplices, however that was changed (in #949) to always use non-conforming refinement. You can switch back to conforming refinement for simplices, here: https://github.com/mfem/mfem/blob/0843a87d7953cf23e556dcfd426d27bd9cfb3e21/examples/ex15p.cpp#L160
by calling Mesh::EnsureNCMesh() (same as Mesh::EnsureNCMesh(false)). With this change the example seems to work fine.
In any case, this is a bug in the non-conforming refinement (when handling non-conforming shared triangle faces) that we should fix. Thanks for reporting it Dennis!

Maybe I am too naive here, but if we only need to flip the orientation here, then why not choose the points 0 and 2 instead of 1 and 3? From my understanding all we want to do here is just to flip the face orientation. Therefore swapping these points should flip the orientation for triangles and quads correctly.
This patch seems to fix this issue. However, for tet meshes with nonlinear geometry (using esher-p2 for my tests) sometimes another assertion is triggered:
mpirun -np 16 ./ex15p -m ../data/escher-p2.mesh -r 1 -est 1 -e 0.00001
[...]
Assertion failed: (fnbr.Size() <= bound) is false:
 --> oops, bad upper bound
 ... in function: void mfem::ParNCMesh::GetFaceNeighbors(mfem::ParMesh &)
 ... in file: mesh/pncmesh.cpp:939
[...]

but the following command does not crash:
mpirun -np 16 ex15p -m ../data/escher-p2.mesh -r 1 -tf 1.3 -est 1 -e 0.001

Neither valgrind nor asan detected faulty memory accesses.

Hi @termi-official ,
I may be wrong but if you swap points 0 and 2, this might change the orientation on top of flipping the face, whereas swapping only 1 and 3 only flips the face.

Hi @YohannDudouit ,
probably I misunderstand two things.
First regarding the orientation. Taking the quad
3-2
| |
0-1

which rotates counterclockwise. Then swapping 0 and 2 we obtain
3-0
| |
2-1

which rotates clockwise. So I agree on this point that we changed the orientation. However if we swap 1 and 3, we obtain
1-2
| |
0-3

which also rotates clockwise. Both actions correspond to a flip into the plane, but with different diagonals. They also can be seen as different reflections, which should, to the best of my knowledge, change the orientation. However, I guess I just misunderstand what the point matrix is - I am happy to be corrected here.
The second question is then regarding the implementation. Going through the local comments of the function I understood the problem as follows: We want to change the orientation of the master face, because, when we arrive at this code section, the master face has the wrong orientation with respect to the slave element (which is the convention we need to construct the P matrix correctly).

I see your point, I think it's a matter of definition, what is the flipped face of:
3-2
| |
0-1

?
I think the answer is in geom.cpp:927-931:
Constants<Geometry::SQUARE>::Orient[8][4] =
{
   {0, 1, 2, 3}, {0, 3, 2, 1}, {1, 2, 3, 0}, {1, 0, 3, 2},
   {2, 3, 0, 1}, {2, 1, 0, 3}, {3, 0, 1, 2}, {3, 2, 1, 0}
};

Even orientations are non-flipped and Odd orientations are the flipped ones, so the flipped orientation of {0, 1, 2, 3} is  {0, 3, 2, 1}; and not {2, 1, 0, 3} which is the flipped orientation of {2, 3, 0, 1}.
Regarding your second question, I'm not sure I understand what you are referring to. What I know about the master/slave faces is that shared master faces have a special convention. There is usually two conventions that are conflicting in this one case, creating a special case, these two conventions are:

The local element is always elem 0 (of the face).
The slave element is always elem 0.
For shared master faces these two conventions are conflicting, so the local element is elem 0, but the slave element is elem 1 (special case). This means that the normal is inverted compared to shared slave face on the other MPI rank.
Is it what was confusing you?

I see. Thanks for sharing these details! That definitely clears up my confusion.

Now looking at making this work for tets, we have to reflect the orientations:
https://github.com/mfem/mfem/blob/539f663fe6ad3738b6de9615f6c74dfa44927578/fem/geom.cpp#L909-L913
As you can see, there is no canonical swap of points that would flip the face similarly to Geometry::SQUARE. So the code highlighted by @v-dobrev should probably be put in a function called something like FlipSquareFacePointMatrix:
https://github.com/mfem/mfem/blob/0843a87d7953cf23e556dcfd426d27bd9cfb3e21/mesh/pncmesh.cpp#L1122-L1128
And a specialized similar function should be written for Geometry::TRIANGLE.

Sorry, I think I am still missing something essential here. If I understand correctly then the flipped representation of the face {0, 1, 2} is {1, 0, 2}, in the point matrix the first and second entry has to be swapped, right?
To reflect this in the face information bit 1 in the associated bitvector (i.e. Elem2Info) must be flipped and the associated element index needs to be updated. The last two steps should be similar in the case of triangles and quadrangles, right?

I've just started running into this issue for some NC Tet adaptation. Based on the discussion above, for a quad, there's a single operation (swapping the 1 and 3 entries in the point matrix) that flips a quad irrespective of what it's orientation was. Given the entry in geom.cpp:
Constants<Geometry::TRIANGLE>::Orient[6][3] =
{
   {0, 1, 2}, {1, 0, 2}, {2, 0, 1},
   {2, 1, 0}, {1, 2, 0}, {0, 2, 1}
};

the flipping operation is specific to which of the 3 pairs of orientations the triangle is in, to swap the 0 and 1 entries. Thus to flip requires knowing which orientation the triangle is originally.
Assuming the even/odd flipping pattern described by @YohannDudouit, then the flip would be defined (rather lazily) by:
int ind = 0; // 0,1,2,3,4,5 (the first index into Orient[6][3]
    switch (ind)
    {
        case 0:
        case 1:
        std::swap((*pm2)(0,0), (*pm2)(0, 1));
        std::swap((*pm2)(1,0), (*pm2)(1, 1));
        break;
        case 2:
        case 3:
        std::swap((*pm2)(0,1), (*pm2)(0, 2));
        std::swap((*pm2)(1,1), (*pm2)(1, 2));
        break;
        case 4:
        case 5:
        std::swap((*pm2)(0,0), (*pm2)(0, 2));
        std::swap((*pm2)(1,0), (*pm2)(1, 2));
        break;
    }

or to avoid any hardcoding
auto orient = Constants<Geometry::Triangle>::Orient[ind];
auto loc0 = std::find(std::begin(orient), std::end(orient), 0) - std::begin(orient);
auto loc1 = std::find(std::begin(orient), std::end(orient), 1) - std::begin(orient);
std::swap((*pm2)(0,loc0), (*pm2)(0, loc1));
std::swap((*pm2)(1,loc0), (*pm2)(1, loc1));

This requires knowing what the orientation of that face was initially however, i.e. the ind variable above. It's unclear to me how to extract this from the other data inside of GetFaceNeighbors presently.

A problem is that once this code section is fixed some other things break downstream, which I have not fully understood yet (could not find time to take a closer look).

mpirun -np 16 ex15p -m ../data/escher-p2.mesh -r 1 -tf 1.3 -est 1 -e 0.001

I have managed to trigger the same error on linear tetrahedra meshes (oops, bad upper bound) elsewhere, after doing the fix for the bad access with operator() , so I don't think it's unique to q2 meshes. This was after a few rounds of amr within some application code, so I don't have the mesh to hand however. The bug also triggers for the above parameters with -np 2 and with -r 0. I added a little extra print to the asserts and it looks like both ranks end up with one more entry than the bound value.

Commenting out the assert (I believe this is just to warn that Append would've had to allocate), I believe I have made a little more progress. I believe the real issue is related to the "edge-face" constraint as described here. In particular this line is introducing the possibility of negative indices being stored in slave.index, which when passed to this line blows up.
Changing to Mesh::FaceInfo &fi = pmesh.faces_info[sf.index >= 0 ? sf.index : -1 -sf.index]; ought to solve that indexing error, but I've not been able to check using a visualization of ex15p yet, due to some issues running glvis. I'm also not entirely sure what the implications for Elem1Inf or Elem2Inf would be either.

Whilst working on this I now have what I think is a minimum unit test that triggers all the above issues for a P1 tet with which to test. It's a little flabby, but the key is it is triggering a face-edge constraint. It's available on the branch hughcars/pncmesh-face-edge-constraint-bug, where it is added to test_ncmesh.cpp in the MPI section.
For discussion purposes, I'll paste the test here too:
TEST_CASE("FaceEdgeConstraint",  "[Parallel], [NCMesh]")
{
   auto mesh = Mesh("../../data/ref-tetrahedron.mesh");

   REQUIRE(mesh.GetNE() == 1);
   {
      // Start the test with two tetrahedra attached by triangle.
      auto single_edge_refine = Array<Refinement>(1);
      single_edge_refine[0].index = 0;
      single_edge_refine[0].ref_type = Refinement::X;

      mesh.GeneralRefinement(single_edge_refine, 0); // conformal
   }

   REQUIRE(mesh.GetNE() == 2);
   mesh.EnsureNCMesh(true);

   auto partition = new int[mesh.GetNE()];
   partition[0] = 0;
   partition[1] = Mpi::WorldSize() > 1 ? 2 : 1;

   auto pmesh = ParMesh(MPI_COMM_WORLD, mesh, partition);

   Array<int> refines;
   if (Mpi::WorldRank() == 0)
   {
      refines.Append(0);
   }

   // Rank 0 uniform refines.
   pmesh.GeneralRefinement(refines, 1); // nonconformal

   REQUIRE(pmesh.GetGlobalNE() == 8 + 1);

   // Rank 0 has all but one element.
   for (int i = 0; i < pmesh.GetGlobalNE() - 1; ++i)
   {
      Array<int> refines;
      if (Mpi::WorldRank() == 0)
      {
         refines.Append(i);
      }

      ParMesh tmp(pmesh);
      tmp.GeneralRefinement(refines);

      REQUIRE(tmp.GetGlobalNE() == 1 + 8 - 1 + 8); // 16 elements

      // Loop over all the elements now on rank 0, and refine each of those.
      // This is sufficient to trigger an edge-face constraint. In particular
      // the (i,j) = (2,13) combination. Again, Rank 0 has all but one element.
      for (int j = 0; j < tmp.GetGlobalNE() - 1; ++j)
      {
         if (Mpi::WorldRank() == 0)
         {
            refines[0] = j;
         }
         ParMesh ttmp(tmp);
         ttmp.GeneralRefinement(refines);

         REQUIRE(ttmp.GetGlobalNE() == 1 + 8 - 1 + 8 - 1 + 8); // 23 elements
         ttmp.ExchangeFaceNbrData(); // <-- Here be dragons.
      }

      tmp.ExchangeFaceNbrData();
   }

   delete [] partition;
} // test case

Thanks again for picking up on this @hughcars and thanks for the hard work! Sorry for the delay on this, I am a bit buried in deadlines but fixing this issue is now important for me. After looking into this I do not think that the face-edge constraint is the problem here - however it helped me tracking down the issue further, so thanks!  Also, I can also reproduce the issue with refinement only, but not in 3 steps.

I think is fixed by #3587 after some internal testing. Thanks for the hard work on tracking this one down and making the fix @hughcars !

Happy to help! If you run into anything else weird please let me know, I am really in the eye of the storm with NCMesh and non-hex meshes presently so would invite the extra data ha.

Thanks. Turns out my Kelly error indicator implementation is broken on master (which is why reviewing your PR took so long for me). But I have almost a fix together of it which I will try to put online today.
There are actually 2 things which I could not address when poking around in the NCMesh implementation which I can share.

The performance does not scale well with increasing number of elements. I think this can be attributed to the used search algorithms, but I stopped at some point to measure detailed performance. I might pick this up again at some point. If you have an idea on how performance can be increased I am happy to discuss it together and do the implementation.
Tree traversal during AMR. It can be beneficial to have a user-facing API which allows to access the information how element and face indices change during refinement and derefinement. I stopped here because I could not find a good angle on how to track face information (which is also kinda related to the point 1). Also happy to discuss this and to tackle the implementation part.

I think we should shift further discussion on these two things into separate issues. For the latter I have started a discussion thread here https://github.com/orgs/mfem/discussions/2985 . For the former I can open a discussion thread if there is interest.

This might be the case, but I would be pretty skeptical until some high granularity profiling data is available. Moving around in NCMesh though, there is an enormous scope for using the stl rather then home rolled algorithms. For instance, most of the Table structures could be easily handled by an unordered_map, for which we can design perfect hashes given we know so much information about the keys a priori. Right now I am focused on correctness rather than performance however, so I have only changed these over in cases where it improves readability, leaving the serious refactors for once I have feature completeness.
Not sure about this. My view is the user shouldn't be comparing face/element indices at all from adapt to adapt. After a refinement/coarsen, so many predicates and invariants are going to have been violated, that the mesh should be thought of as conceptually entirely new. The NCMesh internals obviously are doing all the book keeping, but a user should not be going near this stuff imho, as it's unbelievably easy to think you understand it and be radically incorrect (at least speaking from my personal experience diving into this). UI cleanliness suggests furnishing this information to users is a Bad Idea(TM).

Your example of the multigrid is interesting, I have tried putting a geometric multigrid on top of the NC structure already, and concluded it wasn't worth the effort presently. However, it would likely be helpful to have an interface to generate a "coarsened" mesh that is one step of coarsening on all leaf elements (namely pruning the tips). Doing this a stage at a time would then generate a sequence of meshes defining a GMG, without relying on an inter element transfer that spans multiple NC levels. This would not however need an exposure of the full tree (again, I think such an interface is ripe for misuse and misunderstanding) but just a void CoarsenLeaves(int nlevel = 1) const; method on the ParMesh class that mutates the mesh by pruning nlevels of leaves. The GMG would then just be a sequence of copy and coarsen levels, with a very very simple user experience.

Thanks for elaborating. I might give it a shot introduce some more sophisticated hashing, but cannot promise anything. I also somewhat agree on point 2, but I actually have several use cases where recomputing everything hurts the performance of my schemes really badly. I often just have very few elements being de-/refined and I can reuse tons of cached stuff on the elements which have not been refined.

Hi @hughcars , you have done many works in nc meshes. Do you have interests or plans in continuing the variable-order space support? https://github.com/mfem/mfem/pull/1817
Best,
Adam

Hi @adam-sim-dev.
No, I am not intending to work on variable order spaces at this time. I am focused entirely on non conformal adaptation for H1, ND and to a lesser extent RT spaces on mixed meshes, at fixed (high) polynomial order. There is a small amount of overlap between mixed meshes and mixed order, as some structures are reused, but if I make progress on mixed order, that will be entirely incidental.
Hugh


DockerTimeoutException at image pulling but manual pull is working fine

Description
When calling com.spotify.docker.client.DockerClient#pull(java.lang.String) to pull an image from a private registry, sometimes will see this error thrown at the end of pulling process, while the progress shows everything is downloaded and extracted,
2016-09-30 14:56:34.315 - INFO LoggingPullHandler: pull myregistry.com:myimage:1.0: ProgressMessage{id=046135e4fd93, status=Extracting, stream=null, error=null, progress=347.4 MB/347.4 MB, progressDetail=ProgressDetail{current=347362857, start=0, total=347362857}}

...

Caused by: com.spotify.docker.client.exceptions.DockerTimeoutException: Timeout: POST http://mymachine.com:4243/images/create?fromImage=myregistry.com:myimage&tag=1.0
        at com.spotify.docker.client.ProgressStream.hasNextMessage(ProgressStream.java:58)
        at com.spotify.docker.client.ProgressStream.tail(ProgressStream.java:76)
        at com.spotify.docker.client.DefaultDockerClient.pull(DefaultDockerClient.java:987)
        at com.spotify.docker.client.DefaultDockerClient.pull(DefaultDockerClient.java:961)
        at com.spotify.docker.client.DefaultDockerClient.pull(DefaultDockerClient.java:955)
        ... 12 more
Caused by: java.net.SocketTimeoutException: Read timed out
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
        at java.net.SocketInputStream.read(SocketInputStream.java:170)
        at java.net.SocketInputStream.read(SocketInputStream.java:141)
        at org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:139)
        at org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:155)
        at org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:284)
        at org.apache.http.impl.io.ChunkedInputStream.getChunkSize(ChunkedInputStream.java:266)
        at org.apache.http.impl.io.ChunkedInputStream.nextChunk(ChunkedInputStream.java:227)
        at org.apache.http.impl.io.ChunkedInputStream.read(ChunkedInputStream.java:186)
        at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:137)
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
        at java.io.FilterInputStream.read(FilterInputStream.java:133)
        at org.glassfish.jersey.message.internal.EntityInputStream.read(EntityInputStream.java:101)
        at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream.read(ReaderInterceptorExecutor.java:302)
        at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.loadMore(UTF8StreamJsonParser.java:180)
        at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._skipWSOrEnd2(UTF8StreamJsonParser.java:2904)
        at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._skipWSOrEnd(UTF8StreamJsonParser.java:2899)
        at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.java:692)
        at com.fasterxml.jackson.databind.MappingIterator.hasNextValue(MappingIterator.java:240)
        at com.spotify.docker.client.ProgressStream.hasNextMessage(ProgressStream.java:56)
        ... 17 more

However, when trying to use docker pull or call Docker REST API directly the pulling will always succeed.
How to reproduce
Actually not sure about this. The issue happens randomly for me, but more frequently on a system where the pulling is slower.
What do you expect
This is probably more of a question of why this would happen sometimes using the spotify docker-client.
I know there are two attributes
com.spotify.docker.client.DefaultDockerClient.Builder#connectTimeoutMillis
com.spotify.docker.client.DefaultDockerClient.Builder#readTimeoutMillis
but not sure if increasing these two would help in this case.

I think this could be resolved easily by having 'pull' use a 'noTimeoutClient' like some of the other commands (spotify/docker-client@b76fc63). Basically, operations that can take an arbitrary amount of time need to be using a connection that allows unlimited timeout (where timeout is defined by the maximum amount of time allowed to elapse between non-empty reads by the client).
On the other hand, one could argue that if a pull had inactivity for more than 30s, then there's clearly some network connectivity issues and clients should actually handle the exception and inform the user. Is this consistently reproducible in spotify/docker-client and not reproducible in the docker cli ?
I've run into a similar reports (See https://bugs.eclipse.org/bugs/show_bug.cgi?id=494131) but it always seemed like network issues.

I ended up resolving it by calling com.spotify.docker.client.DefaultDockerClient.Builder#connectTimeoutMillis(long) to explicitly give it a longer timeout to 30 seconds.
But I'm still suspecting it's not a pure intermittent network issue. Using cli always succeeds while user spotify client would fail very frequently without this tweaking. It might be due to the cli by default has a more tolerant timeout setting, but I haven't got time to find it out yet.

I've run into this before as well. I tend to agree with @rgrunber that if the pull times out after the default 30 seconds, it's probably better to fail. To be clear the 30 seconds TTL in DefaultDockerClient is specifically the max period of inactivity between two consecutive data packets.
I'll close this issue as there's a workaround but am open to discussing more if this is an issue for more people.


Wrong platform tag? Or is test.pypi.org confused? Or is my system weird?

I've upgraded my old project to uv, and here's what I get when I uv build it:

linux architecture is aarch64 ⛔
macos architecture is arm64 ✅

Here are the built artefacts from Linux and macOS:
> ls -lt dist/
total 88
-rw-r--r-- 1 dima dima 12446 Dec  3 14:04 awaitwhat-24.11rc1.tar.gz
-rw-r--r-- 1 dima dima 19554 Dec  3 14:04 awaitwhat-24.11rc1-cp39-cp39-linux_aarch64.whl
-rw-r--r-- 1 dima dima 19936 Dec  3 14:04 awaitwhat-24.11rc1-cp38-cp38-linux_aarch64.whl
-rw-r--r-- 1 dima dima 12812 Dec  3 13:54 awaitwhat-24.11rc1-cp38-cp38-macosx_11_0_arm64.whl
-rw-r--r-- 1 dima dima 13987 Dec  3 13:54 awaitwhat-24.11rc1-cp39-cp39-macosx_10_9_universal2.whl

When I try to push these to test.pypi.org, linux_aarch64 wheels are rejected:
> uv publish --publish-url https://test.pypi.org/legacy/ dist/*
warning: `uv publish` is experimental and may change without warning
Publishing 5 files https://test.pypi.org/legacy/
Enter username ('__token__' if using a token): __token__
Enter password:
Uploading awaitwhat-24.11rc1-cp38-cp38-linux_aarch64.whl (19.5KiB)
error: Failed to publish `dist/awaitwhat-24.11rc1-cp38-cp38-linux_aarch64.whl` to https://test.pypi.org/legacy/
  Caused by: Upload failed with status code 400 Bad Request. Server says: 400 Binary wheel 'awaitwhat-24.11rc1-cp38-cp38-linux_aarch64.whl' has an unsup  Caused by: Upload failed with status code 400 Bad Request. Server says: 400 Binary wheel 'awaitwhat-24.11rc1-cp38-cp38-linux_aarch64.whl' has an unsup

> uvx twine upload --verbose --repository-url https://test.pypi.org/legacy/ dist/*
Uploading distributions to https://test.pypi.org/legacy/
INFO     dist/awaitwhat-24.11rc1-cp38-cp38-linux_aarch64.whl (19.5 KB)
INFO     dist/awaitwhat-24.11rc1-cp38-cp38-macosx_11_0_arm64.whl (12.5 KB)
INFO     dist/awaitwhat-24.11rc1-cp39-cp39-linux_aarch64.whl (19.1 KB)
INFO     dist/awaitwhat-24.11rc1-cp39-cp39-macosx_10_9_universal2.whl (13.7 KB)
INFO     dist/awaitwhat-24.11rc1.tar.gz (12.1 KB)
INFO     username set by command options
INFO     Querying keyring for password
Enter your API token:
INFO     username: __token__
INFO     password: <hidden>
Uploading awaitwhat-24.11rc1-cp38-cp38-linux_aarch64.whl
100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 30.8/30.8 kB • 00:00 • 134.0 MB/s
INFO     Response from https://test.pypi.org/legacy/:
         400 Binary wheel 'awaitwhat-24.11rc1-cp38-cp38-linux_aarch64.whl' has an unsupported platform tag 'linux_aarch64'.
INFO

           <title>400 Binary wheel 'awaitwhat-24.11rc1-cp38-cp38-linux_aarch64.whl' has an unsupported platform tag 'linux_aarch64'.</title>

400 Binary wheel 'awaitwhat-24.11rc1-cp38-cp38-linux_aarch64.whl' has an unsupported platform tag 'linux_aarch64'.

           The server could not comply with the request since it is either malformed or otherwise incorrect.

         Binary wheel 'awaitwhat-24.11rc1-cp38-cp38-linux_aarch64.whl' has an unsupported platform tag 'linux_aarch64'.

ERROR    HTTPError: 400 Bad Request from https://test.pypi.org/legacy/
         Binary wheel 'awaitwhat-24.11rc1-cp38-cp38-linux_aarch64.whl' has an unsupported platform tag 'linux_aarch64'.

P.S. I've installed python using uv; I can only build this library with oldish pythons, <3.10, meanwhile uv only provides >3.7, thus I'm limited to 2 Python versions I can experiment with.

Thanks for the report. cc @konstin

PyPI only accepts manylinux (or musllinux) wheels that are compatible with a wide range of linux systems, but not the plain linux_* tag, you need to run audithwheel on the built wheels. The tag of the wheel is something that's not decided by uv, but the build backend. Most build backends expect the user to run auditwheels themselves before publishing.

FWIW, here's my entire setup
[project]
name = "awaitwhat"
version = "24.11-rc1"
description = "async/await introspection"
authors = [{name="Dima Tisnek"<EMAIL_ADDRESS>license = { file = "LICENSE" }
readme = "readme.md"
keywords = ["asyncio"]
classifiers = [
  "Development Status :: 3 - Alpha",
  "Programming Language :: Python :: Implementation :: CPython",
  "Framework :: AsyncIO",
  "Topic :: Software Development :: Debuggers",
  "Programming Language :: Python :: 3.6",
  "Programming Language :: Python :: 3.7",
  "Programming Language :: Python :: 3.8",
  "Programming Language :: Python :: 3.9",
  "Operating System :: POSIX :: Linux",
  "Operating System :: MacOS :: MacOS X",
  "Operating System :: Microsoft :: Windows",
]

[project.urls]
homepage = "https://github.com/dimaqq/awaitwhat"
repository = "https://github.com/dimaqq/awaitwhat"
documentation = "https://github.com/dimaqq/awaitwhat"

[build-system]
requires = ["setuptools>=42", "wheel"]
build-backend = "setuptools.build_meta"

[tool.setuptools]
packages = ["awaitwhat"]
ext-modules = [
    { name = "awaitwhat._what", sources = ["awaitwhat/what.c"] }
]

I'm very open to suggestions if there's something more modern that I should be using over setuptools.
I figure that would be useful for other who migrate their legacy projects to uv 🦀 🌈 🦄

For C extensions, I recommend running auditwheel over your linux wheels before uploading them.


Remove assert on downcast, fixing a panic

Fixes #821
Apparently in cairo you can downcast a smaller type into a bigger type (even both being non bounded ints), the code was already in place to handle this conversion (only needed to remove a unreachable and handle that path, i added a comment there).
Checklist

[ ] Linked to Github Issue
[ ] Unit tests added
[ ] Integration tests added.
[ ] This change requires new documentation.

[ ] Documentation has been added/updated.

Codecov Report
Attention: Patch coverage is 0% with 1 line in your changes missing coverage. Please review.

Project coverage is 87.88%. Comparing base (7aeaa8c) to head (17eb0de).

Files with missing lines
Patch %
Lines

src/libfuncs/cast.rs
0.00%
1 Missing :warning:

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #822   +/-   ##
=======================================
  Coverage   87.88%   87.88%
=======================================
  Files         122      122
  Lines       34270    34265    -5
=======================================
- Hits        30117    30115    -2
+ Misses       4153     4150    -3

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Realsense-Viewer: Minor issue with file name of saved/loaded map

Required Info

Camera Model
T265

Firmware Version
<IP_ADDRESS>7

Operating System & Version
Ubuntu 16.04

Kernel Version (Linux Only)
4.15.0-66 generic

Platform
PC

SDK Version
2.30.0 pre-release

Language
python

Segment
others

Issue Description
When you save a map the save dialog suggests to append the .raw extension to the given name. But it doesn't. Trying to reload opens a dialog, which filters for .raw and finds nothing, obviously. You need to change the filter to "all files" in order to see the saved map.

Thank you @neilyoung
We should address it eventually

Hi @neilyoung
This thread should now be taken care of by the following PR:
https://github.com/IntelRealSense/librealsense/pull/5370
If so let's go ahead and close the thread.  If it's still open let us know.

Agreed. I will check. Closing this for now

Not fixed, see https://github.com/IntelRealSense/librealsense/pull/5370#issuecomment-568869711

Hi @neilyoung
Latest RSViewer 2.33.1 saves map with .map extension even if no extension is explicitly applied to filename by user.  When importing map file, the RSViewer shows files with the .map extension for selection by user.
No further updates planned for saving/loading maps.


Research on deployment and infrastructure for Discord bots

As an
Operations
I want to
Research on creating an infrastructure for discord bots
In order to
Implement an infrastructure for development, integration, deployment, and all related activities for discord bots

Acceptance Criteria

[ ] Documentation on the findings available in the Wiki

Currently researching on related infrastructure and discord bot hosting services aside from AWS and Azure Cloud. I am traversing the internet and discord dev communities hoping I will get an insight. Should I post my findings here as comment?

@ssuish yes, please

This is my opinionated suggestions based on what I read on their documentation and product services. I choose them based on the pricing, reputation, and reliability. Since we just starting, I disregarded probable hosting services that may cost above 5$, AWS/Azure/G-Cloud services, and other service provider offering free trial.
Pipe's self hosted server: Free

@voo#6115 (pipe) actively offers his self-hosted server to host our discord bot. We can use it as temporary server host until we needed to scale up our bot to a proper server.

Sparkedhost: 1$/mo
Offers:

50% shared CPU
512mb RAM/ 5GB SSD
SFTP Access/ DDoS Protection
Free MySQL DB/Git Support
Dedicated Bot IP
Most popular Discord bot hosting service provider.

Limitations:

Closest Server is in Singapore, expected heavy traffic and latency.
Unmanaged and offers Basic support.

Link: Sparkedhost Services
Digital Ocean 4$/mo
Offers:

Basic Droplet plan is suitable for low traffic servers
512 Mib Memory/1 vCPU/ 500 Gib Transfer/10 Gib SSD
Best for low-medium load and low traffic apps.
running on shared CPU that uses 1st gen or older Intel Xeon/AMD Epyc processors.
Documentation for setting up Discord bot is available.

Limitations:

Droplets have a maximum network throughput limit of 2 Gbps.
Root password resets are not available for operating systems with internally-managed passwords.

Link Digital Ocean Plans

Oracle Cloud provides a tiny but good free VPS.

Google Cloud has a free always-tier VPS.

1 non-preemptible e2-micro VM instance per month in one of the following US regions:
* Oregon: us-west1
* Iowa: us-central1
* South Carolina: us-east1

Amazon AWS also has a one-year free VPS.

The first thought I had was a Raspberry Pi but uh, out of stock, but cloud is the best choice

This is my opinionated suggestions based on what I read on their documentation and product services. I choose them based on the pricing, reputation, and reliability. Since we just starting, I disregarded probable hosting services that may cost above 5$, AWS/Azure/G-Cloud services, and other service provider offering free trial.
Pipe's self hosted server: Free

@voo#6115 (pipe) actively offers his self-hosted server to host our discord bot. We can use it as temporary server host until we needed to scale up our bot to a proper server.

Sparkedhost: 1$/mo Offers:

50% shared CPU
512mb RAM/ 5GB SSD
SFTP Access/ DDoS Protection
Free MySQL DB/Git Support
Dedicated Bot IP
Most popular Discord bot hosting service provider.

Limitations:

Closest Server is in Singapore, expected heavy traffic and latency.
Unmanaged and offers Basic support.

Link: Sparkedhost Services
Digital Ocean 4$/mo Offers:

Basic Droplet plan is suitable for low traffic servers
512 Mib Memory/1 vCPU/ 500 Gib Transfer/10 Gib SSD
Best for low-medium load and low traffic apps.
running on shared CPU that uses 1st gen or older Intel Xeon/AMD Epyc processors.
Documentation for setting up Discord bot is available.

Limitations:

Droplets have a maximum network throughput limit of 2 Gbps.
Root password resets are not available for operating systems with

internally-managed passwords.

Link Digital Ocean Plans

I hosted a bot at sparked host, used dallas(?) Server i think. All seems well, bot latency was like 29-32ms


Provide way to view the current value of Settings

Currently there is no one place a user can view their settings. They need to click across User, Remote, and Workspace. It would be very helpful if here was a way to view all the current values.
For example, the setting view could should the inherited value in addition to the default value. For example, when in Workspace instead of just saying "Modified in User". The view could show something like "Modified in User to 100".

Getting the current value of a setting requires more context than those three scopes so I'm unsure how implementable the "one place a user can view their settings" idea is
https://code.visualstudio.com/docs/getstarted/settings#_settings-precedence
For showing inherited values, I'd consider that a duplicate of https://github.com/microsoft/vscode/issues/58038.
For showing values in other scopes from a current scope, that sounds more realistic to me, but I wouldn't be surprised if there was a performance impact from loading setting values in other scopes, and I'm not sure how more complicated settings such as object settings would be rendered.

This issue has been closed automatically because it needs more information and has not had recent activity. See also our issue reporting guidelines.
Happy Coding!


DSP-23003 Port batchlog_endpoint_strategy config

Port bug: DB-1367 - Add batchlog_endpoint_strategy config to improve batchlog endpoint selection
Jira https://datastax.jira.com/browse/DSP-23003
Compare to original DSE commit https://github.com/jasonstack/apollo/commit/29fecd1f49d2bb539da573786f93fd9b0ba205c4#diff-03e0ee2c01f2ca4d3b15d3a1fc4917d8737861c15d8c83cb73b352fe9da22d1a
This change set is different from that patch in that the changes take place in ReplicaPlans.java instead of batchlogManger.java to simplify future merge conflicts.
Adds original batchlog_endpoint_strategy options:

random_remote (default)
dynamic_remote
dynamic

while also keeping compatibility with Allow to filter batchlog endpoints by preferring the local rack via existing perferLocal boolean parameter and also a new batchlog_endpoint_strategy: prefer_local

LGTM.
A few minor concerns:

the dse. property prefix (i don't have an answer or concrete opinion to this though), see comment,
have we done multiplexing tests on this ?
have tried rebasing this patch to cassandra's trunk, and cassandra-5.0 ?  (I don't see TCM touching any of this stuff, but i'd want to double-check that – it might influence how we/you want the patch done in earlier branches…)

FYI: you have some conflicts to fix in your branch as it has conflicts with the main branch


Modals are kept opened after page refresh

What happened?
https://github.com/kodadot/nft-gallery/assets/36627808/83cb3635-ec92-4349-ade4-d61aaa856da1
Keep modal open -> refresh

👋

not sure is it a bug or a feature?
cc @exezbcz @daiagi

@floyd-li I think this functionality is okay no? what about @daiagi, is it standard to do it like this?

Yeah I'm thinking the same, I think we can let it be as it is

all right, thank you all


Can't get loader to parse .styl

What am I doing wrong?
Thanks in advance
https://stackoverflow.com/questions/38707504/webpack-stylus-loader-isnt-able-to-parse-styl-file-in-react-component

I tried to take a look at this too @akrueger and couldn't reproduce your error. It definitely seems, given the error, that webpack isn't applying your style loaders and is trying to parse it as javascript. If you can post a minimum reproduction on github stack-overflow or people here may be able to help more.


fix generics usage in JpaTicketRegistry

minor generic fix up I noticed while reviewing other code.

I'll let this live in master for now, but lmk if you want it elsewhere.

Master is fine, its just a style bug, no actual interaction change/buginess


Ts 4423

Please rebase to remove the merge commit.

Also update the commit message :)

Dropped the merge commit and made an enum instead of magic numbers. What's wrong with the commit message @zwoop? I just grabbed the name from the bug.

The preferred commit message is:
TS-1234: less than 80 chars.

Feel free to add an extended explanation into the body of the commit message. It makes it easier than having to refer back to Jira tickets and pull requests.
I think @zwoop may have been referring to the PR subject, which should generally be the same as the leading commit.

 So, I think we should recommend
TS-1234 < 50 character Subject

Some longer text can come here.
With more lines, and longer lines, but still < 80 characters per line.

That sounds good to me. Will try to adhere to in the future. I just went with "Update Show Location Options" for this guy

Cool. And this PR still needs some fixing too on the commit message :).

Ah, my mistake there. Didn't realize it'd autopopulated w/ something bad.

meh we landed this without testing on the CI :-/. It breaks the builds.


glyph_width(code_point) throws exception if @by_codepoint doesn't contain a matching glyph

Here's the method that this bubbles up to:
      def glyph_width(code_point)
        return 0 if code_point.nil? || code_point < 0

        m = @metrics.char_metrics_by_code[code_point]
        if m.nil?
          names = @font.encoding.int_to_name(code_point)
          m = names.map { |name|
            @metrics.char_metrics[name.to_s]
          }.compact.first
        end

        if m
          m[:wx]
        elsif @font.widths[code_point - 1]
          @font.widths[code_point - 1]
        elsif control_character?(code_point)
          0
        else
          0
        end
      end

I have a pdf that causes unicode_to_name(codepoint) to return nil which eventually results in names not being set and names.map will throw a method not found exception.
Here's the section:
    def unicode_to_name(codepoint)
      @by_codepoint[codepoint.to_i]
    end

My specific codepoint that caused this was 157 which will return nil
Here's a gist of my @by_codepoint hash that is missing this element:
https://gist.github.com/scytherswings/c4c8bf08bcc58b3979e9

If glyph_width(code_point) gets a nil check on that return value I think it should solve the problem:
def glyph_width(code_point)
        return 0 if code_point.nil? || code_point < 0

        m = @metrics.char_metrics_by_code[code_point]
        if m.nil?
          names = @font.encoding.int_to_name(code_point)

          if names.nil?
            return 0
          end

          m = names.map { |name|
            @metrics.char_metrics[name.to_s]
          }.compact.first
        end

        if m
          m[:wx]
        elsif @font.widths[code_point - 1]
          @font.widths[code_point - 1]
        elsif control_character?(code_point)
          0
        else
          0
        end
      end

Thanks for this, I've merged your fix from #163 with a small modification.


flutter web app with Firefox

Hi,
I wrote an app for web device. When I execute a flutter run command app works fine with all browsers (Chrome, Edge, Firefox). When I deploy with flutter build web on NodeJS server, the application doesn't work with Firefox.
Here the error log with Firefox :

Version of Firefox 91.13.0esr
My flutter doctor :
[✓] Flutter (Channel stable, 3.0.3, on CentOS Linux 7 (Core) 3.10.0-1062.4.1.el7.x86_64, locale fr_FR.UTF-8) [✗] Android toolchain - develop for Android devices     ✗ Unable to locate Android SDK.       Install Android Studio from: https://developer.android.com/studio/index.html       On first launch it will assist you in installing the Android SDK components.       (or visit https://flutter.dev/docs/get-started/install/linux#android-setup for detailed instructions).       If the Android SDK has been installed to a custom location, please use       flutter config --android-sdk` to update to that location.
[✓] Chrome - develop for the web
[!] Linux toolchain - develop for Linux desktop
✗ pkg-config 0.29.0 or later is required.
[!] Android Studio (not installed)
[✓] IntelliJ IDEA Community Edition (version 2021.2)
[✓] VS Code (version 1.60.2)
[✓] Connected device (2 available)
[✓] HTTP Host Availability
`

Hello @charlesHenryPATARD. Can you provide the following information:

A complete and minimal, reproducible example.
Detailed reproduction steps. If possible, try to deploy on a static CDN like Netlify and confirm whether the issue persists.
Output of flutter doctor -v

Hi,
The bug is no page load with Firefox after a build and deploy web app. The same app works fine with Chrome and Edge.
In flutter run the app works fine.

A complete and minimal, reproducible example.

I Execute flutter run and then display the dev tools of Chrome

Then I copy paste the flutter run url (example  http://localhost:40336/#/) in firefox. The app is displayed and works fine, but I've got this error in dev tools console :

After this steps I run a flutter build web and deploy the app on NodeJs server
When I display my app on Chrome everything is ok but on Firefox :

The

flutter doctor -v

[✓] Flutter (Channel stable, 3.0.3, on CentOS Linux 7 (Core) 3.10.0-1062.4.1.el7.x86_64, locale fr_FR.UTF-8)
• Flutter version 3.0.3 at /home/patard/Logiciels/flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 676cefaaff (2 months ago), 2022-06-22 11:34:49 -0700
• Engine revision ffe7b86a1e
• Dart version 2.17.5
• DevTools version 2.12.2
[✗] Android toolchain - develop for Android devices
✗ Unable to locate Android SDK.
Install Android Studio from: https://developer.android.com/studio/index.html
On first launch it will assist you in installing the Android SDK components.
(or visit https://flutter.dev/docs/get-started/install/linux#android-setup for detailed instructions).
If the Android SDK has been installed to a custom location, please use
flutter config --android-sdk to update to that location.
[✓] Chrome - develop for the web
• Chrome at google-chrome
[!] Linux toolchain - develop for Linux desktop
• clang version 3.4.2 (tags/RELEASE_34/dot2-final)
• cmake3 version 3.17.5
• ninja version 1.10.2
• pkg-config version 0.27.1
✗ pkg-config 0.29.0 or later is required.
[!] Android Studio (not installed)
• Android Studio not found; download from https://developer.android.com/studio/index.html
(or visit https://flutter.dev/docs/get-started/install/linux#android-setup for detailed instructions).
[✓] IntelliJ IDEA Community Edition (version 2021.2)
• IntelliJ at /home/patard/Logiciels/Intellij/idea-IC-212.5080.55
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
[✓] VS Code (version 1.60.2)
• VS Code at /usr/share/code
• Flutter extension version 3.27.0
[✓] Connected device (2 available)
• Linux (desktop) • linux  • linux-x64      • CentOS Linux 7 (Core) 3.10.0-1062.4.1.el7.x86_64
• Chrome (web)    • chrome • web-javascript • Google Chrome 93.0.4577.82
[✓] HTTP Host Availability
• All required HTTP hosts are available
It's not a Flutter/Dart issue but a build JavaScript issue.

Can you please provide a code sample so that I may verify this issue? Also, can you test on the latest stable 3.3.0 and confirm if the issue still persists?

You want to test my app ? I can give you my code but you can't use it.
We use locale databases and one dart package that we wrote. I think that we have some trouble with our package. I need to make some tests and I will let you know.

I do not need your app's code but rather a complete and minimal, reproducible example. A code sample which you are using to reproduce the issue. This could be a demo project too. If it's reproducible with the default counter app, please do mention that too.

It's not reproducible with demo app. This is the reason why I think that we have introduced a bug with our homemade package.

Unfortunately, without a way to reproduce this issue, we cannot verify and investigate it further. If you are able to produce a sample, please do post it here so that I can verify it. Thank you.

Hi,
As I said in previous posts, we developped a Logger for flutter. I commented all calls to our Logger in my app and then deploy it. It's works now with firefox.
I give you our Logger code and yopu can try to use it in a testing app of your choice.
logger.zip
To use it you have to create a class like this :
`import 'package:web_logger/web_logger.dart';
class AppLogger
{
static WebLogger logger = new WebLogger();
}`
and then in each .dart file you can add a trace like this :
`AppLogger.logger.enterMethodParam("blabla");
AppLogger.logger.exitMethod();`

or with levels
AppLogger.logger.info("blabla"); AppLogger.logger.error("blabla"); AppLogger.logger.warning("blabla"); AppLogger.logger.verbose("blabla"); ....
Thank you.

Have you found the source of the issue? We would need a code sample that reproduces this issue. Unfortunately, the zip file you provided is too large with too much unnecessary code so I cannot really verify the issue. Could you provide a sample with minimal code, and without any 3rd party libraries included so that we can verify whether this is an error with Flutter or not.

@exaby73 I have a other question for you.
Do the server and the client need to have an access to the internet ?
I tested to deploy a web flutter on a local server that have no connection to the internet and the app doesn't works properly. Just because it's try to get the Material Icons on the web.
In the other side, I tried to use an app with a client that do not have access to the internet. The client try to download the canavaskit.js.

Do the server and the client need to have an access to the internet ?

If you use Canvaskit, yes the app will download the fonts and Canvaskit files from external URLs, meaning you need the internet. But if you use the HTML renderer by running flutter run -d chrome --web-renderer html or flutter build web --web-renderer html, it will download only the static files served on server you've deployed to, meaning you don't need internet past the files that Flutter generated

Thank you @exaby73 for your answer,
I will try to build my app with --web-renderer option. I think that we can close the issue.


Examples Page is Down

Hi,
Tried to access the examples page at https://react-table.js.org/#/story/simple-table
But only getting a Cloudflare Error 1101
Hope you get this back up again, because it was a great source for me to learn how to integrate react-tables into my project.

The examples for v6 have been archived into the v6 branch at this location: https://github.com/tannerlinsley/react-table/tree/master/archives/v6-examples.
Feel free to open any of them in a codesandbox or locally to see them in action!
The React-Table.js.org site will soon be redirecting to the github repo. The repo will then be used as the primary source of documentation.

Thanks for the quick response. Works!.. not so handy as the old solution but I can work with it.
Thank you very much!

I was disappointed to find out the example site was removed. Searching through the examples folder by folder is not nearly as easy as it was on the website =(

A new examples experience will be available soon.
On Tue, Feb 12, 2019 at 1:25 PM Frank Hale<EMAIL_ADDRESS>wrote:

I was disappointed to find out the example site was removed. Searching
through the examples folder by folder is not nearly as easy as it was on
the website =(
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/tannerlinsley/react-table/issues/1261#issuecomment-462920446,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFUmCTYp5JFy3i2OVMFCZv20UdsPCITtks5vMyM5gaJpZM4a05qI
.

The examples for v6 have been archived into the v6 branch at this location: https://github.com/tannerlinsley/react-table/tree/master/archives/v6-examples.
Feel free to open any of them in a codesandbox or locally to see them in action!
The React-Table.js.org site will soon be redirecting to the github repo. The repo will then be used as the primary source of documentation.

Hi I am not seeing Any HOC examples like Select Tree

In the future maybe don't take down an old examples page before the new release of examples page is finished.


When 2 different notes are placed immediately before and after a loop, XGM continues playing the note/instrument from the end of the song

Minimal Example
In the attached DMF, at the start of the loop:
A-2 7A 0
And at the end of the song, on the same line as the loop marker (0B 01):
C#5 -- 0
After the output VGM is converted to XGM and played in game, the loop will play that first line (A-2) and many consecutive ones as C#5 instead.
This also effects instruments. If for example the C#5 line used instrument 5 the A-2 line would also be played with instrument 5 instead of 0 like it should.
While reproducing with the test track I noticed this does not happen if the destination of the loop is the very start (0B 00).

Thanks for providing a minimal reproducible test case ! I need to investigate in that, i guess it's a problem from the VGM to XGM converter.

Should be fixed (finally ^^)

Awesome! I'll have to upgrade when I have some free time


Remove Snyk automated PRs -- dependabot handles this already

Summary
In the previous Contributors meeting, we discussed several improvements to our dependency automation.
One of these that I proposed was to remove automated Snyk PRs.
Use Cases
Pros

Dependabot already handles security updates, so we are duplicating tooling and duplicating PRs right now

We already have dependabot configured in several ways, including to align with DCO and PR title. Snyk fails both these checks so its automated PRs will currently never pass CI without manual intervention. Example Snyk PR failing checks
Old comment from Alex C saying the same thing

Snyk is also creating dependency update PRs that are not for any known security issues or CVEs, entirely duplicating dependabot
Snyk is currently using individual tokens for some PRs, which are themselves not ideal for security. Example Snyk PRs using individual tokens

Not sure how to configure these either
Some do use the snyk-bot though, not sure when that occurs.

Snyk sometimes gives inaccurate or buggy data in its automated PRs. Example incorrect data
Snyk does not preserve PR history or lineage well. Dependabot will try to rebase PRs and will say if it opened a new PR that supersedes an old PR. Snyk does not, and so I have manually commented on several Snyk PRs to notate that they were superseded

Closing a PR or issue without a comment is summarily confusing. This is partly due to how it is being used though

Many Snyk PRs are summarily closed by maintainers anyway. Examples

This adds even more PR noise and confusion, especially as those are closes without comments.

We still use Snyk for scanning in CI and do not plan to change that. This is just for Snyk's automated PRs.

Cons

I suppose Snyk could potentially raise different PRs from dependabot, but that is not necessarily a good thing
@sarabala1979 mentioned that Snyk was a requirement for CNCF graduation

If I had to guess, this was that some form of dependency scanning was a requirement. We're not removing Snyk scanning, just automated PRs. We also already have automated PRs via dependabot, so there is no loss in capability either.
Anton (me) to ask @crenshaw-dev if he remembers anything about this requirement.

Message from the maintainers:
Love this enhancement proposal? Give it a 👍. We prioritise the proposals with the most 👍.

I agree we should stop those automated PRs. I believe only @sarabala1979, and I have automated PRs from Snyk. That can be disabled from Snyk from our Snyk account/project settings.

@sarabala1979 mentioned that Snyk was a requirement for CNCF graduation

I couldn't find anything myself about this. The official CNCF graduation criteria do not mention this. They just mention some requirements about best practices and a published security audit. Nothing specific like using Snyk.
I did recall this old issue which mentions "CNCF security engagement", but unfortunately has no real details or links to that (I assume this was from one of the audits? not sure).

Anton (me) to ask @crenshaw-dev if he remembers anything about this requirement.

I asked @crenshaw-dev and @alexec about this if they recall anything. Got a response from @crenshaw-dev yesterday (he was OOO for a few weeks) who did not recall such a requirement and thought the same as me re: "some tool for dependency scanning, e.g. Snyk". We also have a very legitimate reason for this (see the whole issue etc) and are not reducing any of our scanning capabilities either, so our security posture does not change.
So I don't think we have any real reasons to not move forward with this, IMO

I have updated my personal Snyk account settings to not automatically create PRs. The last PR created by Snyk bot https://github.com/argoproj/argo-workflows/pull/10798 was a while back so I think we should be fine now.

@sarabala1979 could you check your personal Snyk account? Once you've changed your settings, feel free to close out this issue.

Done. Removed Snyk scaning


Fix Unsqueeze with negative axis

Better to check if https://github.com/onnx/onnx/pull/2347 fixes this issue

/test


Feature: Twitter X SVG

Added Twitter X SVG to the library

#710 Issue related

Duplicated #642

I see the commit but can't see the logo, where can we find it?


RT

==> Installing nginx-full from homebrew/nginx
==> Downloading https://nginx.org/download/nginx-1.10.1.tar.gz
Already downloaded: /Users/wanderer_xiang/Library/Caches/Homebrew/nginx-full-1.10.1.tar.gz
==> ./configure --prefix=/usr/local/Cellar/nginx-full/1.10.1 --with-http_ssl_mod
Last 15 lines from /Users/wanderer_xiang/Library/Logs/Homebrew/nginx-full/01.configure:
--http-client-body-temp-path=/usr/local/var/run/nginx/client_body_temp
--http-proxy-temp-path=/usr/local/var/run/nginx/proxy_temp
--http-fastcgi-temp-path=/usr/local/var/run/nginx/fastcgi_temp
--http-uwsgi-temp-path=/usr/local/var/run/nginx/uwsgi_temp
--http-scgi-temp-path=/usr/local/var/run/nginx/scgi_temp
--http-log-path=/usr/local/var/log/nginx/access.log
--error-log-path=/usr/local/var/log/nginx/error.log
--add-module=/usr/local/share/rtmp-nginx-module
checking for OS

Darwin 15.6.0 x86_64
checking for C compiler ... not found

./configure: error: C compiler clang is not found
READ THIS: https://git.io/brew-troubleshooting
If reporting this issue please do so at (not Homebrew/brew):
https://github.com/Homebrew/homebrew-nginx/issues

READ THIS: https://git.io/brew-troubleshooting
If reporting this issue please do so at (not Homebrew/brew):
https://github.com/Homebrew/homebrew-nginx/issues

😉


conventions: decode unsigned integers to signed if _Unsigned=false

netCDF3 doesn't know unsigned while OPeNDAP doesn't know signed (bytes).
Depending on which backend source is used, the original data is stored
with the wrong signedness and needs to be decoded based on the _Unsigned
attribute. While the netCDF3 variant is already implemented, this commit
adds the symmetric case covering OPeNDAP.

[x] Closes #4954
[x] Tests added
[x] Passes pre-commit run --all-files
[x] User visible changes (including notable bug fixes) are documented in whats-new.rst

Would anyone who knows this area better than me be able to review @pydata/xarray ?

In this _Unsigned='false' convention documented anywhere?
That said, this seems safe enough...

I don't know if this qualifies as "documentation", but according to this merged PR on the netcdf-c sources, this is how the thredds OPeNDAP server behaves, from which they conclude that netCDF should behave accordingly. I confirmed myself that this also is how my currently installed netCDF-C behaves.

I don't know if this qualifies as "documentation", but according to this merged PR on the netcdf-c sources, this is how the thredds OPeNDAP server behaves, from which they conclude that netCDF should behave accordingly. I confirmed myself that this also is how my currently installed netCDF-C behaves.

OK, that's good enough for me!

Thanks @d70-t


Environment variable ANSYS_PATH is not used

Before submitting the issue

[X] I have searched among the existing issues
[X] I am using a Python virtual environment

Description of the bug
The ANSYS_PATH environment variable, despite being described in an Error message as the way to indicate a custom ANSYS installation folder, is not used in the code (server.py/start_local_server). Despite the "ansys_path" argument in the signature of start_local_server, if None, only the AWP_ROOTXXX of the most recently supported version, as well as regular C:/Program Files/ANSYS Inc/vXXX folders are checked.
The argument should be used, if None, then use ANSYS_PATH, and if None, then look for Ansys installations at AWP_ROOT and default install folder.
Steps To Reproduce
Having an older ANSYS install in a custom repository should reproduce the error.
Which Operating System are you using?
Windows
Which Python version are you using?
3.9
Installed packages
NA

any updates?


Add support for using Redis as a cache and a broker

[ ] Check if the TCP socket options work on windows (if InvenTree supports windows)
[ ] Figure out how to create or modify a test action to test this code path

Nice @nwns  - what still needs to be implemented here?

@nwns this is still marked as a draft - is there anything else you want to implement?

@SchrodingersGat Trying to work out how to get one of the tests (probably the postgres one or a separate test) to use redis to make sure that the code path of storing in Redis is tested.

No worries, let me know if you need any assistance working that out

@SchrodingersGat This should be good to go.

Thanks @nwns :) looks good!


unable to add a custom action after selecting radion button from radioGroup ?

i want to make my custom action along with state updation when radio buttion is selected from radioGroup.
<Field name={id} component={RadioButtonGroup} onChange={this.handleRadioSelect}>
{radioButtons}
</Field>
when i write onChange event listener redux form state is not updating ?

any update on this?

Just an update on this. I managed to make this work after updating to
redux-form 6.5.0
my redux-form-material-ui is 4.1.2

closing this. Thanks for the update @reggieboyYEAH


Remove fedoraToOcflMapping

JIRA Ticket: https://jira.lyrasis.org/browse/FCREPO-3357
What does this Pull Request do?
Remove the FedoraToOcflIndex mapping when the resource is purged (ie. tombstone is removed)
How should this be tested?
Follow steps to cause the error in the attached ticket, with this PR you should get no error.
Interested parties
@fcrepo4/committers

To account for possible dangling indexes and mappings inside transaction this will be significantly different. Closing.


Linear option doesn’t seems to work

When we choose the "Linear/radial gradient" all is working fine if the project is in "Gamma mode". With the project in "Liner mode", the "linear" options appears in the texture but it doesn't seem to change anything checking or not. I generated a simple gradient from pure black to pure white and used this texture in a simple shader (Unity version 2021 LTS).

My impression is that there might be an issue in the LinearGradient package but not in this package. I'll look into it.
https://github.com/keijiro/LinearGradient

Unfortunately not.


[MINOR] Consolidate in-memory/rocksdb unit tests for window & session store

Consolidated the unit tests by having {RocksDB/InMemory}{Window/Session}StoreTest extend {Window/Session}BytesStoreTest. Besides some implementation-specific tests (eg involving segment maintenance) all tests were moved to the abstract XXXBytesStoreTest class. The test coverage now is a superset of the original test coverage for each store type.
The only difference made to existing tests (besides moving them) was to switch from list-based equality comparison to set based, in order to reflect that the stores make no guarantees regarding the ordering of records returned from a range fetch.
There are some implementation-specific tests that were left in the corresponding test class. The RocksDBWindowStoreTest, for example, had several tests pertaining to segments and/or the underlying filesystem. Another key difference is that the in-memory versions should delete expired records aggressively, while the RocksDB versions should only remove entirely expired segments

I'm not too attached to the name but I felt AbstractXXXStoreTest was not appropriate as that is already in use for the key-value stores, where the abstract test is extending by all kv stores (eg Caching, etc also included). At some point we should do the same for window/session stores, but the scope of this PR is just to consolidate tests for the two store flavors that share API and behavior.
Call for review @bbejeck @cadonna @abbccdda @guozhangwang @vvcephei @mjsax

Can you comment on why there are a couple of tests with different verification, depending on the implementation?

@vvcephei PR description updated with these comments

LGTM! Merged to trunk.


Reverse use of "angular.mock.e2e.$httpBackendDecorator" in a module with "ngMockE2E" as a dependency

Hi:
I ran into a situation where I (as the front-end dev) was getting to the point where I couldn't make much more progress without a working back-end API. So, I implemented Vojta's suggestion to use ngMockE2E to make a fake backend:
https://groups.google.com/forum/#!topic/angular/grbwk-VehDE
http://jsfiddle.net/vojtajina/DQHdk/
I set this up in a separate "dev" module that depends on the main app module so that the backendless development mode could be kept separate from the regular app, and can be seamlessly removed once the real back-end API is ready.
I think I also referenced a couple of other blogs/posts on the same topic because one difference is that I specified 'ngMockE2E' as a dependency for my dev module. So essentially my code looked like:

angular
  .module('AppDev', [
    'ngMockE2E',
    'App'
  ])

  .config(function($provide) {
    $provide.decorator('$httpBackend', angular.mock.e2e.$httpBackendDecorator);
  })

  .run(function ($httpBackend) {
    // templates
    $httpBackend.whenGET(/partials\/.*/).passThrough();

    $httpBackend.whenGET('http://localhost:8080/api/users/1').respond(200, { ... });
    ...
  })
;

However, when I was doing that, the call to passThrough() was failing. I eventually discovered that including the call to .config(function($provide) { ... }) was causing the $httpBackend inside of run() to be initialized with the unit test version of $httpBackend (which doesn't have passThrough()) instead of the E2E version. Removing the whole .config() block, however, caused the code to run just fine.
I figured I'd mention it because 1) it seems counter-intuitive, and 2) someone else could be stuck on the same thing, so hopefully this will help them.

Not sure if this was ever a rea issue. ngMockE2E provides the decorator itself.


Adds retry steps to other IAM components

This satisfies the simple solution to osd-5610.

DRY'd up the error handler, but not sure if there's a non-hacky way to do the retry.do().

/lgtm


when I use my own validator, detect-change="off" doesn't work

I define my validator like this:

  Vue.validator('IDNumber', function (val) {     return Validator.isValid(val);   });
<input type="text" initial="off" v-model="race_registration.certificate_number" initial="off" detect-change="off" detect-blur="on" v-validate:certificate_number="['IDNumber']" v-on:blur="autocomplete($event)"  placeholder="请输入证件号码">

but validator keep detecting changes

Thank you for your reporting!!
I tried confirmed, however I could not  reproduce the your reporting behavior.
Can you provided the minimum reproduction codes with jsfiddle or jsbin please ?

In-activity


Put ingress and egress in the app namespace + auto create config map from istioctl kube-inject

What this PR does / why we need it:
Fixes istio/pilot#1154 (cannot have multiple CA  in the same cluster, listening to all namespaces)
Solution is to limit the CA to the app namespace (it can only restrict to one namespace currently). Since CA also generates secrets for ingress and egress, in adition to apps, moved ingress and egress to the app namespace.
Works around istio/pilot#1153 to improve UX, but it is not the final fix.
Renames appNamespace to watchedNamespace and other minor fixes.
Which issue this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged): fixes #
Fixes istio/pilot#1154
Fixes istio/pilot#1132
Fixes istioctl build from go, broken by some blackfriday dependency in md2man (?)
Special notes for your reviewer:
Release note:

@andraxylia: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/pilot-presubmit.sh
00bd38869f441888d9e82ecef9f570a13f9059b3
link
/test pilot-presubmit

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@andraxylia: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/pilot-presubmit.sh
725919b5ccdea797bd8096fd285f8561fe40d694
link
/test pilot-presubmit

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@andraxylia: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/pilot-e2e-smoketest.sh
51f77319a970359dcd4f426c7372d4497013ea17
link
/test pilot-e2e-smoketest

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/test pilot-e2e-smoketest

@andraxylia: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/pilot-e2e-smoketest.sh
51f77319a970359dcd4f426c7372d4497013ea17
link
/test pilot-e2e-smoketest

prow/pilot-presubmit.sh
9a03e36f9165222adcbcc2c10320f9f9f3e3c945
link
/test pilot-presubmit

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@andraxylia: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/pilot-e2e-smoketest.sh
51f77319a970359dcd4f426c7372d4497013ea17
link
/test pilot-e2e-smoketest

prow/pilot-presubmit.sh
7dc8867287a1213e99c88a7723d701340df1d880
link
/test pilot-presubmit

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@andraxylia: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/pilot-e2e-smoketest.sh
51f77319a970359dcd4f426c7372d4497013ea17
link
/test pilot-e2e-smoketest

prow/pilot-presubmit.sh
51a4ed50feaaaf3de9cf3d57af25fa0be3b510f6
link
/test pilot-presubmit

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

Gopkg.lock and WORKSPACE are fixing the istioctl build from plain go, which is broken because of some blackfriday package.

@andraxylia: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/pilot-e2e-smoketest.sh
51f77319a970359dcd4f426c7372d4497013ea17
link
/test pilot-e2e-smoketest

prow/pilot-presubmit.sh
cf256273cbcf6bfe815e4d75bcf7e43491ba5631
link
/test pilot-presubmit

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@andraxylia: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/pilot-e2e-smoketest.sh
85b5130c4826a8e89fea70e5c37d06fcf490dd5f
link
/test pilot-e2e-smoketest

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/test pilot-e2e-smoketest

@andraxylia: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/pilot-e2e-smoketest.sh
85b5130c4826a8e89fea70e5c37d06fcf490dd5f
link
/test pilot-e2e-smoketest

prow/pilot-presubmit.sh
e0198345a046313a40e1715407ae972eaac07b06
link
/test pilot-presubmit

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@andraxylia: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/pilot-e2e-smoketest.sh
85b5130c4826a8e89fea70e5c37d06fcf490dd5f
link
/test pilot-e2e-smoketest

prow/pilot-presubmit.sh
bad7439a5335f6b30bddddfd86e3b4247a0020c1
link
/test pilot-presubmit

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@andraxylia: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/pilot-e2e-smoketest.sh
85b5130c4826a8e89fea70e5c37d06fcf490dd5f
link
/test pilot-e2e-smoketest

prow/pilot-presubmit.sh
4c43db58bab8ab9e1415a7e247eae8938eb518ed
link
/test pilot-presubmit

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@andraxylia: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/pilot-e2e-smoketest.sh
85b5130c4826a8e89fea70e5c37d06fcf490dd5f
link
/test pilot-e2e-smoketest

prow/pilot-presubmit.sh
e3cdebc53524324196fa86119031600f77548f8a
link
/test pilot-presubmit

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@andraxylia: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/pilot-e2e-smoketest.sh
85b5130c4826a8e89fea70e5c37d06fcf490dd5f
link
/test pilot-e2e-smoketest

prow/pilot-presubmit.sh
025a1b0d369788611ca102e59244d93218573f78
link
/test pilot-presubmit

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/test pilot-presubmit

@andraxylia: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/pilot-e2e-smoketest.sh
85b5130c4826a8e89fea70e5c37d06fcf490dd5f
link
/test pilot-e2e-smoketest

prow/pilot-presubmit.sh
025a1b0d369788611ca102e59244d93218573f78
link
/test pilot-presubmit

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@andraxylia: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/pilot-e2e-smoketest.sh
19acdafa7963a3ad1f7893ff41e9801fe86ca7df
link
/test pilot-e2e-smoketest

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@andraxylia: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/pilot-e2e-smoketest.sh
844c108291cd45910d7afb365fb8776378321619
link
/test pilot-e2e-smoketest

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/test pilot-e2e-smoketest

/test pilot-e2e-smoketest

PTAL and approve the commit , pilot e2e is passing.
e2e smoketest failures are in mixer tests and are unrelated to my changes.

/lgtm
(I'm sure you'll fix stuff it gets worse)

/test pilot-e2e-smoketest

/test pilot-e2e-smoketest

/test pilot-e2e-smoketest

/test pilot-e2e-smoketest

/retest


Algolia-angular-components not working

Hello Tagazok ,
I have installed the package for my angular 4 project . Command was : npm install -save<EMAIL_ADDRESS>Then imported , import { AlgoliaModule, AlgoliaService } from '@tagazok/algolia-angular-components';
But when I have used into my @ngModule imports
AlgoliaModule.forRoot({appId: 'E6SLOQI4M8', apiKey: '28aed6dc6cab2b532062ea55f5b84f9b'}),
My app stopped working.
Please tell me what is the issue behind it??? Waiting for your reply.
Thanks ,
DEBDEEP SIRCAR

Please anyone do respond


feat: COS integration

This PR adds a new COS integration to wordpress-k8s-operator charm.
The elements of COS added are prometheus, loki and grafana.
Prometheus monitors apache used to serve wordpress.
Loki scrapes logs from apache server, including access log and error log. Container logs are also preserved in addition to the appending to log files for loki.
Grafana contains a pre-made dashboard template to monitor the apache server.
Loki screenshot

Grafana screenshot (updated 2022/02/13)

Note for reviewers:
Configuration files are mostly default values. Added lines of code from the configuration values have been marked with a comment on the PR.

I'm not sure that "uptime", "apache version" and "apache workers" are such important bits of information that we'd want to surface them in this way on the dashboard. Is there a list somewhere of the metrics we have available so we can decide what should be shown where?

@mthaddon Sure, below are the lists of metrics exposed from apache-prometheus-exporter.
Current improvements(upcoming push) include:

Graph: promhttp_metric_handler_requests_in_flight
Gauge: promhttp_metric_handler_requests_total
Graph: apache_access_total
Gauge: apache_load
Gauge: apache_scoreboard

# HELP apache_accesses_total Current total apache accesses (*)
# TYPE apache_accesses_total counter
apache_accesses_total 1060
# HELP apache_cpu_time_ms_total Apache CPU time
# TYPE apache_cpu_time_ms_total counter
apache_cpu_time_ms_total{type="system"} 4960
apache_cpu_time_ms_total{type="user"} 23820
# HELP apache_cpuload The current percentage CPU used by each worker and in total by all workers combined (*)
# TYPE apache_cpuload gauge
apache_cpuload 0.814144
# HELP apache_duration_ms_total Total duration of all registered requests in ms
# TYPE apache_duration_ms_total counter
apache_duration_ms_total 73319
# HELP apache_exporter_build_info A metric with a constant '1' value labeled by version, revision, branch, and goversion from which apache_exporter was built.
# TYPE apache_exporter_build_info gauge
apache_exporter_build_info{branch="HEAD",goversion="go1.16.10",revision="f4fd9dd7e9672fda120a3085f224431550baf2a7",version="0.11.0"} 1
# HELP apache_generation Apache restart generation
# TYPE apache_generation gauge
apache_generation{type="config"} 1
apache_generation{type="mpm"} 0
# HELP apache_info Apache version information
# TYPE apache_info gauge
apache_info{mpm="prefork",version="Apache/2.4.41 (Ubuntu) OpenSSL/1.1.1f"} 1
# HELP apache_load Apache server load
# TYPE apache_load gauge
apache_load{interval="15min"} 3.3
apache_load{interval="1min"} 2.07
apache_load{interval="5min"} 2.43
# HELP apache_scoreboard Apache scoreboard statuses
# TYPE apache_scoreboard gauge
apache_scoreboard{state="closing"} 0
apache_scoreboard{state="dns"} 0
apache_scoreboard{state="graceful_stop"} 0
apache_scoreboard{state="idle"} 6
apache_scoreboard{state="idle_cleanup"} 0
apache_scoreboard{state="keepalive"} 0
apache_scoreboard{state="logging"} 0
apache_scoreboard{state="open_slot"} 143
apache_scoreboard{state="read"} 0
apache_scoreboard{state="reply"} 1
apache_scoreboard{state="startup"} 0
# HELP apache_sent_kilobytes_total Current total kbytes sent (*)
# TYPE apache_sent_kilobytes_total counter
apache_sent_kilobytes_total 3780
# HELP apache_up Could the apache server be reached
# TYPE apache_up gauge
apache_up 1
# HELP apache_uptime_seconds_total Current uptime in seconds (*)
# TYPE apache_uptime_seconds_total counter
apache_uptime_seconds_total 3535
# HELP apache_version Apache server version
# TYPE apache_version gauge
apache_version 2.04041
# HELP apache_workers Apache worker statuses
# TYPE apache_workers gauge
apache_workers{state="busy"} 1
apache_workers{state="idle"} 6
# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.
# TYPE process_cpu_seconds_total counter
process_cpu_seconds_total 1.68
# HELP process_max_fds Maximum number of open file descriptors.
# TYPE process_max_fds gauge
process_max_fds 65536
# HELP process_open_fds Number of open file descriptors.
# TYPE process_open_fds gauge
process_open_fds 10
# HELP process_resident_memory_bytes Resident memory size in bytes.
# TYPE process_resident_memory_bytes gauge
process_resident_memory_bytes 1.6052224e+07
# HELP process_start_time_seconds Start time of the process since unix epoch in seconds.
# TYPE process_start_time_seconds gauge
process_start_time_seconds 1.6762743514e+09
# HELP process_virtual_memory_bytes Virtual memory size in bytes.
# TYPE process_virtual_memory_bytes gauge
process_virtual_memory_bytes 7.33540352e+08
# HELP process_virtual_memory_max_bytes Maximum amount of virtual memory available in bytes.
# TYPE process_virtual_memory_max_bytes gauge
process_virtual_memory_max_bytes 1.8446744073709552e+19
# HELP promhttp_metric_handler_requests_in_flight Current number of scrapes being served.
# TYPE promhttp_metric_handler_requests_in_flight gauge
promhttp_metric_handler_requests_in_flight 1
# HELP promhttp_metric_handler_requests_total Total number of scrapes by HTTP status code.
# TYPE promhttp_metric_handler_requests_total counter
promhttp_metric_handler_requests_total{code="200"} 353
promhttp_metric_handler_requests_total{code="500"} 0
promhttp_metric_handler_requests_total{code="503"} 0

Note that go related (go_gc_*) are from prometheus go client's default profiling which is not related to WordPress apache server(below).
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 2.7648e-05
go_gc_duration_seconds{quantile="0.25"} 3.9714e-05
go_gc_duration_seconds{quantile="0.5"} 5.8567e-05
go_gc_duration_seconds{quantile="0.75"} 0.00011677
go_gc_duration_seconds{quantile="1"} 0.012443423
go_gc_duration_seconds_sum 0.03104215
go_gc_duration_seconds_count 63
# HELP go_goroutines Number of goroutines that currently exist.
# TYPE go_goroutines gauge
go_goroutines 10
# HELP go_info Information about the Go environment.
# TYPE go_info gauge
go_info{version="go1.16.10"} 1
# HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
# TYPE go_memstats_alloc_bytes gauge
go_memstats_alloc_bytes 5.275424e+06
# HELP go_memstats_alloc_bytes_total Total number of bytes allocated, even if freed.
# TYPE go_memstats_alloc_bytes_total counter
go_memstats_alloc_bytes_total 2.1709904e+08
# HELP go_memstats_buck_hash_sys_bytes Number of bytes used by the profiling bucket hash table.
# TYPE go_memstats_buck_hash_sys_bytes gauge
go_memstats_buck_hash_sys_bytes 1.462217e+06
# HELP go_memstats_frees_total Total number of frees.
# TYPE go_memstats_frees_total counter
go_memstats_frees_total 595998
# HELP go_memstats_gc_cpu_fraction The fraction of this program's available CPU time used by the GC since the program started.
# TYPE go_memstats_gc_cpu_fraction gauge
go_memstats_gc_cpu_fraction 1.511275573844487e-05
# HELP go_memstats_gc_sys_bytes Number of bytes used for garbage collection system metadata.
# TYPE go_memstats_gc_sys_bytes gauge
go_memstats_gc_sys_bytes 5.075784e+06
# HELP go_memstats_heap_alloc_bytes Number of heap bytes allocated and still in use.
# TYPE go_memstats_heap_alloc_bytes gauge
go_memstats_heap_alloc_bytes 5.275424e+06
# HELP go_memstats_heap_idle_bytes Number of heap bytes waiting to be used.
# TYPE go_memstats_heap_idle_bytes gauge
go_memstats_heap_idle_bytes 5.8925056e+07
# HELP go_memstats_heap_inuse_bytes Number of heap bytes that are in use.
# TYPE go_memstats_heap_inuse_bytes gauge
go_memstats_heap_inuse_bytes 7.00416e+06
# HELP go_memstats_heap_objects Number of allocated objects.
# TYPE go_memstats_heap_objects gauge
go_memstats_heap_objects 4228
# HELP go_memstats_heap_released_bytes Number of heap bytes released to OS.
# TYPE go_memstats_heap_released_bytes gauge
go_memstats_heap_released_bytes 5.5230464e+07
# HELP go_memstats_heap_sys_bytes Number of heap bytes obtained from system.
# TYPE go_memstats_heap_sys_bytes gauge
go_memstats_heap_sys_bytes 6.5929216e+07
# HELP go_memstats_last_gc_time_seconds Number of seconds since 1970 of last garbage collection.
# TYPE go_memstats_last_gc_time_seconds gauge
go_memstats_last_gc_time_seconds 1.6762778918424115e+09
# HELP go_memstats_lookups_total Total number of pointer lookups.
# TYPE go_memstats_lookups_total counter
go_memstats_lookups_total 0
# HELP go_memstats_mallocs_total Total number of mallocs.
# TYPE go_memstats_mallocs_total counter
go_memstats_mallocs_total 600226
# HELP go_memstats_mcache_inuse_bytes Number of bytes in use by mcache structures.
# TYPE go_memstats_mcache_inuse_bytes gauge
go_memstats_mcache_inuse_bytes 14400
# HELP go_memstats_mcache_sys_bytes Number of bytes used for mcache structures obtained from system.
# TYPE go_memstats_mcache_sys_bytes gauge
go_memstats_mcache_sys_bytes 16384
# HELP go_memstats_mspan_inuse_bytes Number of bytes in use by mspan structures.
# TYPE go_memstats_mspan_inuse_bytes gauge
go_memstats_mspan_inuse_bytes 194480
# HELP go_memstats_mspan_sys_bytes Number of bytes used for mspan structures obtained from system.
# TYPE go_memstats_mspan_sys_bytes gauge
go_memstats_mspan_sys_bytes 212992
# HELP go_memstats_next_gc_bytes Number of heap bytes when next garbage collection will take place.
# TYPE go_memstats_next_gc_bytes gauge
go_memstats_next_gc_bytes 9.977584e+06
# HELP go_memstats_other_sys_bytes Number of bytes used for other system allocations.
# TYPE go_memstats_other_sys_bytes gauge
go_memstats_other_sys_bytes 1.966327e+06
# HELP go_memstats_stack_inuse_bytes Number of bytes in use by the stack allocator.
# TYPE go_memstats_stack_inuse_bytes gauge
go_memstats_stack_inuse_bytes 1.179648e+06
# HELP go_memstats_stack_sys_bytes Number of bytes obtained from system for stack allocator.
# TYPE go_memstats_stack_sys_bytes gauge
go_memstats_stack_sys_bytes 1.179648e+06
# HELP go_memstats_sys_bytes Number of bytes obtained from system.
# TYPE go_memstats_sys_bytes gauge
go_memstats_sys_bytes 7.5842568e+07
# HELP go_threads Number of OS threads created.
# TYPE go_threads gauge
go_threads 18

In terms of what metrics to display and how on the dashboard it may be worth breaking that out to a separate discussion/spec document. If that's going to slow down the landing of this PR I think it's fine to go ahead as is and come back later with dashboard updates as long as that's relatively easy to do, if you prefer.
My initial reaction would be to ideally have something like "Requests/second (to Wordpress itself)", "CPU load" and "Resident Memory usage" as the main things we're calling out in the dashboard (in place of "uptime", "apache version" and "apache workers"), but it would be good to get feedback from others on this as well. Being able to see some kind of metric that shows apache error codes over the last 5 minutes (or some similar interval) to see how many 5XXs there are (for instance) in comparison to "normal" would be good as well.

Currently the tests are unstable, not sure if Github Actions being unstable is further worsening the situation. Committing some safeguard measures(wait for idle) to hopefully make the integration tests pass.

Thx for the dashboard updates. I think the "Apache workers" values are for "busy" (1) and "idle" (6) workers? Is there some way of making that clearer in the dashboard? Currently I think most people would see this as 16 workers and not be aware of what status they're in.

@mthaddon Sounds great, applied the same changes w/ regex renaming.
Updated dashboard screenshot:


Dockerfile: Ensure the Postgres JDBC driver jar is properly symlinked

That isn't the name of the jar though for postgres


implement NPE testing framework

implement validation and testing framework for NPEs

NPE validation script implemented 6010a83. Validation includes simulation-based calibration

and TARP
.
A quick check suggests we need to train a large ensemble of NPEs. Deployed.

Further testing/validation implemented in 394b707
Here's a figure illustrating the performance of the trained NPEs:

Takeaways:

The prior seems to be affecting some of the posteriors
Further training is necessary for TNG50
Something is going completely wrong for TNG100

Preliminary NPE validation (f6b6fe3) with

updated halo masses
TNG_ALL with mass and magnitude corrections

Looks reasonable but further NPE training is necessary.