Handle with NULL kernel returned by libxsmm_dfsspmdm_create

Using the master branch compiled with make SHARED=1 NOBLAS=1  the function libxsmm_dfsspmdm_create is returning a pointer to a structure whose kernel member is NULL when passed a dense A matrix with M = 9, N = 48, and K = 16, lda = 16, ldb = 624, ldc = 624.  Specifically, the call at:
https://github.com/hfp/libxsmm/blob/716e20323b50a178b56c51754fae58e0df2fa2cf/src/libxsmm_fsspmdm.c#L98
fails to yield a kernel (which is perhaps not unexpected given A is dense) and so the else branch at:
https://github.com/hfp/libxsmm/blob/716e20323b50a178b56c51754fae58e0df2fa2cf/src/libxsmm_fsspmdm.c#L121
is triggered.  This should try and JIT a dense kernel here:
https://github.com/hfp/libxsmm/blob/716e20323b50a178b56c51754fae58e0df2fa2cf/src/libxsmm_fsspmdm.c#L123
but this returns a NULL pointer.  I am unsure if this is expected behaviour (and so the bug is in the create routine for not catching this), or if it is an issue with libxsmm_dmmdispatch that is causing it to fail to generate a dispatch routine.

I cannot reproduce this issue with samples/pyfr.
I have created a file dense.mtx:
%%MatrixMarket matrix coordinate real general
%
9 16 144
1 1 1.0
1 2 1.0
1 3 1.0
1 4 1.0
1 5 1.0
1 6 1.0
1 7 1.0
1 8 1.0
1 9 1.0
1 10 1.0
1 11 1.0
1 12 1.0
1 13 1.0
1 14 1.0
1 15 1.0
1 16 1.0
2 1 1.0
2 2 1.0
2 3 1.0
2 4 1.0
2 5 1.0
2 6 1.0
[...]
9 9 1.0
9 10 1.0
9 11 1.0
9 12 1.0
9 13 1.0
9 14 1.0
9 15 1.0
9 16 1.0
and run "sde64 -skx -- ./pyfr_driver_asp_reg dense.mtx 48 1" and it passes without issues.
How to reproduce with pyfr_driver_asp_reg application?

I cannot reproduce this issue with samples/pyfr.
I have created a file dense.mtx:
%%MatrixMarket matrix coordinate real general
%
9 16 144
1 1 1.0
1 2 1.0
1 3 1.0
1 4 1.0
1 5 1.0
1 6 1.0
1 7 1.0
1 8 1.0
1 9 1.0
1 10 1.0
1 11 1.0
1 12 1.0
1 13 1.0
1 14 1.0
1 15 1.0
1 16 1.0
2 1 1.0
2 2 1.0
2 3 1.0
2 4 1.0
2 5 1.0
2 6 1.0
[...]
9 9 1.0
9 10 1.0
9 11 1.0
9 12 1.0
9 13 1.0
9 14 1.0
9 15 1.0
9 16 1.0
and run "sde64 -skx -- ./pyfr_driver_asp_reg dense.mtx 48 1" and it passes without issues.
How to reproduce with pyfr_driver_asp_reg application?

I got around to building a debug build of libxsmm and have got to the bottom of the issue.  More recent versions of PyFR have been employing matrix multiplications with alpha != 1, which is currently unsupported by libxsmm_dfsspmdm_create (and hence triggers an assertion in debug mode).
Good news is that since our A matrices are constant this is a trivial fix; multiply through by alpha on
https://github.com/hfp/libxsmm/blob/716e20323b50a178b56c51754fae58e0df2fa2cf/src/libxsmm_fsspmdm.c#L83 and
https://github.com/hfp/libxsmm/blob/716e20323b50a178b56c51754fae58e0df2fa2cf/src/libxsmm_fsspmdm.c#L128
and then when calling libxsmm_dmmdispatch just pass a pointer to double falpha = 1.0.

I got around to building a debug build of libxsmm and have got to the bottom of the issue.  More recent versions of PyFR have been employing matrix multiplications with alpha != 1, which is currently unsupported by libxsmm_dfsspmdm_create (and hence triggers an assertion in debug mode).
Good news is that since our A matrices are constant this is a trivial fix; multiply through by alpha on
https://github.com/hfp/libxsmm/blob/716e20323b50a178b56c51754fae58e0df2fa2cf/src/libxsmm_fsspmdm.c#L83 and
https://github.com/hfp/libxsmm/blob/716e20323b50a178b56c51754fae58e0df2fa2cf/src/libxsmm_fsspmdm.c#L128
and then when calling libxsmm_dmmdispatch just pass a pointer to double falpha = 1.0.

I think this should do it:
diff --git a/src/libxsmm_fsspmdm.c b/src/libxsmm_fsspmdm.c
index 7ec83df48..841c167f5 100644
--- a/src/libxsmm_fsspmdm.c
+++ b/src/libxsmm_fsspmdm.c
@@ -19,6 +19,7 @@ LIBXSMM_API libxsmm_dfsspmdm* libxsmm_dfsspmdm_create(
   const double alpha, const double beta, libxsmm_blasint c_is_nt,
   const double* a_dense)
 {
+  double one = 1.0;
   double* a_csr_values = 0;
   unsigned int* a_csr_rowptr = 0;
   unsigned int* a_csr_colidx = 0;
@@ -32,7 +33,6 @@ LIBXSMM_API libxsmm_dfsspmdm* libxsmm_dfsspmdm_create(
   /* some checks... */
   assert(N % 16 == 0);
   assert(N >= 16);
-  assert(LIBXSMM_FEQ(alpha, 1.0));
   assert(LIBXSMM_FEQ(beta, 1.0) || LIBXSMM_FEQ(beta, 0.0));
   assert(K <= lda);
   assert(N <= ldc);
@@ -80,7 +80,7 @@ LIBXSMM_API libxsmm_dfsspmdm* libxsmm_dfsspmdm_create(
       a_csr_rowptr[i] = n;
       for (j = 0; j < K; j++) {
         if (LIBXSMM_NEQ(a_dense[(i*lda) + j], 0.0)) {
-          a_csr_values[n] = a_dense[(i*lda) + j];
+          a_csr_values[n] = alpha*a_dense[(i*lda) + j];
           a_csr_colidx[n] = j;
           n++;
         }
@@ -92,7 +92,7 @@ LIBXSMM_API libxsmm_dfsspmdm* libxsmm_dfsspmdm_create(
     new_handle->N_chunksize = 8;

     xgemm_desc = libxsmm_dgemm_descriptor_init(&xgemm_blob, M, new_handle->N_chunksize, K,
-      0, ldb, ldc, alpha, beta, flags, prefetch);
+      0, ldb, ldc, one, beta, flags, prefetch);

     if (0 != xgemm_desc) {
       new_handle->kernel = libxsmm_create_dcsr_reg(xgemm_desc, a_csr_rowptr, a_csr_colidx, a_csr_values);
@@ -120,12 +120,12 @@ LIBXSMM_API libxsmm_dfsspmdm* libxsmm_dfsspmdm_create(
   /* attempt to JIT dense kernel as sparse_reg failed */
   } else {
     new_handle->N_chunksize = 16;
-    new_handle->kernel = libxsmm_dmmdispatch(new_handle->N_chunksize, M, K, &ldb, &K, &ldc, &alpha, &beta, &flags, (const int*)LIBXSMM_GEMM_PREFETCH_NONE);
+    new_handle->kernel = libxsmm_dmmdispatch(new_handle->N_chunksize, M, K, &ldb, &K, &ldc, &one, &beta, &flags, (const int*)LIBXSMM_GEMM_PREFETCH_NONE);
     /* copy A over */
     new_handle->a_dense = (double*)libxsmm_aligned_malloc((size_t)M * (size_t)K * sizeof(double), 64);
     for ( i = 0; i < M; ++i ) {
       for ( j = 0; j < K; ++j ) {
-        new_handle->a_dense[(i*K)+j] = a_dense[(i*lda)+j];
+        new_handle->a_dense[(i*K)+j] = alpha*a_dense[(i*lda)+j];
       }
     }
   }
@@ -145,6 +145,7 @@ LIBXSMM_API libxsmm_sfsspmdm* libxsmm_sfsspmdm_create(
   const float alpha, const float beta, libxsmm_blasint c_is_nt,
   const float* a_dense)
 {
+  float one = 1.0f;
   float* a_csr_values = 0;
   unsigned int* a_csr_rowptr = 0;
   unsigned int* a_csr_colidx = 0;
@@ -158,7 +159,6 @@ LIBXSMM_API libxsmm_sfsspmdm* libxsmm_sfsspmdm_create(
   /* some checks... */
   assert(N % 16 == 0);
   assert(N >= 16);
-  assert(LIBXSMM_FEQ(alpha, 1.0f));
   assert(LIBXSMM_FEQ(beta, 1.0f) || LIBXSMM_FEQ(beta, 0.0f));
   assert(K <= lda);
   assert(N <= ldc);
@@ -206,7 +206,7 @@ LIBXSMM_API libxsmm_sfsspmdm* libxsmm_sfsspmdm_create(
       a_csr_rowptr[i] = n;
       for (j = 0; j < K; j++) {
         if (LIBXSMM_NEQ(a_dense[(i*lda) + j], 0.0f)) {
-          a_csr_values[n] = a_dense[(i*lda) + j];
+          a_csr_values[n] = alpha*a_dense[(i*lda) + j];
           a_csr_colidx[n] = j;
           n++;
         }
@@ -218,7 +218,7 @@ LIBXSMM_API libxsmm_sfsspmdm* libxsmm_sfsspmdm_create(
     new_handle->N_chunksize = 16;

     xgemm_desc = libxsmm_sgemm_descriptor_init(&xgemm_blob, M, new_handle->N_chunksize, K,
-      0, ldb, ldc, alpha, beta, flags, prefetch);
+      0, ldb, ldc, one, beta, flags, prefetch);

     if (0 != xgemm_desc) {
       new_handle->kernel = libxsmm_create_scsr_reg(xgemm_desc, a_csr_rowptr, a_csr_colidx, a_csr_values);
@@ -244,12 +244,12 @@ LIBXSMM_API libxsmm_sfsspmdm* libxsmm_sfsspmdm_create(
   /* attempt to JIT dense kernel as sparse_reg failed */
   } else {
     new_handle->N_chunksize = 16;
-    new_handle->kernel = libxsmm_smmdispatch(new_handle->N_chunksize, M, K, &ldb, &K, &ldc, &alpha, &beta, &flags, (const int*)LIBXSMM_GEMM_PREFETCH_NONE);
+    new_handle->kernel = libxsmm_smmdispatch(new_handle->N_chunksize, M, K, &ldb, &K, &ldc, &one, &beta, &flags, (const int*)LIBXSMM_GEMM_PREFETCH_NONE);
     /* copy A over */
     new_handle->a_dense = (float*)libxsmm_aligned_malloc((size_t)M * (size_t)K * sizeof(float), 64);
     for ( i = 0; i < M; ++i ) {
       for ( j = 0; j < K; ++j ) {
-        new_handle->a_dense[(i*K)+j] = a_dense[(i*lda)+j];
+        new_handle->a_dense[(i*K)+j] = alpha*a_dense[(i*lda)+j];
       }
     }
   }

I think this should do it:
diff --git a/src/libxsmm_fsspmdm.c b/src/libxsmm_fsspmdm.c
index 7ec83df48..841c167f5 100644
--- a/src/libxsmm_fsspmdm.c
+++ b/src/libxsmm_fsspmdm.c
@@ -19,6 +19,7 @@ LIBXSMM_API libxsmm_dfsspmdm* libxsmm_dfsspmdm_create(
   const double alpha, const double beta, libxsmm_blasint c_is_nt,
   const double* a_dense)
 {
+  double one = 1.0;
   double* a_csr_values = 0;
   unsigned int* a_csr_rowptr = 0;
   unsigned int* a_csr_colidx = 0;
@@ -32,7 +33,6 @@ LIBXSMM_API libxsmm_dfsspmdm* libxsmm_dfsspmdm_create(
   /* some checks... */
   assert(N % 16 == 0);
   assert(N >= 16);
-  assert(LIBXSMM_FEQ(alpha, 1.0));
   assert(LIBXSMM_FEQ(beta, 1.0) || LIBXSMM_FEQ(beta, 0.0));
   assert(K <= lda);
   assert(N <= ldc);
@@ -80,7 +80,7 @@ LIBXSMM_API libxsmm_dfsspmdm* libxsmm_dfsspmdm_create(
       a_csr_rowptr[i] = n;
       for (j = 0; j < K; j++) {
         if (LIBXSMM_NEQ(a_dense[(i*lda) + j], 0.0)) {
-          a_csr_values[n] = a_dense[(i*lda) + j];
+          a_csr_values[n] = alpha*a_dense[(i*lda) + j];
           a_csr_colidx[n] = j;
           n++;
         }
@@ -92,7 +92,7 @@ LIBXSMM_API libxsmm_dfsspmdm* libxsmm_dfsspmdm_create(
     new_handle->N_chunksize = 8;

     xgemm_desc = libxsmm_dgemm_descriptor_init(&xgemm_blob, M, new_handle->N_chunksize, K,
-      0, ldb, ldc, alpha, beta, flags, prefetch);
+      0, ldb, ldc, one, beta, flags, prefetch);

     if (0 != xgemm_desc) {
       new_handle->kernel = libxsmm_create_dcsr_reg(xgemm_desc, a_csr_rowptr, a_csr_colidx, a_csr_values);
@@ -120,12 +120,12 @@ LIBXSMM_API libxsmm_dfsspmdm* libxsmm_dfsspmdm_create(
   /* attempt to JIT dense kernel as sparse_reg failed */
   } else {
     new_handle->N_chunksize = 16;
-    new_handle->kernel = libxsmm_dmmdispatch(new_handle->N_chunksize, M, K, &ldb, &K, &ldc, &alpha, &beta, &flags, (const int*)LIBXSMM_GEMM_PREFETCH_NONE);
+    new_handle->kernel = libxsmm_dmmdispatch(new_handle->N_chunksize, M, K, &ldb, &K, &ldc, &one, &beta, &flags, (const int*)LIBXSMM_GEMM_PREFETCH_NONE);
     /* copy A over */
     new_handle->a_dense = (double*)libxsmm_aligned_malloc((size_t)M * (size_t)K * sizeof(double), 64);
     for ( i = 0; i < M; ++i ) {
       for ( j = 0; j < K; ++j ) {
-        new_handle->a_dense[(i*K)+j] = a_dense[(i*lda)+j];
+        new_handle->a_dense[(i*K)+j] = alpha*a_dense[(i*lda)+j];
       }
     }
   }
@@ -145,6 +145,7 @@ LIBXSMM_API libxsmm_sfsspmdm* libxsmm_sfsspmdm_create(
   const float alpha, const float beta, libxsmm_blasint c_is_nt,
   const float* a_dense)
 {
+  float one = 1.0f;
   float* a_csr_values = 0;
   unsigned int* a_csr_rowptr = 0;
   unsigned int* a_csr_colidx = 0;
@@ -158,7 +159,6 @@ LIBXSMM_API libxsmm_sfsspmdm* libxsmm_sfsspmdm_create(
   /* some checks... */
   assert(N % 16 == 0);
   assert(N >= 16);
-  assert(LIBXSMM_FEQ(alpha, 1.0f));
   assert(LIBXSMM_FEQ(beta, 1.0f) || LIBXSMM_FEQ(beta, 0.0f));
   assert(K <= lda);
   assert(N <= ldc);
@@ -206,7 +206,7 @@ LIBXSMM_API libxsmm_sfsspmdm* libxsmm_sfsspmdm_create(
       a_csr_rowptr[i] = n;
       for (j = 0; j < K; j++) {
         if (LIBXSMM_NEQ(a_dense[(i*lda) + j], 0.0f)) {
-          a_csr_values[n] = a_dense[(i*lda) + j];
+          a_csr_values[n] = alpha*a_dense[(i*lda) + j];
           a_csr_colidx[n] = j;
           n++;
         }
@@ -218,7 +218,7 @@ LIBXSMM_API libxsmm_sfsspmdm* libxsmm_sfsspmdm_create(
     new_handle->N_chunksize = 16;

     xgemm_desc = libxsmm_sgemm_descriptor_init(&xgemm_blob, M, new_handle->N_chunksize, K,
-      0, ldb, ldc, alpha, beta, flags, prefetch);
+      0, ldb, ldc, one, beta, flags, prefetch);

     if (0 != xgemm_desc) {
       new_handle->kernel = libxsmm_create_scsr_reg(xgemm_desc, a_csr_rowptr, a_csr_colidx, a_csr_values);
@@ -244,12 +244,12 @@ LIBXSMM_API libxsmm_sfsspmdm* libxsmm_sfsspmdm_create(
   /* attempt to JIT dense kernel as sparse_reg failed */
   } else {
     new_handle->N_chunksize = 16;
-    new_handle->kernel = libxsmm_smmdispatch(new_handle->N_chunksize, M, K, &ldb, &K, &ldc, &alpha, &beta, &flags, (const int*)LIBXSMM_GEMM_PREFETCH_NONE);
+    new_handle->kernel = libxsmm_smmdispatch(new_handle->N_chunksize, M, K, &ldb, &K, &ldc, &one, &beta, &flags, (const int*)LIBXSMM_GEMM_PREFETCH_NONE);
     /* copy A over */
     new_handle->a_dense = (float*)libxsmm_aligned_malloc((size_t)M * (size_t)K * sizeof(float), 64);
     for ( i = 0; i < M; ++i ) {
       for ( j = 0; j < K; ++j ) {
-        new_handle->a_dense[(i*K)+j] = a_dense[(i*lda)+j];
+        new_handle->a_dense[(i*K)+j] = alpha*a_dense[(i*lda)+j];
       }
     }
   }

LGTM, can you submit a PR?

LGTM, can you submit a PR?

LGTM, can you submit a PR?

Done.  Also, looking through the code I am wondering how hard the restriction that N has to be divisible by 16 is in the double precision case?  This currently prevents us from using XSMM under certain circumstances since we try to align based on vector length (8 elements for double, 16 for single).

LGTM, can you submit a PR?

Done.  Also, looking through the code I am wondering how hard the restriction that N has to be divisible by 16 is in the double precision case?  This currently prevents us from using XSMM under certain circumstances since we try to align based on vector length (8 elements for double, 16 for single).

yes, I have pushed the straightforward changes in https://github.com/hfp/libxsmm/commit/15328f53a78cdf2c4c20d51af70296d638a8ed4e . However, this only will be useful when N/#cores is <16.
We could also think about using masking, then arbitrary values for N would be possible. Right now N%8==0 is required for F64 and N%16==0 for F32.

yes, I have pushed the straightforward changes in https://github.com/hfp/libxsmm/commit/15328f53a78cdf2c4c20d51af70296d638a8ed4e . However, this only will be useful when N/#cores is <16.
We could also think about using masking, then arbitrary values for N would be possible. Right now N%8==0 is required for F64 and N%16==0 for F32.

At the moment in PyFR we JIT a primary kernel with N = 48 (for both single and double precision) and then, if N % 48 != 0, we also JIT a clean up kernel with N = 16 or 32 to handle whatever is left.  However, as we only enforce cache-line alignment with double precision we can sometimes have clean-up sizes which are not divisible by 16 and hence can not use XSMM in these situations (unless the user switches to 128 byte alignment, which can have negative consequences).  This change ensures we can always use XSMM.

At the moment in PyFR we JIT a primary kernel with N = 48 (for both single and double precision) and then, if N % 48 != 0, we also JIT a clean up kernel with N = 16 or 32 to handle whatever is left.  However, as we only enforce cache-line alignment with double precision we can sometimes have clean-up sizes which are not divisible by 16 and hence can not use XSMM in these situations (unless the user switches to 128 byte alignment, which can have negative consequences).  This change ensures we can always use XSMM.

I see and yes for remainder handling this is helpful. I'm closing this issue for now.

I see and yes for remainder handling this is helpful. I'm closing this issue for now.


Fix windows rerendering

Checklist

[ ] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

@conda-forge-admin, rerender

It looks like there were a few failures on main as well. For example:
ERROR: This cross-compiler package contains no program $PREFIX/bin/x86_64-w64-mingw32-ld.gold
WARNING: Tests failed for binutils_win-64-2.40-h29cb1cc_4.conda - moving package to /home/conda/feedstock_root/build_artifacts/broken
TESTS FAILED: binutils_win-64-2.40-h29cb1cc_4.conda


Edit commits during a rebase operation

I try to edit commits with rebase operation. But I don't know to use/set RebaseOperationType: src/rebase.rs#L253-L277.
I have written a quick test to check which operation kind is used: Pick is seems set by default.
let rebase = self.repo.rebase(
    Some(&annotate_commit_branch),
    Some(&annotate_commit_upstream),
    None,None
)?;
for operation in rebase {
    let operation = operation?;
    let op_type = operation.kind();
    dbg!(op_type);
}
//  [src/repo.rs:114] op_type = Some(
//     Pick,
//  )
//  [src/repo.rs:114] op_type = Some(
//     Pick,
// )

I have tried another approach: set the position of the rebase iterator with next() and use rebase.commit().
let mut rebase = self.repo.rebase(
    Some(&annotate_commit_branch),
    Some(&annotate_commit_upstream),
    None,None
)?;
rebase.next().unwrap().unwrap();
let signature = Signature::now("test", "test")?;
rebase.commit(Some(&signature), &signature, Some("update message")).unwrap();
rebase.finish(None).unwrap();

But I'm stuck on this error this patch has already been applied:
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error { code: -18, klass: 29, message: "this patch has already been applied" }', src/repo.rs:113:69
stack backtrace:
   0: rust_begin_unwind
             at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/std/src/panicking.rs:584:5
   1: core::panicking::panic_fmt
             at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/core/src/panicking.rs:142:14
   2: core::result::unwrap_failed
             at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/core/src/result.rs:1785:5
   3: core::result::Result<T,E>::unwrap
             at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/core/src/result.rs:1078:23
   4: ::repo::Repo::rebase
             at src/repo.rs:113:1
   5: ::main
             at src/main.rs:81:13
   6: core::ops::function::FnOnce::call_once
             at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/core/src/ops/function.rs:248:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

Maybe I don't have the right way to approach the problem?

probably more fitting to ask in upstream libgit2 repo

@extrawurst Thanks, for your answer.
I think there is not possible to set rebase action with a custom list of operation types like Edit or Squash with libgit2.
An issue is opened on the upstream libgit2 to add this feature: https://github.com/libgit2/libgit2/issues/3795.


Null safety

Hi,
Awesome lib like the flare one. Do you think you'll pass it to null safety ?
Best

It will when I got some time 😄

Ahah hope u will ! :)

Ya


Mapping Javascript object to Map<String, Object> fails with GSON config but works with Jackson configuration

I have also provided a pull request with a unit test showing this behaviour
https://github.com/jayway/JsonPath/pull/312 - I did not have the time to fully get my head around the code; but if someone can verify that this is a bug, and not a misunderstanding on my side- I can probably find the time to provide a fix / pull request.
The snippet from the unit tests;
final Map<String, Object> gsonMap = using(GSON_CONFIGURATION).parse(JSON_AWS_LAMBDA_CONTEXT).read("$.queryStringParameters");
assertThat(gsonMap.get("lat")).isEqualTo(50D);

Fails, whereas
final Map<String, Object> jacksonMap = using(JACKSON_CONFIGURATION).parse(JSON_AWS_LAMBDA_CONTEXT).read("$.queryStringParameters");
assertThat(jacksonMap.get("lat")).isEqualTo(50D);

works for
{
  "body": "{\"test\":\"body\"}",
  "resource": "/{proxy+}",
  "requestContext": {
    "resourceId": "123456",
    "apiId": "1234567890",
    "resourcePath": "/{proxy+}",
    "httpMethod": "POST",
    "requestId": "c6af9ac6-7b61-11e6-9a41-93e8deadbeef",
    "accountId": "123456789012",
    "identity": {
      "apiKey": null,
      "userArn": null,
      "cognitoAuthenticationType": null,
      "caller": null,
      "userAgent": "Custom User Agent String",
      "user": null,
      "cognitoIdentityPoolId": null,
      "cognitoIdentityId": null,
      "cognitoAuthenticationProvider": null,
      "sourceIp": "<IP_ADDRESS>",
      "accountId": null
    },
    "stage": "prod"
  },
  "queryStringParameters": {
    "lat": 21.1212,
    "lon": 157.2323,
    "timeZone": 1
  },
  "headers": {
    "Via": "1.1 08f323deadbeefa7af34d5feb414ce27.cloudfront.net (CloudFront)",
    "Accept-Language": "en-US,en;q=0.8",
    "CloudFront-Is-Desktop-Viewer": "true",
    "CloudFront-Is-SmartTV-Viewer": "false",
    "CloudFront-Is-Mobile-Viewer": "false",
    "X-Forwarded-For": "<IP_ADDRESS>, <IP_ADDRESS>",
    "CloudFront-Viewer-Country": "US",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
    "Upgrade-Insecure-Requests": "1",
    "X-Forwarded-Port": "443",
    "Host": "1234567890.execute-api.us-east-1.amazonaws.com",
    "X-Forwarded-Proto": "https",
    "X-Amz-Cf-Id": "cDehVQoZnx43VYQb9j2-nvCh-9z396Uhbp027Y2JvkCPNLmGJHqlaA==",
    "CloudFront-Is-Tablet-Viewer": "false",
    "Cache-Control": "max-age=0",
    "User-Agent": "Custom User Agent String",
    "CloudFront-Forwarded-Proto": "https",
    "Accept-Encoding": "gzip, deflate, sdch"
  },
  "pathParameters": {
    "proxy": "path/to/resource"
  },
  "httpMethod": "POST",
  "stageVariables": {
    "baz": "qux"
  },
  "path": "/path/to/resource"
}

Alright, it's a misunderstanding. If you use the Gson provider, it will return a Gson data structure, in this case it's a com.google.gson.JsonObject which does not implement Map.
Use
final JsonObject result = using(GSON_CONFIGURATION).parse(JSON_AWS_LAMBDA_CONTEXT).read("$.queryStringParameters");
assertThat(result.get("lat")).isEqualTo(50D);

The JsonProvider determins what object is returned. This is by design.

@kallestenflo We can probably close #312 along with this one

Thanks for clearing that up.

You can use the ObjectMapping feature to specify result type. I think that if we changed this behaviour other people would get upset because the depend on it.


Runtime error: Socket handler (k8s_pod_handler_state): read more than 30MB of data

What happened:
We observed an error log under a large scale load test.
Wed Aug 21 02:21:40 2019: Runtime error: Socket handler (k8s_pod_handler_state): read more than 30MB of data from https://<IP_ADDRESS>/api/v1/pods?fieldSelector=status.phase!=Failed,status.phase!=Unknown,status.phase!=Succeeded&pretty=false (31463287 bytes, 2162 reads). Giving up. Exiting.
What you expected to happen:
Falco should work in a large scale Kubernetes cluster.
How to reproduce it (as minimally and precisely as possible):
Use a large Kubernetes cluster with > 1k node and > 10k PODs.
Anything else we need to know?:
Environment:

Falco version (use falco --version):
falco version 0.1.2736dev

System info <!-- Falco has a built-in support command you can use  "falco --support |

jq .system_info" -->
{
  "machine": "x86_64",
  "nodename": "falco-hgq5k",
  "release": "4.15.0-1034-gke",
  "sysname": "Linux",
  "version": "#36-Ubuntu SMP Thu Jun 6 11:16:45 UTC 2019"
}

Cloud provider or hardware configuration:
GKE

OS (e.g: cat /etc/os-release):
PRETTY_NAME="Debian GNU/Linux buster/sid"
NAME="Debian GNU/Linux"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Kernel (e.g. uname -a):

Linux falco-hgq5k 4.15.0-1034-gke #36-Ubuntu SMP Thu Jun 6 11:16:45 UTC 2019 x86_64 GNU/Linux

Install tools (e.g. in kubernetes, rpm, deb, from source):
Kubernetes

Others:

Hello @axot can you please use the issues template. It helps us to have more information in order to approach the issue users are reporting.
/triage needs-information

@leodido Hello, I updated the information in issues template.

This is very interesting @axot - can I ask you how many pods did your load testing create when you experienced this? I'm only interested in the order of magnitude.

I did not remember the specific number, but I’m sure the number of Pod was greater than 10k in a single cluster.

We still want to fix this.
/remove triage/needs-information

I ran into this today with a large cluster - is it possible to make this limit configurable?

/help

@leogr:
This request has been marked as needing help from a contributor.
Please ensure the request meets the requirements listed here.
If this request no longer meets these requirements, the label can be removed
by commenting with the /remove-help command.

In response to this:

/help

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.

We got hit by that as well.
5000 pods in a 500 cluster. Right now this is causing falco to go into a crash back loop for ever saturating the apiserver with new watch requests.
It's unfortunate to say but falco might not be ready to be used under big cluster.
This needs attention if we want falco to become the standard.

@fntlnz @leodido @leogr I see this issue has been around for quite some time now... What are your plans for raising this limit? We are using Falco to help with PCI and we are now reaching 5K pods in a pretty big cluster, where Falco just stopped working. That's kind of a deal breaker at the moment...

I'll bring this up for discussion in the community call. This needs a proposal to find a solution.

Hello, are there any updates or ETA for getting this fixed?

Hello Falco, has this been discussed in the community call yet? any update on this issue?
We are experiencing this issue, and therefore missing visibility into our containers entirely.
Would appreciate any updates or ETA, thanks!

Looks like this is a "soft limit" that comes from Sysdig itself; and it was already risen in the past (https://github.com/draios/sysdig/pull/892/files).
@fntlnz Should we open an issue there? Do you think it's something that can be somehow changed to be set dynamically? Or "gigantic k8s environments" are just out of scope (PS: I would not consider a 4K-pod a gigantic cluster these days)? 😀
Can/should we just disable the K8s integration as a temporary workaround in the meantime?
PS: sorry for missing the community call. Though I'm not sure how we could have helped in proposing a solution...
Please give us some hints/indications 😉

Another user (Robbie Bytheway on Slack) reported this issue.
Thread here.

I run a decently sized k8s cluster, around 2600 pods. When installing Falco, and its DaemonSet pods came online for the first time, they all began reporting this socket error due to the 30MB fixed size limit. I'm unable to proceed any further with Falco and I'm forced to consider alternatives such as Wazuh.
I feel like I'm in Bizarro World, when I see a project like Falco incubated by the CNCF, marketed as the best choice for k8s security analysis, and yet there's a hard-coded 30MB socket limit which gets breached by a relatively small cluster of 2600 pods?!
This tells me Falco hasn't been proven in any sort of decently-sized cluster. Unless there's some other variable here that I'm missing, in which case I would love for a maintainer or community contributor to politely whack me upside the head and tell me why I'm wrong.

I'm now running into this issue as well. Are there any current workarounds?

I'm now running into this issue as well. Are there any current workarounds?

@fntlnz @leodido @leogr  do you think this issue could get back some momentum ?

@fntlnz @leodido @leogr  do you think this issue could get back some momentum ?

Cant start falco on system with:
└─┴> kc get nodes |wc -l;kc get pods |wc -l
187
562

└─┴> kc get nodes |wc -l;kc get pods |wc -l
187
562
 unable to start falco on this environment

Kubelet Version:            v1.19.6
Kube-Proxy Version:         v1.19.6
Any way we can work around this? Project is now dead since we cant spin up falco on our production environment..

Any chance this could get looked at?

Same, I'm still blocked here as well. I'm happy to provide working pizza, if that helps. :)

Hitting this as well, just commenting updated link to offending file https://github.com/falcosecurity/libs/blob/master/userspace/libsinsp/socket_handler.h#L393

This is also affecting us. Can we expect this to be patched at some point? What is the best workaround here?

Another update:
I'm working on https://github.com/falcosecurity/libs/pull/49, which should definitively address this issue (at least, I hope :smile_cat: ) in the way described by https://github.com/falcosecurity/libs/issues/43.

Hi! Any updates?

I've found this issue too with same error, when trying to deploy  using falco version 0.29.1, in OCP 4.6.xx, is there any workaround or suggestion for this issue meanwhile waiting this issue to be fixed ?

Hey,
there are two patches under review:

https://github.com/falcosecurity/libs/pull/49
https://github.com/falcosecurity/libs/pull/40

Hey,
there are two patches under review:

new: ability to filter by a node when fetching K8S metadata libs#49
Parametrize the metadata download libs#40

I've been trying using node filtering, but still got Tue Jul 13 12:24:22 2021: Runtime error: Socket handler (k8s_replicationcontroller_handler_state): read more than 30MB of data from https://<IP_ADDRESS>/api/v1/replicationcontrollers?pretty=false (31463287 bytes, 2530 reads). Giving up. Exiting.

I've been trying using node filtering, but still got the limited read more in replication controller . Log like this, Tue Jul 13 12:24:22 2021: Runtime error: Socket handler (k8s_replicationcontroller_handler_state): read more than 30MB of data from https://<IP_ADDRESS>/api/v1/replicationcontrollers?pretty=false (31463287 bytes, 2530 reads). Giving up. Exiting.

Thank you for reporting!
The node filtering patch applies to the /api/v1/pods resource only, so it does not solve this specific case. On the other hand, the "metadata download" patch should address your case.
In general, both patches are needed to solve the whole set of cases that cause this problem.

I've been trying using node filtering, but still got the limited read more in replication controller . Log like this, Tue Jul 13 12:24:22 2021: Runtime error: Socket handler (k8s_replicationcontroller_handler_state): read more than 30MB of data from https://<IP_ADDRESS>/api/v1/replicationcontrollers?pretty=false (31463287 bytes, 2530 reads). Giving up. Exiting.

Thank you for reporting!
The node filtering patch applies to the /api/v1/pods resource only, so it does not solve the /api/v1/replicationcontrollers case. On the other hand, the "metadata download" patch should address your case.
In general, both patches are needed to solve the whole set of cases that can cause the problem described by this issue.

so these two patches already merged  ?

so these two patches already merged ?

They are both included into libs since commit https://github.com/falcosecurity/libs/commit/f7029e2522cc4c81841817abeeeaa515ed944b6c
On Falco side, there're two PRs - not yet merged - that integrate these patches:

https://github.com/falcosecurity/falco/pull/1667
https://github.com/falcosecurity/falco/pull/1671

The first (#1667) only includes the https://github.com/falcosecurity/libs/pull/40 and allows the user to configure the limit.
The latter (#1671) includes both patches (since it uses the latest libs commit). So, if you wanted to try #1671 you will get both the limit raised to 100MB (the new default value) and the node filtering.
PS
I apologize for all these complications and delays, but it was necessary to attack the problem from different angles. Which required more PRs. If you need any support to test these patches, feel free to contact me on Slack. I will be happy to help.

└─┴>  kubectl get nodes |wc -l; kubectl get pods -A |wc -l
51
3135
unable to start Falco in this environment with the same error:
Runtime error: Socket handler (k8s_pod_handler_state): read more than 30MB of data from blablaba (31463287 bytes, 2032 reads). Giving up. Exiting.                                                                         │
│
K8s Rev: v1.18.16-eks-7737de
Any ETA for merging the above PRs into master?

👋  I am experiencing this issue as well and am interested in seeing the fix merged! 🙇

There is some disconnection between code and config - for me metadata_download mb setting does nothing and reading the code makes sense it doesn't.


Fix a few dangling bugs after merge

the object client races with itself if two threads write to the same
file concurrently
TestPutSameFileInParallel hangs if PutFile returns an error

Since this isn't going straight into master, I'm merging the fixes that are in here and will then keep working on some of the auth tests


Custom Fields Association with Git Repositories

Environment

Nautobot version (Docker tag too if applicable): 1.6.8
Python version: 3.11
Database platform, version: postgres
Middleware(s):

Steps to Reproduce

Create a custom field and provide the object content type extras | Git repository
Go to edit the git repository - you cannot remove this custom field
All existing Git repositories now have this custom field attached
Add a new git repository and it will not have the custom field attached

Expected Behavior
Custom fields should be assignable per object

Observed Behavior
The new custom field is applied to all existing objects.  New objects do not gain the custom field.
Editing the Git repository should allow a way to view the custom field and remove as needed.

The GitRepo edit form is missing custom field form field and possibly relationship as well. We need to fix them in both 1.6 and 2.1


added loki as new image

Description
As the external Loki image is reporting vulnerabilities and no further versions can be expected because of the license problem, it is time to build a dedicated image for kyma with an updated base image
Changes proposed in this pull request:

added new loki image
...
...

Related issue(s)

Relates to https://github.com/kyma-project/test-infra/pull/4096

/retest


Document new WinHTTP options added since RS5

This PR adds documentation for the public options added to WinHTTP since RS5. It references several structs which need to be documented separately in the MicrosoftDocs/sdk-api repo, so those links will be broken until the corresponding changes are made there.

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

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


Graph smoothing

Here's an example of graph where smoothing would be useful:
https://app.wandb.ai/yaroslavvb/imagenet18/runs/brxz6ce5?workspace=user-yaroslavvb

What's my images per second?
Here's what this looks like in my TensorBoard with smoothing. I can read my average images per second from the tooltip.

Additional nice feature of Tensorboard, I can type "images" in the top textbox, and it gives me my images_per_second graph right away, no need to click around

Hey @yaroslavvb you can set global smoothing with the iron icon next to "Auto Visualizations".  Also if you type "time/" i the search box it will filter down to just that run.  If you pin the chart you can click the edit icon and change smoothing just for that chart.  Let me know if you aren't getting the values you want from the hover event, we could definitely improve the tool tips.

Aha, now I see them, thanks for the tip!


High System CPU in verify_and_validate

When calling Joken.verify_and_validate/3 more than 1.5k times per second we see an exponential increase in System CPU utilization.  When doing some debugging we found that most of the BEAM schedulers are waiting on a futex.  No matter how much CPU we throw at this we still get the same results.  When the requests per second drop back below the threshold CPU returns to normal.  We are using ES512.  Is this expected with this many requests per second?

I'll try to take a look later on today. Can you share:

System OS and version
Erlang version
Elixir version
Joken version

My first guess is that something on your hot path is using :crypto.strong_rand_bytes and that locks a scheduler (a discussion about it can be seen here on the Plug issue about request id using strong_rand_bytes).

Of course I forgot all that important information :smile:
Our elixir application is running in a docker container FYI

Base System OS and version: Ubuntu 16.04.6 LTS
Docker container OS and version: Alpine 3.9.4
Erlang version: Erlang/OTP 22.0.7
Elixir version: 1.8.2
Joken version: 2.1.0
Jose version: 1.9.0

Thanks for the info! I can't look at it more closely right now but I'll ask just one more information: can you say the result of running :crypto.info_lib()? One thing to try on this scenario is to run ES512 entirely through the openssl version Erlang has available to in the container.
Also, can you verify that JOSE.crypto_fallback/0 is false?

Here's the info real quick:
:crypto.info_lib(): [{"OpenSSL", 269488175, "OpenSSL 1.1.1b  26 Feb 2019"}]
JOSE.crypto_fallback(): false
Now I'm going to try and figure out how to "run ES512 entirely through the openssl version Erlang has available to in the container." :crossed_fingers:

I'm having some trouble figuring out how exactly I am supposed to run ES512 entirely through openssl while using Joken... any pointers?

Hey @victorolinasc have you been able to put any time into this? Or is there anything else I can do to help discover what the solution may be?

Sorry @Shayon I still haven't found some time to look into this. I'll try to make some room tonight. Hope to reply to you in max 24hs.
Once again, sorry for the long wait. I still believe/guess this is not a Joken issue per se. Could you try using a different algorithm? ES512 is based on secp521r1 and is specified here.
From my previous experience this is not the most recommended algorithm and is also not the best performing one (we have a bench suite on the project). Most big implementations on the wild that I know of prefere RS*** algorithms. If you could at least attest that this works better than we could narrow it down to the implementation of elliptic curve cryptography.
My reasoning here will be to see if I can generate that load locally and test it with several implementations (HS, RS, ES, PS mainly).

I couldn't reproduce it, but I am trying to come up with something you can test on your server.
The core of ES512 is this:
:public_key.verify(message, :sha512, der_signature, ec_public_key)

Here we have:

message is the the first two parts of the token
der_signature is the third part of the token der encoded
ec_public_key is an erlang ECPublicKey record which contains the point on the curve :secp521r1

I truly think that you are reaching a locking in the crypto implementation as the syscall that is most called is futex and we don't lock anything explicitely neither on Joken nor on JOSE.
If you are following the Erlang Ecosystem Foundation newsletters the security team has in one of its goals to re-architect the crypto module to avoid using so many locks. I've read it on the newsletter but that can't be searched online and I've unfortunately deleted the e-mail =/
The whole implementation of the ES512 is here on JOSE. There you can check out how to der_encode the signature and try it on your server to see if it is purely the crypto implementation calling :public_key directly.

Hi @Shayon have you figured it out whether there is something in Joken creating the lock?

So, I don't think it is necessarily Joken that is at fault, I was able to reproduce using JOSE only a while back.  I'm not really an expert at this so I'm having trouble debugging it.  Furthermore, since the problem isn't going  away I've had to spend my time on modifying my service so it can run on multiple hosts in order to scale (sooner than I would have liked :disappointed:)
Like I said, I think this is not really a Joken issue so you can close the issue if you like.  It's a pity I couldn't get to the bottom of this though

Like I said, I truly think this is a crypto bug that might be addressed on
OTP 23.
One channel you could ask about this is the erlang slack community. Also,
it would be nice to open a bug on the OTP jira. You have a lot of good data
to share and I guess it would be a welcome report.
Em seg, 30 de set de 2019 14:30, Shayon Javadizadeh <
<EMAIL_ADDRESS>escreveu:

So, I don't think it is necessarily Joken that is at fault, I was able to
reproduce using JOSE only a while back. I'm not really an expert at this
so I'm having trouble debugging it. Furthermore, since the problem isn't
going away I've had to spend my time on modifying my service so it can run
on multiple hosts in order to scale (sooner than I would have liked 😞)
Like I said, I think this is not really a Joken issue so you can close the
issue if you like. It's a pity I couldn't get to the bottom of this though
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/joken-elixir/joken/issues/242?email_source=notifications&email_token=AAC34QRCOF7XAE7XCLCK32LQMIZSTA5CNFSM4IJYUS32YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD76N4VQ#issuecomment-536665686,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAC34QWDNDA4ZCLIWEO2X43QMIZSTANCNFSM4IJYUS3Q
.

Okay, I'll try to do that once I am able to get things stable with my service.  I really appreciate the help, Victor! :1st_place_medal:

No worries! Sorry if I can't help you more =/
Hope things get sorted out!


flow owner list ... doesn't return service principals

Priority
(Urgent) I can't use the CLI
Description
I'm trying to write a script to change "owners" (not co-owners) of power automate flows.
Plenty of my flows are currently owned by a service principal which was used for automated deployment from DevOps.
when I try to find these flows belonging to a specific owner (the SP) they are not returned at all.
Steps to reproduce
have a flow owned by a service principal
run the command m365 flow owner list
response doesn't includes service principals
Expected results
service principal id (and type of principal) is returned like other users, groups.
Actual results
[] if SP is the only owner,
or [{regularCanEditUser},{regularCanEditGroup}, ..]
Diagnostics
No response
CLI for Microsoft 365 version
v6.10.0
nodejs version
v18.17.0
Operating system (environment)
Windows
Shell
PowerShell
cli doctor
{
  "os": {
    "platform": "win32",
    "version": "Windows 10 Enterprise",
    "release": "10.0.19044"
  },
  "cliVersion": "6.10.0",
  "nodeVersion": "v18.17.0",
  "cliAadAppId": "31359c7f-bd7e-475c-86db-fdb8c937548e",
  "cliAadAppTenant": "common",
  "authMode": "DeviceCode",
  "cliEnvironment": "",
  "cliConfig": {},
  "roles": [],
  "scopes": [
    "AllSites.FullControl",
    "AppCatalog.ReadWrite.All",
    "AuditLog.Read.All",
    "Bookings.Read.All",
    "ChannelMember.ReadWrite.All",
    "ChannelMessage.Read.All",
    "ChannelMessage.Send",
    "ChannelSettings.ReadWrite.All",
    "Chat.Read",
    "Chat.ReadWrite",
    "Directory.AccessAsUser.All",
    "Directory.ReadWrite.All",
    "ExternalConnection.ReadWrite.All",
    "Group.ReadWrite.All",
    "IdentityProvider.ReadWrite.All",
    "Mail.ReadWrite",
    "Mail.Send",
    "Notes.Read.All",
    "Place.Read.All",
    "Policy.Read.All",
    "Reports.Read.All",
    "SecurityEvents.Read.All",
    "ServiceHealth.Read.All",
    "ServiceMessage.Read.All",
    "ServiceMessageViewpoint.Write",
    "Tasks.ReadWrite",
    "Team.Create",
    "TeamMember.ReadWrite.All",
    "TeamsAppInstallation.ReadWriteForUser",
    "TeamSettings.ReadWrite.All",
    "TeamsTab.ReadWrite.All",
    "TermStore.ReadWrite.All",
    "User.Invite.All",
    "User.ReadWrite.All",
    "profile",
    "openid",
    "email",
    "user_impersonation"
  ]
}

Additional Info
No response

What kind of SP are you using? Just a user? The command is working just fine for me for a flow that I do not own.

it's a service principal (application registration in AAD?!) configured as application user in environment admin center.
Does it make sense to share its id here?

@smadep if you run the command with --debug option, can you see the service principal's name in the output or not at all? It could be that it's not returned by the underlying API in which case it would be more complicated for us to find a way where to get this information from.

It could be that it's not returned by the underlying API in which case it would be more complicated for us to find a way where to get this information from.

I fear this will be the case indeed.

I tried with --debug switch and yes unfortunately it is not returned :-/ although it is there according to UI

well, the UI get's the data from here ...
https://emea.api.flow.microsoft.com/providers/Microsoft.ProcessSimple/environments/{envname}/flows/{flowid}
and from environment instance api
what I do not understand at all for this flow which is part of a solution is, that in m365 response it has a different id than in UI and the queries done from there?!

I'm not really a Power Automate/Dataverse expert, but what I know is that when a flow is part of a solution, it's stored in Dataverse. And I guess other APIs will come into play there. The fact that the ID of the flow changes is very unfortunate indeed. For Dataverse flows, they make use of workflow IDs if I'm not mistaken.

Seems like the workflow ID can be retrieved when you fetch the details of the flow:
GET https://management.azure.com/providers/Microsoft.ProcessSimple/environments/<environment id>/flows/<flow id>?$select=properties/workflowEntityId&api-version=2016-11-01

But if I see correctly, the request used to update the owner contains the ID of the owner. But that ID is not the Azure AD ID 😒

Seems like we can retrieve the ID of the user by querying the systemusers Dataverse table and reading the systemuserid property of the user.

@appieschot any suggestions what's the preferred course of action that we should take?


Blcokrain activity icons are not proper

Up arrow icon is replaced with refresh icon. It is really confusing at first look and when I read the hint then I understand that it is not a refresh button but up arrow

Fixed the issue in the pull request.I have changed the title of icon.


Array: Find Longest peak of an array in Javascript

Write a function that takes in an array of integers and returns the length of the longest peak in the array.
A peak is defined as adjacent integers in the array that are strictly increasing until they reach a tip (the highest value in the peak), at which point they become strictly decreasing. At least three integers are required to form a peak.
Sample Input  = [1, 2, 3, 3, 4, 0, 10, 6, 5, -1, -3, 2, 3]
Output = 6 // 0, 10, 6, 5, -1, -3

@akgmage please Assign This to me I wanna contribute.

@akgmage Can you assign this to me.


Update to the new repository for SBT builds.

The Typesafe artifactory repository is no longer available. We moved
existing artifacts to another repository. This should fix the build for everyone

It does still not work on a fresh maven repo.

It probably does. You just need to wipe it, or add -U if you already tried it today. Maven caches the information that a snapshot wasn't available today, and it won't check again unless you force it with -U.

I tried on a complete fresh repo (with the -Dmaven.repo.local=/tmp/repo flag) where nothing was cached.

Would be nice if someone else could try that, not that in the end my maven is broken - wouldn't be the first time.

I just tried it, it worked for me. Are you sure you didn't use the same temporary repo before?

@sschaef  Okay, I'll try it in few minutes.

For me Iulian's branch in connection with a clean repo builds without problem.

Ok, I'll proceed with a merge. :)

Ok, I finally also succeeded in building it successfully. The problem was that I ran mvn clean verify, which did not work. mvn clean install in contrast led to success. I always thought install is just the phase after verify and therefore is doing additional stuff. How wrong I was.

You shouldn't run mvn directly. Why not go through build-all.sh?
There's more than one project that gets built in build-all.sh, and the main build step needs to find those projects in your local maven repository. If you don't install them, there's no way to find them (unless you have an older version lying around)

Yeah, after thinking about it again yesterday evening, it occurred to me that the error message I saw is completely logical. So, verify is indeed doing what it should do. I have my own build scripts to make my live easier (building multiple repos at once etc.), therefore I do some things a little bit differently. Normally that works fine, with exception of the rare cases where it turns out that you fully need to understand how the build works.


Guys if you want to down grade look here

If you want to downgrade to here it is 14.3 but some servers don't work on it because they are not compatible the link is here it's safe https://drive.google.com/file/d/0B0yUYMpSqV5bU2VHNGZfOXh4aEU/view?usp=drivesdk

Is it still compatible with mods

Can u guys fix the problem or is there no way

Yes you can play mods on 0.14 but not 0.15; since microsoft fucked it up so just w8 for update or downgrade to 0.14!

Ok thanks
On Jun 28, 2016 12:51 AM, "JMRJPL"<EMAIL_ADDRESS>wrote:

FYI,eventhough downgrade to v0.14 , finally i still can't open the saved
world sthg like it remembered that MCPE had ever been upgraded to v0.15,
pls suggest which files to be deleted
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/zhuowei/MCPELauncher/issues/1186#issuecomment-228977142,
or mute the thread
https://github.com/notifications/unsubscribe/ATOk-RgEgGM485BmVsx56F1osLHqrTa7ks5qQNJigaJpZM4I_voW
.

Plz, close this report cause, were spending more time dealing with reports than porting BL!
Thx!

Delete the world's or keep them so you can play in 15.0 later you upgrade

I'm trying to speed us the progress on the update!

???

No you are nit

U lost me???


fix: Fix macos build

Thank you very much and for your next contribution, please sign your commits.


Applications Settings on an appliance blows up with Permission Denied

To reproduce go to the Application Settings on a new appliance
Aug 02 13:28:45 localhost.localdomain manageiq[6348]:  INFO -- production: Started GET "/ops/explorer" for <IP_ADDRESS> at 2021-08-02 13:28:45 -0400
Aug 02 13:28:45 localhost.localdomain manageiq[6348]: FATAL -- production:
                                                      Errno::EACCES (Permission denied @ dir_s_mkdir - /var/www/miq/vmdb/public/upload):

                                                      manageiq-ui-classic (a94f6d348773) app/controllers/ops_controller/settings/common.rb:6:in `mkdir'
                                                      manageiq-ui-classic (a94f6d348773) app/controllers/ops_controller/settings/common.rb:6:in `<module:Common>'
                                                      manageiq-ui-classic (a94f6d348773) app/controllers/ops_controller/settings/common.rb:1:in `<top (required)>

https://github.com/ManageIQ/manageiq-ui-classic/blob/master/app/controllers/ops_controller/settings/common.rb#L5-L6

cc @kbrock

Fixed by #21355


Add custom function to parse training pages for bytesize links

Is your feature request related to a problem? Please describe.
Outside of event pages, bytesize links need to be embedded with "complex" html. It would be friendlier to contributors
to only need to use a markdown link.
Describe the solution you'd like
Replace the need for:

with
[Bytesize talk: Title here](https://www.youtube.com/embed/xuNYATGFuw4)

Add a custom function to translate the markdown link into the required html.
Additional context
https://github.com/nf-core/nf-co.re/pull/1063#discussion_r823865533

How about just:
https://www.youtube.com/embed/xuNYATGFuw4

ie. no markdown link? Is the link needed?

That works fine for me. Linter won't complain about bare link?


Fix same_file check

by checking that the files are the same, not just the device numbers

Thanks :)
Do you want commit rights?

Oh right, you've already given them to me last time. Sorry for the unnecessary ping :)


Emissions per square foot card - pulling wrong data field for kg/sf

The second building details card (emissions per square foot) is using the wrong data field. Should be pulling from total_ghg_emissions_intensity instead of total_ghg_emissions.
e.g. this building should be showing 0.3 kg/sf instead of 385.6
┆Issue is synchronized with this Asana task

in SQL
SELECT id, year, total_ghg_emissions, total_ghg_emissions_intensity FROM public.seattle_buildings_master_copy_for_update2020
where id = 659 and year = 2020

After updating:


Xpra: 3.0.9 -> 4.0.2, update patches

Motivation for this change
Fixes: #88035
cc:
@lourkeur @offlinehacker
Things done
I was having issues with KDE (#88035), which I reported upstream. There is a workaround for pyxdg issues in 4.0.2.

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

[x] NixOS
[ ] macOS
[ ] other Linux distributions

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

Edit: Ok, strange the exact same thing that happened to me before (where I was able to initially start/attach to xpra happened again, and now I'm reproducing #88035. It happens only after I restart...

From: totaam via IRC:
 XPRA_EXPORT_XDG_MENU_DATA=0
or --start-new-commands=no
the second one is more restrictive
or wait for 4.0.2

Ok, I backported a patch from the upcoming 4.0.2 which should be removed upon the next version bump. It bypasses the problem with pyxdg (but doesn't fix whatever is going on on nix with XDG_DATA_DIRS and pyxdg.

@offlinehacker @lourkeur The patch is now in upstream so I've updated the commit. This should be good to merge and backport.

trusting the good word of @lourkeur to have tested the end-to-end scenario :)


⚠ Bofrost.de has degraded performance

In c9bb916, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1775 ms

Resolved: Bofrost.de performance has improved in 54c776b after 26 minutes.


Is this repository actively maintained?

Hi all,
Just wondering if this repo is actively maintained or whether I should just be using the REST API directly with something like requests. I ask because I see there are a few unanswered issues and PRs over the past few months.

I think that is a no. For anyone who's curious, I ended up re-implementing it myself.

@lboyette-okta could you merge pr's?

Okay, I guess the Okta devs closing this issue without responding is a definitive "no" to my question. Cheers.

Sorry @scottcunningham this repo is now actively maintained and we have a CLA for merging PRs. We have multiple python devs on the team, maintaining this repo is important to us.

Thanks for the update @tbelote-okta! If the repo is likely to become active again, I'll try to take a look at my project from last February and figure out what the issues with this SDK were and the missing features that prompted me to write my own wrapper and try to contribute them back.


Enable jBallerina unit tests

Purpose

Describe the problems, issues, or needs driving this feature/fix and include links to related issues.

Fixes #
Approach

Describe how you are implementing the solutions along with the design details.

Samples

Provide high-level details about the samples related to this feature.

Remarks

List any other known issues, related PRs, TODO items, or any other notes related to the PR.

Check List

[ ] Read the Contributing Guide
[ ] Updated Change Log
[ ] Checked Tooling Support (#)
[ ] Added necessary tests

[ ] Unit Tests
[ ] Spec Conformance Tests
[ ] Integration Tests
[ ] Ballerina By Example Tests

[ ] Increased Test Coverage
[ ] Added necessary documentation

[ ] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

Codecov Report

Merging #24074 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master   #24074   +/-   ##
=======================================
  Coverage   14.59%   14.59%
=======================================
  Files          51       51
  Lines        1411     1411
  Branches      219      219
=======================================
  Hits          206      206
  Misses       1189     1189
  Partials       16       16

Continue to review full report at Codecov.

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


TextInput support for web & native

Maybe I could add support for vr and sketchapp.
For vr I could wrap this https://www.npmjs.com/package/react-vr-textinput
Sketchapp for start could just be just Text with placeholder etc props?


AMQP-800: LocalizedQueueConnectionFactory Fix

JIRA: https://jira.spring.io/browse/AMQP-800
The LocalizedQueueConnectionFactory incorrectly destroyed the injected default
connection factory. It should only destroy factories that it creates.
cherry-pick to 1.7.x

There is nothing to cherry-pick. That code has been introduced via: https://github.com/spring-projects/spring-amqp/commit/b5f530d80cec0b9851a2a82a9e96d8e17c594e20
So, now I think we need to reconsider some tests to destroy an external CF manually.

Yes; will push. Thanks.


Calling Set-Location without any parameters changes location to %UserProfile% directory

Steps to reproduce
Call Set-Location or cd

PS C:\Users\gakama\Desktop> set-location D:\
PS D:\> cd
PS C:\Users\gakama> set-location D:\
PS D:\> Set-Location
PS C:\Users\gakama>

Expected behavior
Without any parameters, it shouldn't change the current location.

Here's the output from Powershell 5.1

PS C:\Users\gakama\Desktop> Set-Location d:
PS D:\> cd
PS D:\>

Actual behavior
The location changes to "%USERPROFILE%" (C:\Users\<username>)

Environment data

> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      6.1.0-preview.2
PSEdition                      Core
GitCommitId                    v6.1.0-preview.2
OS                             Microsoft Windows 10.0.16299
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>
WSManStackVersion              3.0

This was an explicit design decision (and yes, a breaking change from Windows PowerShell) mimicking Bash

Coming from Windows it caught me by surprise.

Is this change documented?

@iSazonov created https://github.com/PowerShell/PowerShell-Docs/pull/2480

@SteveL-MSFT It's really amazing behavior on Windows because Windows users expect in contrast to Unix that default working directory is Documents not profile root folder.
/cc @mklement0 What do you think?

@iSazonov:
The behavior is consistent: the equivalent locations - $HOME - are targeted on all platforms.
It is a fact of Windows life that creating files and folders directly in $HOME is ill-advised - albeit possible. Yes,  using Documents for user-created content is the right choice, but it is only a  convention.
This asymmetry in how the $HOME folder is used between Unix-like platforms and Windows is unfortunate, but in this case I think it's more important to be consistent and stick with the well-defined, directly equivalent $HOME on all platforms.
That said, it would generally be handy for Set-Location to support the special / well-known folders supported by [Environment]:: via  the [Environment+SpecialFolder] enumeration, so that you could do something like:
Set-Location -SpecialFolder MyDocuments

See #6966


[Feature Request] enable "Location" service by default when we start Traccar client by enabling "Service status"

@tananaev, why is it not made default to enable "Location" service from mobile  when we enable "Service status" from Traccar client?
Many times I faced this situation that I forget to enable "Location" and start wondering why "Location updates" are not getting generated.
Please add a feature to enable "Location" service by default when we start Traccar client by enabling "Service status".

Looks like we can use ACTION_LOCATION_SOURCE_SETTINGS intent action for that.

I think, the Traccar Client may show a question asking whether to enable "Location" if the service is started.


Ax5043 regs

Summary

Take a closer look at the radio driver. Clean it up and try to debug some stuff.
Testing

In the process of flatsat testing. The unit tests provided with the driver are failing, oddly enough
Notes

This code is very unreadable. Whyyyyyy. Please don't write code like this
Comments

[ ] Add an x between the brackets if you commented your code well!

@tmf97 , @tylertking Let's try to merge this branch if that is still the plan


Support glob/regex when passing journey directory

Passing the journey pattern, e.g. *.journey.js to the cli is easier compared to the current approach. Using these pattern would replace the --pattern option.

We now handle this via --match


Remove _foundation_essentials_feature_enabled guard in FOUNDATION_FRAMEWORK

Enable the code paths guarded behind the feature flag unconditionally now that the feature flag has been enabled for quite a while now.

@swift-ci please test


Clean termination of ongoing acquisition

Not sure if this is a pycromanager or micromanager question.
I have a MDA running that I would like to terminate prior to completion (its being externally triggered). I am not using a context manager, but rather creating the acquisition object and then sending its event queue a None to shut down.
Is there a way to tell micromanger to stop the acquision in such a way that the pycromanager object will cleanly shut down?
Thanks,
Carl

If im understanding correctly, sending the None event is the way to do this that will make it shut down properly

This still leaves two threads running in my case: ImageProcessor and the AcquisitionHook for the post camera hook (these are two hooks I specify in my Acquisition.  This means that I cannot exit the program using sys.exit.
I tried using await_completion, but that hangs up waiting for the remote acquisition to close down.

Many fixes in the intervening time make me thing this is no longer an issue. Feel free to reopen if not


Foster creation of auto-generated API docs for all Kubeflow apps

Document the tooling and processes for creating Swagger specs and request that each Kubeflow app follows the processes and creates generated ref docs.
Guides should go here:
https://github.com/kubeflow/website/tree/master/gen-api-reference
Source of this requirement: Developer users need a list of all HTTP endpoints exposed by Kubeflow. (From a community member during community meeting on June 18, 2019.)

/priority p2

I'm closing this issue. We now have auto-generated API docs for some of the apps, and we've made the inclusion of reference docs a prerequisite for moving to v1.0 of the app.
/close


As the number of Kong plug-ins increases, QPS performance plummets

Is there an existing issue for this?

[X] I have searched the existing issues

Kong version ($ kong version)
kong versionn all
Current Behavior
Kong configuration file
kong.conf
plugins = bundled,my_plugin_1,my_plugin_2,my_plugin_3,my_plugin_4,my_plugin_5,my_plugin_6,my_plugin_7,my_plugin_8,my_plugin_9,my_plugin_10
.............
plugins = bundled,my_plugin_1,my_plugin_2,my_plugin_3,my_plugin_4,my_plugin_5,my_plugin_6,my_plugin_7,my_plugin_8,my_plugin_9,my_plugin_10,my_plugin_11,my_plugin_12,my_plugin_13,my_plugin_14,my_plugin_15,my_plugin_16,my_plugin_17,my_plugin_18,my_plugin_19,my_plugin_20,my_plugin_21,my_plugin_22,my_plugin_23,my_plugin_24,my_plugin_25,my_plugin_26,my_plugin_27,my_plugin_28,my_plugin_29,my_plugin_30,my_plugin_31,my_plugin_32,my_plugin_33,my_plugin_34,my_plugin_35,my_plugin_36,my_plugin_37,my_plugin_38,my_plugin_39,my_plugin_40,my_plugin_41,my_plugin_42,my_plugin_43,my_plugin_44,my_plugin_45,my_plugin_46,my_plugin_47,my_plugin_48,my_plugin_49,my_plugin_50,my_plugin_51,my_plugin_52,my_plugin_53,my_plugin_54,my_plugin_55,my_plugin_56,my_plugin_57,my_plugin_58,my_plugin_59,my_plugin_60,my_plugin_61,my_plugin_62,my_plugin_63,my_plugin_64,my_plugin_65,my_plugin_66,my_plugin_67,my_plugin_68,my_plugin_69,my_plugin_70,my_plugin_71,my_plugin_72,my_plugin_73,my_plugin_74,my_plugin_75,my_plugin_76,my_plugin_77,my_plugin_78,my_plugin_79,my_plugin_80,my_plugin_81,my_plugin_82,my_plugin_83,my_plugin_84,my_plugin_85,my_plugin_86,my_plugin_87,my_plugin_88,my_plugin_89,my_plugin_90,my_plugin_91,my_plugin_92,my_plugin_93,my_plugin_94,my_plugin_95,my_plugin_96,my_plugin_97,my_plugin_98,my_plugin_99,my_plugin_100
a service / route:
{
  "strip_path": true,
  "hosts": [
    "test.com"
  ],
  "preserve_host": false,
  "paths": [
    "/"
  ],
  "service": {
    "host": "upstream-srv",
    "connect_timeout": 60000,
    "protocol": "http",
    "name": "upstream-srv",
    "read_timeout": 60000,
    "port": 7002,
    "path": "/",
    "retries": 0,
    "write_timeout": 60000
  },
  "methods": [],
  "protocols": [
    "http"
  ],
  "id": "a73adda3-ad61-48c0-a574-00ef2f3e66e0"
}

@bungle @thibaultcha  @Tieske  @hishamhm @kikito
Steps To Reproduce
Global, service, routing, etc., without adding plugins
ab -c 250 -n 1000000 -k http://test.com/
stapxx profiling

Hi @fairyqb
For profiling, I have some tips to help you pinpoint the issue:

use stapxx to profile CPU usage by tracing Lua function hotpaths; this is more informative than monitoring lua vm gc object usage.
present your results more clearly; the final image wasn't very intuitive. I guess it's showing QPS metrics, and it appears to have decreased at one point.

Regarding the issue you reported, even though we have plans to enhance the plugin layer like rebuilding mechanism, I'd like to mention that the present decrease in QPS may be as expected. If you indeed Incorporate real business logic into 100 plugins, the likelihood of performance degradation may be even greater, but this is a necessary cost.
If you want to optimize your online system, you could share the real online problems you encounter. Because even with the scenario where a simple Nginx returning a 200 status code, adding an extra Lua operation, you'll still notice a significant performance drop.

Only kong.conf plugins are configured, no plugins are applied in services, route, or global..., and no business logic.
@chobits

At present, there is a fixed cost involved, and to assess any potential practical issues, it's necessary to integrate it into your real online production environment. If your backend response time is greater than the CPU cost of Lua/Kong or if other time-consuming operations are at play, the problem you've reported may have minimal impact.

Only kong.conf plugins are configured, no plugins are applied in services, route, or global..., and no business logic. @chobits

I mean, at present, there is a fixed cost involved, and to assess any potential practical issues, it's necessary to integrate it into your real online production environment. If your backend response time is greater than the CPU cost of Lua/Kong or if other time-consuming operations are at play, the problem you've reported may have minimal impact.

This is tested in our performance environment. There is a big difference in QPS performance between setting up 1 plugin and 60 plugins.

The cost of traversing whether to configure the plugin seems to be very high，this does not include running business logic.

Only kong.conf plugins are configured, no plugins are applied in services, route, or global..., and no business logic. @chobits

I mean, at present, there is a fixed cost involved, and to assess any potential practical issues, it's necessary to integrate it into your real online production environment. If your backend response time is greater than the CPU cost of Lua/Kong or if other time-consuming operations are at play, the problem you've reported may have minimal impact.

This is tested in our performance environment. There is a big difference in QPS performance between setting up 1 plugin and 60 plugins.

Yes, I know your scenario and your concerns about the significant QPS drops in it. However, its important to notice that this scenario is quite different from a real online production environment. The high QPS without any plugins loaded may not have practical significance.
But, we indeed have a long plan to improve the plugin system to fastly load it.

Only kong.conf plugins are configured, no plugins are applied in services, route, or global..., and no business logic. @chobits

I mean, at present, there is a fixed cost involved, and to assess any potential practical issues, it's necessary to integrate it into your real online production environment. If your backend response time is greater than the CPU cost of Lua/Kong or if other time-consuming operations are at play, the problem you've reported may have minimal impact.

This is tested in our performance environment. There is a big difference in QPS performance between setting up 1 plugin and 60 plugins.

Yes, I know your scenario and your concerns about the significant QPS drops in it. However, its important to notice that this scenario is quite different from a real online production environment. The high QPS without any plugins loaded may not have practical significance.
But, we indeed have a long plan to improve the plugin system to fastly load it.

Why does it have no practical significance? This cost plus the cost of the business logic will result in reduced performance even more

Only kong.conf plugins are configured, no plugins are applied in services, route, or global..., and no business logic. @chobits

I mean, at present, there is a fixed cost involved, and to assess any potential practical issues, it's necessary to integrate it into your real online production environment. If your backend response time is greater than the CPU cost of Lua/Kong or if other time-consuming operations are at play, the problem you've reported may have minimal impact.

This is tested in our performance environment. There is a big difference in QPS performance between setting up 1 plugin and 60 plugins.

Yes, I know your scenario and your concerns about the significant QPS drops in it. However, its important to notice that this scenario is quite different from a real online production environment. The high QPS without any plugins loaded may not have practical significance.
But, we indeed have a long plan to improve the plugin system to fastly load it.

Why does it have no practical significance? This cost plus the cost of the business logic will result in reduced performance even more

like creating larger entity for each request and going through multiple plugins, which in turn requires more Lua garbage collection for string objects and more opcode handing.

Thanks for your work on profiling Kong.
Lua is not a perfectly optimized language for CPU-bound tasks. We expect it to take time to run a no-op. It's not feasible to get rid of empty handlers at runtime and the plugin iterator has to plan and run them.
In general, Kong as a gateway is I/O bound. We don't expect it to weigh that much in the whole system (in your setup the backend basically does nothing so Kong becomes the bottleneck).
Therefore there is not much we can do about it, and we don't need to. Maybe we could draft some guidelines mentioning Lua's limitations, to help people write optimized plugins.
I want to stress that the discussions provide value to the community, thus they should be in public.

hi, guys
Im closing this issue, if you still have any problem related to this issue, feel free to reopen.
Note that we are actively working on improving performance of Kong gateway, including enhancement of plguins iteration, DNS layer and dp/cp transfers. However, we cannot provide a specific timeline for these improvements at the moment. There is much work ahead. We welcome ideas from the community.


Unschedule publishing view does not follow next parameter

Issue Summary
When clicking on the Cancel scheduled publish button in the page editor, the response redirects to the page history view instead of returning to the same edit view.

This is a regression when we extracted the unschedule view into a generic class-based view in ae06030016, this method:
https://github.com/wagtail/wagtail/blob/ae0603001638e6b03556aef19bdcfa445f9f74c6/wagtail/admin/views/pages/revisions.py#L163-L167
should've been named get_next_url, per the base RevisionsUnscheduleView class:
https://github.com/wagtail/wagtail/blob/ae0603001638e6b03556aef19bdcfa445f9f74c6/wagtail/admin/views/generic/models.py#L1029-L1035

Steps to Reproduce

Spin up bakerydemo
Schedule a page for publishing
Click the "Cancel scheduled publish" button in the page editor
Get redirected to the page history view instead of the page editor

Any other relevant information. For example, why do you consider this a bug and what did you expect to happen instead?
The response should redirect the user to the current page (the page editor), as per the behaviour in 4.0.

I have confirmed that this issue can be reproduced as described on a fresh Wagtail project: Yes

Fixed in #9672


Configurable Rules: need advice on targeting a property

I'm trying to write a rule to guarantee every referenced schema has a title property at the root of the schema.  I do not want every property to have a title though.
I tried this rule and it does target the root title, but it also targets all sub schemas. This is not the behavior I want.
  rule/schema-must-contain-title:
    severity: warn
    message: Schema MUST contain title
    subject:
      type: Schema
      property: title
    assertions:
      defined: true

Take this example, no error is thrown for the root of the LinkType_v01 schema, but I'm seeing two errors for linkID and href subschemas.
{
        "$schema": "http://json-schema.org/draft-04/schema#",
        "title": "",
        "allOf": [ { "$ref": "./common/linkType_v01.json" }]
}

{
	"$schema": "http://json-schema.org/draft-04/schema#",
	"title": "LinkType_v01",
	"description": "A link description object is used to describe link relations.  In the context of a schema, it defines the link relations of the instances of the schema, and can be parameterized by the instance values.  The link description format can be used on its own in regular (non-schema) documents, and use of this format can be declared by referencing the normative link description schema as the schema for the data structure that uses the links.",
	"type": "object",
	"properties": {
		"linkID": {
			"description": "Simple (string) identifier of an object to be used when there is no appropriate specific named ID Type",
			"type": "string",
			"pattern": "^[a-zA-Z0-9.$-_/]+$"
		},
		"href": {
			"description": "The URI of the related entity, typically used to represent any internet or social network address",
			"type": "string",
			"format": "uri"
		}
	}
}

Is there a way to ONLY target the root of a referenced schema?

I think so. You may look into this issue to get some inspiration: https://github.com/Redocly/redocly-cli/issues/1298. Please let me know if that helps.

the rule for this is shared from #1298.
  rule/schema-ref-must-contain-title:
    severity: warn
    message: Referenced schema MUST contain title
    where:
      - subject:
          type: Schema
        assertions:
          ref: true
    subject:
      type: Schema
      property: title
    assertions:
      defined: true

@jeremyfiel Don't you mind adding the rule to our Cookbook?


Fix vich_config - property name, UserManager::hasRole(), hardcoded template path to prototype, UserLoad

There was an error in Hackzilla\Bundle\TicketBundle\Entity\TicketMessageWithAttachment.xml, wrong field name value (file).
Fixed value - "attachmentFile"

Are going to fix some to pass all checks :) Will come back soon!

Thank you for your hard work!

:^)


Hunt the Mole Game

Project title
Hunt the Mole Game
Project Description
This is a standard Whack-A-Mole game and has a waist-level cabinet with a play area and a display screen, as well as a huge, soft black mallet. Five holes in the top of the play area are stuffed with small plastic moles that appear at random. Whacking each mole as it appears earns you points. The higher the score, the faster the reaction.
Stack:
And in order to tick the check box just but x inside them for example - [x] like this. Please delete options that are not relevant.

[x] Html
[x] CSS
[x] JavaScript

@khushi-purwar please assign this isseu to me and kindly add a level label

/assign


Make Docker&Singularity lecture

I added a short lecture for both Docker and Singularity f3a3b73

Leif is taking this lecture


conflict with firebase plugin

I'm submitting a ...  (check one with "x")
[ ] question
[x] any problem or bug report
[ ] feature request
The plugin version:  (check one with "x")
[ ] 1.4.x (deprecated, no more supported)
[x] 2.0.0-beta3 (github)
[ ] 2.0 (npm)
If you choose 'problem or bug report', please select OS:  (check one with "x")
[x] Android
[ ] iOS 10*
[ ] iOS 11
cordova information:  (run $> cordova plugin list)
cordova-plugin-compat 1.1.0 "Compat"
cordova-plugin-console 1.0.7 "Console"
cordova-plugin-device 1.1.6 "Device"
cordova-plugin-fcm 2.1.2 "FCMPlugin"
cordova-plugin-firebase 0.1.21 "Google Firebase Plugin"
cordova-plugin-geolocation 2.4.3 "Geolocation"
cordova-plugin-googlemaps 2.0.0-beta3-20170905-1257 "cordova-plugin-googlemaps"
cordova-plugin-nativestorage 2.2.2 "NativeStorage"
cordova-plugin-splashscreen 4.0.3 "Splashscreen"
cordova-plugin-statusbar 2.2.3 "StatusBar"
cordova-plugin-whitelist 1.3.2 "Whitelist"
ionic-plugin-deeplinks 1.0.15 "Ionic Deeplink Plugin"
ionic-plugin-keyboard 2.2.1 "Keyboard"
{}

If you use @ionic-native/google-maps, please show me the package.json
{
    "name": "Project",
    "version": "0.0.1",
    "author": "Ionic Framework",
    "homepage": "http://ionicframework.com/",
    "private": true,
    "scripts": {
        "clean": "ionic-app-scripts clean",
        "build": "ionic-app-scripts build",
        "lint": "ionic-app-scripts lint",
        "ionic:build": "ionic-app-scripts build",
        "ionic:serve": "ionic-app-scripts serve"
    },
    "dependencies": {
        "@angular/common": "4.1.3",
        "@angular/compiler": "4.1.3",
        "@angular/compiler-cli": "4.1.3",
        "@angular/core": "4.1.3",
        "@angular/forms": "4.1.3",
        "@angular/http": "4.1.3",
        "@angular/platform-browser": "4.1.3",
        "@angular/platform-browser-dynamic": "4.1.3",
        "@ionic-native/core": "^3.12.1",
        "@ionic-native/deeplinks": "^4.1.0",
        "@ionic-native/fcm": "^4.1.0",
        "@ionic-native/geolocation": "^4.1.0",
        "@ionic-native/google-maps": "^4.2.1",
        "@ionic-native/native-storage": "^4.1.0",
        "@ionic-native/splash-screen": "3.12.1",
        "@ionic-native/status-bar": "3.12.1",
        "@ionic/storage": "2.0.1",
        "angularfire2": "^4.0.0-rc.1",
        "cordova-android": "^6.2.3",
        "cordova-browser": "^4.1.0",
        "cordova-plugin-compat": "^1.1.0",
        "cordova-plugin-console": "^1.0.7",
        "cordova-plugin-device": "^1.1.6",
        "cordova-plugin-fcm": "^2.1.2",
        "cordova-plugin-firebase": "git+https://github.com/apptum/cordova-plugin-firebase.git",
        "cordova-plugin-geolocation": "^2.4.3",
        "cordova-plugin-googlemaps": "git+https://github.com/mapsplugin/cordova-plugin-googlemaps.git#multiple_maps",
        "cordova-plugin-nativestorage": "^2.2.2",
        "cordova-plugin-splashscreen": "^4.0.3",
        "cordova-plugin-statusbar": "^2.2.3",
        "cordova-plugin-whitelist": "^1.3.2",
        "firebase": "^4.2.0",
        "ionic-angular": "^3.6.0",
        "ionic-plugin-deeplinks": "^1.0.15",
        "ionic-plugin-keyboard": "^2.2.1",
        "ionicons": "3.0.0",
        "promise-polyfill": "^6.0.2",
        "rxjs": "5.4.0",
        "sw-toolbox": "3.6.0",
        "zone.js": "0.8.12"
    },
    "devDependencies": {
        "@ionic/app-scripts": "^2.1.3",
        "ionic": "3.9.1",
        "typescript": "2.3.4"
    },
    "description": "An Ionic project",
    "cordova": {
        "plugins": {
            "cordova-plugin-geolocation": {},
            "cordova-plugin-console": {},
            "cordova-plugin-device": {},
            "cordova-plugin-splashscreen": {},
            "cordova-plugin-statusbar": {},
            "cordova-plugin-whitelist": {},
            "ionic-plugin-keyboard": {},
            "cordova-plugin-nativestorage": {},
            "ionic-plugin-deeplinks": {
                "URL_SCHEME": "myapp",
                "DEEPLINK_SCHEME": "https",
                "DEEPLINK_HOST": "ex.com.com",
                "ANDROID_PATH_PREFIX": "/"
            },
            "cordova-plugin-fcm": {},
            "cordova-plugin-firebase": {},
            "cordova-plugin-googlemaps": {
                "API_KEY_FOR_ANDROID": "AIzaSyARbzj9AoFrY0sxxxxxxxx",
                "API_KEY_FOR_IOS": "AIzaSyARbzj9AoFrY07xxxxxxxxxxxxx"
            }
        },
        "platforms": [
            "android",
            "browser"
        ]
    }
}

Current behavior:

I have a project with firebase plugin for ionic, the project run and compile without any problems until I add this plugin
Expected behavior:

Steps to reproduce:
add new project with firebase plugin then add this plugin..
Related code, data or error log (please format your code or data):
Found com.google.android.gms:play-services-maps:+, but version 9.0.0 is needed for the google-services plugin.

Found com.google.android.gms:play-services-location:+, but version 9.0.0 is needed for the google-services plugin.

:processDebugGoogleServices FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':processDebugGoogleServices'.
> Please fix the version conflict either by updating the version of the google-services plugin (information about the latest version is available at https://bintray.com/android/android-tools/com.google.gms.google-services/) or updating the version of com.google.android.gms to 9.0.0.

https://github.com/mapsplugin/cordova-plugin-googlemaps/search?q=firebase+plugin&type=Issues&utf8=✓
They specify the old version.
https://github.com/apptum/cordova-plugin-firebase/blob/master/src/android/build.gradle#L6

fix me:
cordova-android-play-services-gradle-release 0.0.2 "cordova-android-play-services-gradle-release"
cordova-android-support-gradle-release 0.0.2 "cordova-android-support-gradle-release"
cordova-google-api-version 0.0.1 "cordova-google-api-version"

@gbelmm what is this? i didn't understand :D

sorry @AsimNet  install
cordova plugin add cordova-android-play-services-gradle-release
cordova plugin add cordova-android-support-gradle-release
cordova plugin add cordova-google-api-version --variable GOOGLE_API_VERSION=11.0.1
fix

I had the same issue. It's a problem with cordova-plugin-fcm and not google maps. This **** plugin just conflicts with any other plugin that uses gms .
I had it with google maps and google plus (plugin to login user using his google plus account).
Just find another plugin for notification pushing.
This is the one I used

@gbelmm same issue tried update but sill having
Found com.google.android.gms:play-services-location:9.8.0, but version 9.0.0 is needed for the google-services plugin.
:processDebugGoogleServices FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':processDebugGoogleServices'.```

i have the same problem ... no solution!?


"ARM64" in descriptions should be "Arm64"

Per their branding since 2018.

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

ID: 9af4f1f5-c5b5-71fa-a871-2df0e30bdc8d
Version Independent ID: 2c2cb1e1-d5b9-58d2-e419-3192163bba3b
Content: Embedded Speech - Speech service - Azure AI services
Content Source: articles/ai-services/speech-service/embedded-speech.md
Service: azure-ai-speech
GitHub Login: @eric-urban
Microsoft Alias: eur

@Psychlist1972
Thanks for your feedback! We will investigate and update as appropriate.

@Psychlist1972
Thanks for reporting this! We have created a PR for this issue and the changes should go live soon.


Deprecation warning in node 12.2.0

[DEP0066] DeprecationWarning: OutgoingMessage.prototype._headers is deprecated
warn DeprecationWarning: OutgoingMessage.prototype._headers is deprecated
    at Object.extractSocket (/usr/local/lib/node_modules/pm2/node_modules/event-loop-inspector/utils.js:33:44)
    at /usr/local/lib/node_modules/pm2/node_modules/event-loop-inspector/index.js:39:17
    at Array.forEach (<anonymous>)
    at Object.dump (/usr/local/lib/node_modules/pm2/node_modules/event-loop-inspector/index.js:22:42)
    at Timeout._onTimeout (/usr/local/lib/node_modules/pm2/node_modules/@pm2/io/build/main/src/features/actions.js:18:96)
    at listOnTimeout (internal/timers.js:531:17)
    at processTimers (internal/timers.js:475:7)

PM2 depends on your module, so please fix it to support Node 12.x without deprecation warnings.

@SagePtr
I will check that soon. It seems they deprecated the access to private properties but fortunately, they had public methods to retrieve headers.

@SagePtr
I made all the changes and I was ready to publish but it looks like I do not have rights anymore on this repo.
What a shame!
You should try to ping Keymetrics to ask them to work on this issue. They're the only ones I guess who can commit on this repo.

@wallet77 In the mean time, couldn't you fork and simply just publish to npm? You still own that part of this repository. Once Keymetrics notices the deprecation warning, they could just add the fix to this repository themselves.

Have created a PR
https://github.com/keymetrics/event-loop-inspector/pull/9

https://github.com/keymetrics/pm2-io-apm/commit/4578a447c71a16e1350814b65c1088f450dbd3e8


贡献一个适合测试fastjson的工具，比如 WisdomTool REST Client

很多REST Client是不支持自动化测试RESTful API，也不支持自动生成API文档.
之前习惯用一款名字为 WisdomTool REST Client，支持自动化测试RESTful API，输出精美的测试报告，并且自动生成RESTful API文档。
还是需要一个更适合测试fastjson的工具

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.28 out of 70 committers have signed the CLA.:white_check_mark: VictorZeng:white_check_mark: LoveTangNow:white_check_mark: eoss1990:white_check_mark: neil4dong:white_check_mark: xladykiller:white_check_mark: lovepoem:white_check_mark: duxinglangzi:white_check_mark: kimmking:white_check_mark: chen623:white_check_mark: gaecfov:white_check_mark: imJude-z:white_check_mark: lihengming:white_check_mark: LNAmp:white_check_mark: hellyguo:white_check_mark: Nextyo:white_check_mark: myoss:white_check_mark: yanquanyu:white_check_mark: Slahser:white_check_mark: RaghavaDhanya:white_check_mark: wuwen5:white_check_mark: rmfish:white_check_mark: MountainBlanc:white_check_mark: lh4111:white_check_mark: CharkeyQK:white_check_mark: bingoko:white_check_mark: imknown:white_check_mark: LaughXP:white_check_mark: CodePlayer:x: wenshao:x: maxiaoyao:x: SongLing Dong:x: unknown:x: jian.li02:x: azy2:x: dyc87112:x: niaoge:x: ianate:x: WaTer9527:x: sundy-li:x: invalid-email-address:x: 宇智:x: wanxin.twx:x: tenwx:x: mortonfox:x: oldratlee:x: kangkona:x: hanyunfei_iwm:x: abop:x: yixblog:x: danieldingzju:x: myshzzx:x: 东杰:x: pra85:x: mrkcsc:x: felixonmars:x: yongqing.zhangyq:x: yakolee:x: Yako:x: ronnin:x: zhaolong:x: vbauer:x: qifanyang:x: yuankui:x: LQZYC:x: machunlin:x: beilly:x: wuminorb:x: bohrqiu:x: mozhu:x: {李彦慧}({026834})maxiaoyao, SongLing Dong, unknown, jian.li02, 宇智, wanxin.twx, hanyunfei_iwm, 东杰, yongqing.zhangyq, Yako, machunlin, mozhu, {李彦慧}({026834}) seem not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

Codecov Report

:exclamation: No coverage uploaded for pull request base (1.1.46@8af0afb). Click here to learn what that means.
The diff coverage is 79.03%.

@@            Coverage Diff            @@
##             1.1.46    #1621   +/-   ##
=========================================
  Coverage          ?   81.35%
  Complexity        ?     6096
=========================================
  Files             ?      136
  Lines             ?    22611
  Branches          ?     5194
=========================================
  Hits              ?    18396
  Misses            ?     2943
  Partials          ?     1272

Impacted Files
Coverage Δ
Complexity Δ

...alibaba/fastjson/serializer/SerializerFeature.java
92.72% <ø> (ø)
9 <0> (?)

...om/alibaba/fastjson/serializer/JSONSerializer.java
89.59% <ø> (ø)
74 <0> (?)

...main/java/com/alibaba/fastjson/util/FieldInfo.java
87.87% <ø> (ø)
78 <0> (?)

...om/alibaba/fastjson/serializer/CharacterCodec.java
100% <ø> (ø)
8 <0> (?)

...stjson/support/spring/JSONPResponseBodyAdvice.java
75% <ø> (ø)
6 <0> (?)

.../com/alibaba/fastjson/serializer/BooleanCodec.java
91.66% <ø> (ø)
12 <0> (?)

.../com/alibaba/fastjson/serializer/IntegerCodec.java
88.88% <ø> (ø)
13 <0> (?)

...java/com/alibaba/fastjson/util/ASMClassLoader.java
85.29% <ø> (ø)
12 <0> (?)

...m/alibaba/fastjson/util/ParameterizedTypeImpl.java
61.11% <ø> (ø)
7 <0> (?)

...ibaba/fastjson/serializer/JSONAwareSerializer.java
66.66% <ø> (ø)
3 <0> (?)

... and 120 more

Continue to review full report at Codecov.

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

不要对代码做格式化啊，这么多变更的Patch是不敢合并的

@wangyudongdom 应该需要做下rebase,找不到你本次的commit了。
简单的做法可以重新从master创建分支改下。 看上去你这个是基于1.1.x分支做的。

wangyudongdom  wants to merge 1,850 commits into 1.1.46 from master

@wangyudongdom 是不是 pull reuqest 发错了？ 这个是将master往 1.1.46直接发起的.


feat: pipeline improved to tag and relase on github the new library v…

[LEVEL]/[COMPONENT]
TASK:
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Documentation Only
[ ] Refactor

Description, Motivation and Context
Pipeline improved to tag and release on GitHub the new library version
Created new pipeline:

release.yaml

Screenshots - Animations

Codecov Report

Merging #24 (a3c0170) into main (1ae82af) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #24   +/-   ##
=======================================
  Coverage   96.08%   96.08%
=======================================
  Files          52       52
  Lines         741      741
  Branches      243      243
=======================================
  Hits          712      712
  Misses         27       27
  Partials        2        2

Continue to review full report at Codecov.

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


Add status checks for the database and sqs services to the /livez endpoint

Description
Add status checks for the database and sqs services to the /livez endpoint.
With it, I also added two metrics that count the errors from the status checks: database_status_error_count, sqs_status_error_count
Motivation and Context
Before the endpoint just checked if the API was up and running, now there are connectivity checks that can identify if one of the underlying services can be reached.
How Has This Been Tested?
Tested the changes locally with mocks.
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[x] I have signed the Adobe Open Source CLA.
[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[x] I have added tests to cover my changes.
[ ] All new and existing tests passed.

Rerun tests


New user events are not 100% accurate as inviting a non existent user to join your org creates a user as well

Creating a user should be done on first log in. Add a flag called "isNewUser" set to true while creating their first session / login link. When the link is clicked and we're verifying the seal, create the new login event.

Closed with comms state machine, updates verified email status


[WIP] round robin partition assignment

This pull request adds support for the roundrobin partition assignment strategy for #657

Codecov Report

Merging #748 into master will decrease coverage by 10.6%.
The diff coverage is 51.47%.

@@             Coverage Diff             @@
##           master     #748       +/-   ##
===========================================
- Coverage   84.48%   73.87%   -10.61%
===========================================
  Files          26       27        +1
  Lines        3197     3258       +61
  Branches      499      470       -29
===========================================
- Hits         2701     2407      -294
- Misses        362      709      +347
- Partials      134      142        +8

Impacted Files
Coverage Δ

pykafka/protocol.py
95.19% <100%> (-0.84%)
:arrow_down:

pykafka/broker.py
81.81% <100%> (-7.8%)
:arrow_down:

pykafka/managedbalancedconsumer.py
75% <100%> (-9.14%)
:arrow_down:

pykafka/balancedconsumer.py
81.25% <18.18%> (-10.11%)
:arrow_down:

pykafka/membershipprotocol.py
61.53% <61.53%> (ø)

pykafka/rdkafka/helpers.py
0% <0%> (-93.34%)
:arrow_down:

pykafka/rdkafka/simple_consumer.py
0% <0%> (-89.39%)
:arrow_down:

pykafka/rdkafka/producer.py
10.9% <0%> (-83.64%)
:arrow_down:

pykafka/rdkafka/__init__.py
50% <0%> (-50%)
:arrow_down:

pykafka/handlers.py
73.88% <0%> (-23.14%)
:arrow_down:

... and 12 more

Continue to review full report at Codecov.

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


KaliteSetupScript.iss syntax error

On line 345 on master. Encountered when I tried to build the installer.

Column 5. No character is visible there on github, but in my editor it's definitely a weird unicode character.


fix iso format for v3

To be able to verify the certification in V3, It is necessary to adjust the iso format to the method of validater in cert-issuer.
https://github.com/blockchain-certificates/cert-issuer/blob/37399da56508dba073abea0f759b4157d0830cd5/cert_issuer/models.py#L7

I have #48 Issue and suggest #49


Release 2.21.0 (UPLOAD-41, UPLOAD-50, UPLOAD-80, UPLOAD-91 and UPLOAD-114)

Addresses the following tickets, as well as a bunch of Greenkeeper dependency updates:
UPLOAD-41
UPLOAD-50
UPLOAD-80
UPLOAD-91
UPLOAD-114

@pazaan Please review the fix on release branch. Now that our app is notarized by Apple, I needed to add entitlements to make sure HID devices can still upload.

Merging this, as the only change since the last review was an edit to the README.


fix: Prevent uncaught error in JsonResourceStorage

Closes #769.
The problem occurred when the storage container was being accessed if it didn't exist yet.

Good catch. Can we additionally also add logging so https://github.com/solid/community-server/issues/769 could be detected more easily? We probably want to log before and after a cron job.


typo: Double word "this"

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

biztalk/core/how-to-install-an-assembly-in-the-gac.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Add WGS84 tile support

class GlobalGeodetic(object):
	"""
	TMS Global Geodetic Profile
	---------------------------
	Functions necessary for generation of global tiles in Plate Carre projection,
	EPSG:4326, "unprojected profile".
	Such tiles are compatible with Google Earth (as any other EPSG:4326 rasters)
	and you can overlay the tiles on top of OpenLayers base map.

	Pixel and tile coordinates are in TMS notation (origin [0,0] in bottom-left).
	What coordinate conversions do we need for TMS Global Geodetic tiles?
	  Global Geodetic tiles are using geodetic coordinates (latitude,longitude)
	  directly as planar coordinates XY (it is also called Unprojected or Plate
	  Carre). We need only scaling to pixel pyramid and cutting to tiles.
	  Pyramid has on top level two tiles, so it is not square but rectangle.
	  Area [-180,-90,180,90] is scaled to 512x256 pixels.
	  TMS has coordinate origin (for pixels and tiles) in bottom-left corner.
	  Rasters are in EPSG:4326 and therefore are compatible with Google Earth.
	     LatLon      <->      Pixels      <->     Tiles
	 WGS84 coordinates   Pixels in pyramid  Tiles in pyramid
	     lat/lon         XY pixels Z zoom      XYZ from TMS
	    EPSG:4326
	     .----.                ----
	    /      \     <->    /--------/    <->      TMS
	    \      /         /--------------/
	     -----        /--------------------/
	   WMS, KML    Web Clients, Google Earth  TileMapService
	"""

	def __init__(self, tileSize = 256):
		self.tileSize = tileSize

	def LatLonToPixels(self, lat, lon, zoom):
		"Converts lat/lon to pixel coordinates in given zoom of the EPSG:4326 pyramid"

		res = 180 / 256.0 / 2**zoom
		px = (180 + lat) / res
		py = (90 + lon) / res
		return px, py

	def PixelsToTile(self, px, py):
		"Returns coordinates of the tile covering region in pixel coordinates"

		tx = int( math.ceil( px / float(self.tileSize) ) - 1 )
		ty = int( math.ceil( py / float(self.tileSize) ) - 1 )
		return tx, ty

	def Resolution(self, zoom ):
		"Resolution (arc/pixel) for given zoom level (measured at Equator)"

		return 180 / 256.0 / 2**zoom
		#return 180 / float( 1 << (8+zoom) )

	def TileBounds(tx, ty, zoom):
		"Returns bounds of the given tile"
		res = 180 / 256.0 / 2**zoom
		return (
			tx*256*res - 180,
			ty*256*res - 90,
			(tx+1)*256*res - 180,
			(ty+1)*256*res - 90
		)

(from: https://github.com/brendancol/RacialDotMap/blob/master/globalmaptiles.py)

@brendancol, can we close this issue?