ROCM: Segmentation fault late in build process

Please make sure that this is a build/installation issue. As per our GitHub Policy, we only address code/doc bugs, performance issues, feature requests and build/installation issues on GitHub. tag:build_template
System information

OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Manjaro, completely updated
Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device:
TensorFlow installed from (source or binary): compiling from source
TensorFlow version: 2.5.0
Python version: 3.9.5
Installed using virtualenv? pip? conda?:
Bazel version (if compiling from source): 4.0.0
GCC/Compiler version (if compiling from source):10.2.0-3
CUDA/cuDNN version: cuda: 11.3.0-2,m, cudnn: <IP_ADDRESS>-1
GPU model and memory: AMD rx570 4GB

Describe the problem
Problem is the build fails
Provide the exact sequence of commands / steps that you executed before running into the problem
Building this aur package https://github.com/rocm-arch/tensorflow-rocm
After many hours of compilation I get a segmentation fault.
Any other info / logs
Include any logs or source code that would be helpful to diagnose the problem. If including tracebacks, please include the full traceback. Large logs and files should be attached.
    compile tensorflow/core/kernels/mlir_generated/is_inf_gpu_f16_i1_kernel_generator_kernel.o [for host]; 2s local
    compile tensorflow/core/kernels/mlir_generated/is_inf_gpu_f64_i1_kernel_generator_kernel.o [fERROR: /tmp/trizen-mario/tensorflow-rocm/src/tensorflow-2.5.0-rocm/tensorflow/core/kernels/mlir_generated/BUILD:957:23: compile tensorflow/core/kernels/mlir_generated/is_finite_gpu_f16_i1_kernel_generator_kernel.o [for host] failed: (Segmentation fault): tf_to_kernel failed: error executing command bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel '--unroll_factors=4' '--tile_sizes=256' '--arch=gfx701,gfx702,gfx803,gfx900,gfx904,gfx906,gfx908' ... (remaining 4 argument(s) skipped)
[20,437 / 21,317] 11 actions running
    compile tensorflow/core/kernels/mlir_generated/is_finite_gpu_f64_i1_kernel_generator_kernel.o [for host]; 3s local
    compile tensorflow/core/kernels/mlir_generated/is_inf_gpu_f16_i1_kernel_generator_kernel.o [for host]; 2s local
    compile tensorflow/core/kernels/mlir_generated/is_inf_gpu_f64_i1_kernel_generator_kernel.o [for host]; 2s local
    compile tensorflow/core/kernels/mlir_generated/is_nan_gpu_f16_i1_kernel_generator_kernel.o [f2021-06-18 15:06:05.299828: I tensorflow/compiler/mlir/tensorflow/utils/dump_mlir_util.cc:210] disabling MLIR crash reproducer, set env var `MLIR_CRASH_REPRODUCER_DIRECTORY` to enable.
0x556475d2e878: i1 = FP_CLASS 0x5564779f2e08, Constant:i32<504>TensorFlow crashed, please file a bug on https://github.com/tensorflow/tensorflow/issues with the trace below.
Stack dump:
0.	Program arguments: bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel --unroll_factors=4 --tile_sizes=256 --arch=gfx701,gfx702,gfx803,gfx900,gfx904,gfx906,gfx908 --input=bazel-out/host/bin/tensorflow/core/kernels/mlir_generated/is_finite_gpu_f16_i1.mlir --output=bazel-out/host/bin/tensorflow/core/kernels/mlir_generated/is_finite_gpu_f16_i1_kernel_generator_kernel.o --enable_ftz=False --cpu_codegen=False
1.	2.	Running pass 'CallGraph Pass Manager' on module 'acme'.
3.	Running pass 'AMDGPU DAG->DAG Pattern Instruction Selection' on function '@IsFinite_GPU_DT_HALF_DT_BOOL_kernel'
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x408d943)[0x556473344943]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x408bb0d)[0x556473342b0d]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x408bc94)[0x556473342c94]
/usr/lib/libpthread.so.0(+0x13870)[0x7f9763e9a870]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x2b070e8)[0x556471dbe0e8]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x18acc23)[0x556470b63c23]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x2a9adf2)[0x556471d51df2]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x2b6f3b6)[0x556471e263b6]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x2bb88c6)[0x556471e6f8c6]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x2b6fa1e)[0x556471e26a1e]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x2b6fb98)[0x556471e26b98]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x2a80a73)[0x556471d37a73]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x2a837e0)[0x556471d3a7e0]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x2a856a6)[0x556471d3c6a6]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x2e0f83f)[0x5564720c683f]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x3f03645)[0x5564731ba645]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x3bc50e7)[0x556472e7c0e7]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x3f030a1)[0x5564731ba0a1]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x169de1d)[0x556470954e1d]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x16a2bef)[0x556470959bef]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0xbe3199)[0x55646fe9a199]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x361381d)[0x5564728ca81d]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x361394a)[0x5564728ca94a]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x361427b)[0x5564728cb27b]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x3612b6f)[0x5564728c9b6f]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x36133ac)[0x5564728ca3ac]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x361394a)[0x5564728ca94a]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x3615c06)[0x5564728ccc06]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x7f78dd)[0x55646faae8dd]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x6b5eb8)[0x55646f96ceb8]
/usr/lib/libc.so.6(__libc_start_main+0xd5)[0x7f9763348b25]
bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x7f060e)[0x55646faa760e]
[20,437 / 21,317] 11 actions running
    compile tensorflow/core/kernels/mlir_generated/is_finite_gpu_f64_i1_kernel_generator_kernel.o [for host]; 3s local
    compile tensorflow/core/kernels/mlir_generated/is_inf_gpu_f16_i1_kernel_generator_kernel.o [for host]; 2s local
    compile tensorflow/core/kernels/mlir_generated/is_inf_gpu_f64_i1_kernel_generator_kernel.o [for host]; 2s local
    compile tensorflow/core/kernels/mlir_generated/is_nan_gpu_f16_i1_kernel_generator_kernel.o [fERROR: /tmp/trizen-mario/tensorflow-rocm/src/tensorflow-2.5.0-rocm/tensorflow/tools/pip_package/BUILD:284:10 Middleman _middlemen/tensorflow_Stools_Spip_Upackage_Sbuild_Upip_Upackage-runfiles failed: (Segmentation fault): tf_to_kernel failed: error executing command bazel-out/host/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel '--unroll_factors=4' '--tile_sizes=256' '--arch=gfx701,gfx702,gfx803,gfx900,gfx904,gfx906,gfx908' ... (remaining 4 argument(s) skipped)
INFO: Elapsed time: 11598.345s, Critical Path: 268.21s
INFO: 20448 processes: 1439 internal, 19009 local.

I've also been seeing the same error while building TF 2.5 with CUDA 10.2 on Linux ppc64le containers. On baremetal, the build works just fine. Could someone please help us on this?

Has anyone got any fix for this issue?

@chsigg Could you please help reassign to the right person? Thank you!

In one of the issues, I found that passing --define=tensorflow_enable_mlir_generated_gpu_kernels=0 in the bazel invocation command fixes the above problem. For ROCM, it should be set to 0. For cuda builds it is true by default.

Maybe @frgossen would be able to help?

The tool that fails here is the kernel generator tools/kernel_gen/tf_to_kernel, which creates the new MLIR-generated kernels. With --define=tensorflow_enable_mlir_generated_gpu_kernels=0 you basically disable this path and fall back to the old Eigen kernels. This is probably not what you want to do long term but may be a temporary fix.
I am trying to reproduce this now to find out more.

@deven-amd
Deven, could you maybe help here?
In the ROCM RBE build, this seems to work fine.

builds are working fine on our end too.
I suspect the error maybe because the build is trying to specify some gfx archs that are old / not supported
From the logfile snippet pasted above, we see that the tool is being used to generated code for the following AMDGPU archs
--arch=gfx701,gfx702,gfx803,gfx900,gfx904,gfx906,gfx908
Can we trim this list down to just gfx900, gfx906, gfx908 (i.e. the list of AMDGPU arch we currently/official support for TF) and check if the error is resolved.

@frgossen Do you mind further elaboration on what's the potential impact of using this workaround(--define=tensorflow_enable_mlir_generated_gpu_kernels=0)? Does it hurt performance? Or will some TF models fail to run?

--define=tensorflow_enable_mlir_generated_gpu_kernels=0 disables the new MLIR-generated kernels. This concerns the kernels that you use in TF eager mode. Instead, TF will fall back to use the old Eigen-based kernels. I would expect this to hurt performance and you may have fewer kernels and data types, i.e. type coverage that we recently extended will not be available to you. Depending on the models, it is in principle possible that some would not run.

@frgossen Thank you - that helps a lot.
Do you happen to know if they have changed the flag name? I tried the workaround but same errors:
ERROR: /home/yay/tensorflow-rocm/src/tensorflow-2.6.2-opt-rocm/tensorflow/core/kernels/mlir_generated/BUILD:1123:23: compile tensorflow/core/kernels/mlir_generated/is_inf_gpu_f16_i1_kernel[4/1088]
or_kernel.o failed (Segmentation fault): tf_to_kernel failed: error executing command bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel '--unroll_factors=4' '--tile_sizes
=256' '--max-supported-rank=5' '--arch=gfx701,gfx702,gfx803,gfx900,gfx904,gfx906,gfx908' ... (remaining 4 argument(s) skipped)
2021-11-23 17:47:48.283929: I tensorflow/compiler/mlir/tensorflow/utils/dump_mlir_util.cc:210] disabling MLIR crash reproducer, set env var `MLIR_CRASH_REPRODUCER_DIRECTORY` to enable.
0x562fb32e1a00: i1 = FP_CLASS 0x562fb3243c50, Constant:i32<516>TensorFlow crashed, please file a bug on https://github.com/tensorflow/tensorflow/issues with the trace below.
Stack dump:
0.      Program arguments: bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel --unroll_factors=4 --tile_sizes=256 --max-supported-rank=5 --arch=gfx701,gfx702,gfx803,gfx900
,gfx904,gfx906,gfx908 --input=bazel-out/k8-opt/bin/tensorflow/core/kernels/mlir_generated/is_inf_gpu_f16_i1.mlir --output=bazel-out/k8-opt/bin/tensorflow/core/kernels/mlir_generated/is_inf_gpu_f16
_i1_kernel_generator_kernel.o --enable_ftz=False --cpu_codegen=False
1.      Running pass 'CallGraph Pass Manager' on module 'acme'.
2.      Running pass 'AMDGPU DAG->DAG Pattern Instruction Selection' on function '@IsInf_GPU_DT_HALF_DT_BOOL_kernel'
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x4684c68)[0x562fb00d4c68]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x4682ffd)[0x562fb00d2ffd]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x4683184)[0x562fb00d3184]
/usr/lib/libpthread.so.0(+0x13870)[0x7f97c7208870]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x355ebd8)[0x562faefaebd8]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x1f361dc)[0x562fad9861dc]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x34f1ee2)[0x562faef41ee2]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x35c9d56)[0x562faf019d56]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x3605f55)[0x562faf055f55]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x35ca3be)[0x562faf01a3be]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x35ca538)[0x562faf01a538]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x34d8a33)[0x562faef28a33]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x34db6d3)[0x562faef2b6d3]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x34dd62f)[0x562faef2d62f]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x386edf7)[0x562faf2bedf7]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x44ecb9c)[0x562faff3cb9c]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x41b8d5f)[0x562fafc08d5f]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x44ec5d7)[0x562faff3c5d7]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x1a04ebd)[0x562fad454ebd]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x1a09ee6)[0x562fad459ee6]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0xeb0d19)[0x562fac900d19]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x3022785)[0x562faea72785]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x302290a)[0x562faea7290a]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x30231f5)[0x562faea731f5]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x30216d3)[0x562faea716d3]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x30222b0)[0x562faea722b0]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x302290a)[0x562faea7290a]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x3023855)[0x562faea73855]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0xad66e0)[0x562fac5266e0]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0x999141)[0x562fac3e9141]
/usr/lib/libc.so.6(__libc_start_main+0xd5)[0x7f97c5dc7b25]
bazel-out/k8-opt/bin/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel(+0xace7ce)[0x562fac51e7ce]

Here is the bezel argument I passed to it:
INFO: Options provided by the client:
  Inherited 'common' options: --isatty=1 --terminal_columns=196
INFO: Reading rc options for 'build' from /home/yay/tensorflow-rocm/src/tensorflow-2.6.2-opt-rocm/.bazelrc:
  Inherited 'common' options: --experimental_repo_remote_exec
INFO: Reading rc options for 'build' from /home/yay/tensorflow-rocm/src/tensorflow-2.6.2-opt-rocm/.bazelrc:
  'build' options: --define framework_shared_object=true --java_toolchain=@tf_toolchains//toolchains/java:tf_java_toolchain --host_java_toolchain=@tf_toolchains//toolchains/java:tf_java_toolchain
--define=use_fast_cpp_protos=true --define=allow_oversize_protos=true --spawn_strategy=standalone -c opt --announce_rc --define=grpc_no_ares=true --noincompatible_remove_legacy_whole_archive --ena
ble_platform_specific_config --define=with_xla_support=true --config=short_logs --config=v2 --define=no_aws_support=true --define=no_hdfs_support=true
INFO: Reading rc options for 'build' from /home/yay/tensorflow-rocm/src/tensorflow-2.6.2-opt-rocm/.tf_configure.bazelrc:
  'build' options: --action_env PYTHON_BIN_PATH=/usr/bin/python --action_env PYTHON_LIB_PATH=/usr/lib/python3.9/site-packages --python_path=/usr/bin/python --define=with_xla_support=true --config=
rocm --action_env TF_SYSTEM_LIBS=boringssl,curl,cython,gif,icu,libjpeg_turbo,lmdb,nasm,png,pybind11,zlib
INFO: Found applicable config definition build:short_logs in file /home/yay/tensorflow-rocm/src/tensorflow-2.6.2-opt-rocm/.bazelrc: --output_filter=DONT_MATCH_ANYTHING
INFO: Found applicable config definition build:v2 in file /home/yay/tensorflow-rocm/src/tensorflow-2.6.2-opt-rocm/.bazelrc: --define=tf_api_version=2 --action_env=TF2_BEHAVIOR=1
INFO: Found applicable config definition build:rocm in file /home/yay/tensorflow-rocm/src/tensorflow-2.6.2-opt-rocm/.bazelrc: --crosstool_top=@local_config_rocm//crosstool:toolchain --define=using
_rocm=true --define=using_rocm_hipcc=true --repo_env TF_NEED_ROCM=1
INFO: Found applicable config definition build:avx2_linux in file /home/yay/tensorflow-rocm/src/tensorflow-2.6.2-opt-rocm/.bazelrc: --copt=-mavx2
INFO: Found applicable config definition build:mkl in file /home/yay/tensorflow-rocm/src/tensorflow-2.6.2-opt-rocm/.bazelrc: --define=build_with_mkl=true --define=enable_mkl=true --define=tensorfl
ow_mkldnn_contraction_kernel=0 --define=build_with_openmp=true -c opt
INFO: Found applicable config definition build:linux in file /home/yay/tensorflow-rocm/src/tensorflow-2.6.2-opt-rocm/.bazelrc: --copt=-w --host_copt=-w --define=PREFIX=/usr --define=LIBDIR=$(PREFI
X)/lib --define=INCLUDEDIR=$(PREFIX)/include --define=PROTOBUF_INCLUDE_PATH=$(PREFIX)/include --cxxopt=-std=c++14 --host_cxxopt=-std=c++14 --config=dynamic_kernels --distinct_host_configuration=fa
lse
INFO: Found applicable config definition build:dynamic_kernels in file /home/yay/tensorflow-rocm/src/tensorflow-2.6.2-opt-rocm/.bazelrc: --define=dynamic_loaded_kernels=true --copt=-DAUTOLOAD_DYNA
MIC_KERNELS

Strangely it doesn't contain the workaround flag I passed to it:
riaqn@bedroom ~> ps -aux|grep -i mlir_
riaqn     622225  0.0  0.0 342936  6808 ?        Sl+  07:45   0:00 bazel build --config=avx2_linux --config=mkl -c opt --define=tensorflow_enable_mlir_generated_gpu_kernels=0 //tensorflow:libtensorflow.so //tensorflow:libtensorflow_cc.so //tensorflow:install_headers //tensorflow/tools/pip_package:build_pip_package

Just checked, and at this point mlir_generated_gpu_kernels_enabled seems to be an alias for gpu_enabled (see https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/mlir_generated/build_defs.bzl#L116).
Either way, disabling MLIR is not very sustainable. I suggest to follow Deven's advice and try reduce the GPU architectures.

@frgossen Thank you for the reply. I limited to gfx803 (the GPU I'm using) and it builds successfully.

@supermar1010,
Is this still an issue for you? If the issue is resolved could you move this to closed status?. Thank you!


bump engine API to 1.26

see https://github.com/docker/docker/pull/30806 for details

Thanks, @vieux -- this LGTM. When the API ships, ping us and we'll make sure this gets pushed. :)


Can you add REST API documentation to manage roles

I am trying to figure out a way to do this from the REST

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

ID: f5624f3e-5fbf-6f0f-93cf-a4d5aa93ccf8
Version Independent ID: 9ca6d22b-e684-4e65-cab3-c272189a3ddc
Content: Add or change Azure admin subscription roles
Content Source: articles/billing/billing-add-change-azure-subscription-administrator.md
Service: billing
Product: unspecified
GitHub Login: @genlin
Microsoft Alias: genli

@masters3d Thanks for bringing this to our attention. Your feedback has been shared with the content owner for further review.

@masters3d  You can find the guidance in Manage Role-Based Access Control with the REST API. Hope this helps.

Cool, is there a reason why these are not linked in the document?

@masters3d Good idea. I will link to this article from "Add or change Azure admin subscription roles".


[FLINK-31426][table] Upgrade the deprecated UniqueConstraint to the n…

What is the purpose of the change
Upgrade the deprecated UniqueConstraint to the new one
Brief change log

Upgrade the deprecated UniqueConstraint to the new one

Verifying this change
This change is already covered by existing tests, such as UniqueConstraintTest.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (yes)
The serializers: (no)
The runtime per-record code paths (performance sensitive): (no )
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: (no)
The S3 file system connector: (no)

Documentation

Does this pull request introduce a new feature? (no)

can you spare some precious time to review? Thanks very much @Aitozi

@clownxc Thanks for your work. I just left one minor comments.
BTW, the CI failed.

Thank you so much for review. The reason for the CI failure is “You have 1 Checkstyle violation”. I will  modify the code style to comply with Flink‘s rewuirements

@flinkbot run azure

@clownxc Thanks for contribution. I'll have a look when i'm free


Added guide of centralized documentation in tinkerbell

Signed-off-by: cbkhare<EMAIL_ADDRESS>Description
This is the PR for documentation of Tinkerbell Centralized logging. This is with reference to following PRs.
boots PR: https://github.com/tinkerbell/boots/pull/73
Tink PR: https://github.com/tinkerbell/tink/pull/267
OSIE Pr: https://github.com/tinkerbell/osie/pull/104
RFD: https://github.com/tinkerbell/proposals/pull/16

Let's call this document something like: "Logging in Tinkerbell."
The first section should explain more clearly the relation between the service tinkerbell is made of and docker. Running boots, tink-server inside a container is only one way to do it. Let's be clear about it.
Do not mention the action log at the beginning but only in their own section, because I think merging services and actions together creates confusions. We have to keep separated system needs (what is required to run tinkerbell) and what tinkerbell does.
In second, when those 2 sections (first about services, second about actions) are well described let's have a third one when you mention that logs can be centralized configuring docker logging driver.
At this point I would like to close this document as it is. Without giving a concrete implementation.
You can create a new document called: "Centralize logs with syslog".
This document will be attached as subpage in the Vagrant Setup menu, and you should describe how to setup syslog server in the vagrant provisioner and how to centralize and read logs from it.
Does it sound clear?
Thanks

I don't think this work reference the PRs you linked btw.

Let's call this document something like: "Logging in Tinkerbell."
The first section should explain more clearly the relation between the service Tinkerbell is made of and docker. Running boots, tink-server inside a container is only one way to do it. Let's be clear about it.
Do not mention the action log at the beginning but only in their own section, because I think merging services and actions together create confusions. We have to keep separated system needs (what is required to run Tinkerbell) and what Tinkerbell does.
In second, when those 2 sections (first about services, second about actions) are well described let's have a third one when you mention that logs can be centralized configuring docker logging driver.
At this point, I would like to close this document as it is. Without a concrete implementation.
You can create a new document called: "Centralize logs with syslog".
This document will be attached as a subpage in the Vagrant Setup menu, and you should describe how to setup a Syslog server in the vagrant provisioner and how to centralize and read logs from it.
Does it sound clear?
Thanks

@gianarb This implementation is independent of the type of deployment. As of now, I have completed the testing with Tinkerbell and also completed plug and play experiment. Next, I will try it with terraform setup and also with sandbox (if it's ready).
Moreover, I have a preference to merge it only after the testing with all form of deployment is completed.

@mmlb I have addressed your comments on this https://github.com/tinkerbell/proposals/pull/16 and have added them in this PR.
@gianarb I have also addressed your comments.
Currently, I am doing some testing with rsyslog and fluent. I will push the suggested changes along with details of Plug and Play model.
I am not sure, maybe can decline this PR https://github.com/tinkerbell/proposals/pull/16. Or I think, having this file can be helpful to understand RFD 003. We can update RFD PR after this PR is merged.

On my PRs for the feature of Centralised logging i have added the support where user can use the Tinkerbell with existing logging system i.e with docker logs  . And, at the same time, if user wishes, he/she can also use the centralized logging system as per the choice of his/her log driver by updating some set of env variables. Also as a part of the implementation, we will give the base platform and configuration to run centralized logging with rsyslog.
I will update the doc https://github.com/tinkerbell/tinkerbell.org/pull/135 in some time, but PR for tink/boots/osie is ready.


Get up and running

Properly implement JWT. Also migrated to new community maintained version of project.

Closes #1


Ci/Cd?

I see you are using hydra. I'm yet to set it up myself, but as far as I can understand it let's you build nix stuff automatically. Does your setup have a way to automatically deploy your website and other things? (or do you manually call the deploy script whenever you feel like it?)

I do have CD! It's a pull-based deployment, that means the machines auto-upgrade themselves from hydra.
I basically have my hydra run a script that pushes release branches corresponding to each host's name (e.g. release-atlas).
I then point system.autoUpgrade.flake to the correct branch, for example:
{ config, ... }: {
  system.autoUpgrade = {
    enable = true;
    flake = "github:you/nix-config/release-${config.networking.hostName}";
  };
}

And there you have it, pull based deployment. I think someone should add something like system.autoUpgrade.hydraJob though, would make things a lot easier.


Market1501 use fixed query images

Market 1501 evaluation protocol uses fixed 3368 high-quality images as query. It is because we can easily draw high quality bounding box for query pedestrian.
In this sense, reis.datasets.market1501 did not follow the official evaluation protocol.
def register(subdir, pattern=re.compile(r'([-\d]+)_c(\d)')):
    fpaths = sorted(glob(osp.join(exdir, subdir, '*.jpg')))
    pids = set()
    for fpath in fpaths:
        fname = osp.basename(fpath)
        pid, cam = map(int, pattern.search(fname).groups())
        if pid == -1: continue  # junk images are just ignored
        assert 0 <= pid <= 1501  # pid == 0 means background
        assert 1 <= cam <= 6
        cam -= 1
        pids.add(pid)
        fname = ('{:08d}_{:02d}_{:04d}.jpg'
                 .format(pid, cam, len(identities[pid][cam])))
        identities[pid][cam].append(fname)
        shutil.copy(fpath, osp.join(images_dir, fname))
    return pids

trainval_pids = register('bounding_box_train')
gallery_pids = register('bounding_box_test')
query_pids = register('query')

This may explain why the demo code python examples/triplet_loss.py -d market1501  only has  67.9 mAP much lower than soa. For an visual case,

Please see issue #16. The code in issue #16 follows the offical splitting. And the author has explained the reason .

Indeed, there are little difference between splitting by query person IDs and splitting by query images.
Meanwhile, I am sorry for my mistake, the mAP of original paper is 69.14 using triplet+batch, and 81.07 after rerank. Open-reid has reached excellent 67.9!

The paper used ten crops for test-time augmentation while open-reid not. If applied test-time augmentation in open-reid, the results will be higher.

@zydou Thank you very much for the explanation!
@luzai Thank you for pointing out the issue. Will try my best to fix it.


Generic driver: docker-machine create stalls when using SSH ProxyCommand

I have this setting in my ~/.ssh/config for accessing a remote site:
Host <remote-hostname>
  ProxyCommand corkscrew <proxy> 3128 %h %p ~/.ssh/.corkscrew-auth

And when I run docker-machine -D create remote --driver generic --generic-ip-address <remote-hostname> ..., it gets stuck thusly:
Host does not exist: "remote"
Docker Machine Version:  0.6.0, build e27fb87
Found binary path at /usr/local/bin/docker-machine
Launching plugin server for driver generic
Plugin server listening at address <IP_ADDRESS>:59640
() Calling .GetVersion
Using API Version  1
() Calling .SetConfigRaw
() Calling .GetMachineName
(flag-lookup) Calling .GetMachineName
(flag-lookup) Calling .DriverName
(flag-lookup) Calling .GetCreateFlags
Found binary path at /usr/local/bin/docker-machine
Launching plugin server for driver generic
Plugin server listening at address <IP_ADDRESS>:59644
() Calling .GetVersion
Using API Version  1
() Calling .SetConfigRaw
() Calling .GetMachineName
(remote) Calling .GetMachineName
(remote) Calling .DriverName
(remote) Calling .GetCreateFlags
(remote) Calling .SetConfigFromFlags
Running pre-create checks...
(remote) Calling .PreCreateCheck
(remote) Calling .GetConfigRaw
Creating machine...
(remote) Calling .Create
(remote) Calling .GetConfigRaw
(remote) No SSH key specified. Connecting to this machine now and in the future will require the ssh agent to contain the appropriate key.
(remote) DBG | IP: remote-hostname
(remote) Calling .DriverName
(remote) Calling .DriverName
Waiting for machine to be running, this may take a few minutes...
(remote) Calling .GetState
(remote) Calling .GetState
(remote) Calling .GetState
(remote) Calling .GetState
(remote) Calling .GetState
<snip>
(remote) Calling .GetState
(remote) Calling .GetState
Error creating machine: Error waiting for machine to be running: Maximum number of retries (60) exceeded
Opting out of crash reporting.

Looking at .GetState for the generic driver, it appears to be trying to connect directly to the SSH port, which doesn't respect proxy settings.
I'm not sure if there are other things that would prevent this configuration from working, but this is my current roadblock.

Machine ignores ~/.ssh/config.  This is deliberate, as existing users SSH configs were causing all sorts of mysterious and unintended side effects in Machineland.
I'd be happy to consider proposals or PRs to specify an SSH config file to use, though.  Seems perfectly fine to make configurable for those who know what they're doing.


Reduce() and Map() seems to sometimes have a 2x performance hit

See this version, using 0.4.0-dev:
https://deploy-preview-1011--squiggle-documentation.netlify.app/playground/#code=eNrtV02P0zAQ%2FSujSGgTEbLpSmWXSnACTogDReJAIZomTmKI7eCPbau2%2F51xutqtSvZLXJ1DFOU9v%2Bd544NnG5lWreZOCNSbaFZjZ1g6%2FPtQcat0NLPa0R8uueXYzf843jQdm1vNZRPNooqbUjlpixpLohcGa2Y3K6V%2FFwzLttgw1MWS1UqzAhsOb2GOoicBZrNaK%2FGeGxuThSzRsi%2B8aW2cZ6%2FBKsizN9MUJkmykOfn8HyfPLsCWlijsUwDASDVaiEHtV6rJS67DdiWG6BqXVfJM3vrAlSmZWAUtAyvORH9erLoOGl5LzPoEKFj9sxAif1BCy0Iyko4AZfZ9MXA4hnLwG%2BVyqpwc8oBNOAMq13nvwZe5Xy8UPpcWssFW8jbAI4q7zW7oxSk%2BbR48%2Bkh34vUv04DfkSfll%2BO53q3x49Dj%2BaD0DcSiofEjtqTkNB2IYGe08aydU%2FgM9v989RgXHvFbftPTAL7z%2FH3kW2kT8vkRwrb3XoHAtfxOtknB%2BuRI3vk7rn%2FY5mMdeDBihdyf3P2fzljAavKHzDbMgGvBiWP3du%2FyUXyMoABDGAAAxjAAAYwgAEM4GPgzaX7%2BL59zZEGgJ7u3aY7TE7wica0zPVfVTyhkTfPE9i9A80qV7I49%2FMFlmUKNGQ8ZAX7wS3a%2FwVxu9LL
On the bottom, there's a reduce implementation, and a version right over it that does this manually. If you comment both out, the reduce version takes around twice as long on my machine. ( 4.6s vs. 8.5s )
map() seems similarly slow. See this line, for example:
//List.upTo(1, 10) |> map({|x| discountFactorSafetyWork(12) }) |> List.last

It's very possible that Umur already knows what the problem is, and it's infeasible to fix soon.
Umur: We could make this into other issues or close it depending on what you think.

I just tried map() with some simple arguments and 1M samples. Definitely some slowdowns.
//Testing with 1M samples

a = normal(5,2) |> SampleSet.fromDist
b = normal(5,2) |> SampleSet.fromDist

//SampleSet.mapN([a,b], {|x| sum(x)}) // 46.5s
//SampleSet.map2(a,b, {|a,b| a+b}) // ~1min 15s
//a + b // 17s

This could also help a lot with an integrate() function, which is just a reduce.

another test case:

test_dist = (0.1 to 2) |> SampleSet.fromDist

test_exp1 = exp(test_dist)

test_exp2 = SampleSet.map(test_dist, {|x| exp(x)})

This is basically ~similar in 0.3 and 0.4-dev

When I scroll in the performance profiler on Firefox, this is what I see.
Lots of memory cleanup?

Code:
//Testing with 1M samples

a = normal(5,33) |> SampleSet.fromDist
b = normal(5,2) |> SampleSet.fromDist

//SampleSet.mapN([a,b], {|x| sum(x)}) // 46.5s
SampleSet.mapN([a,b], {|a| sum(a)}) // ~1min 15s
//a + b // 17


Add ability to send_event to a Worfklow's service ongoing task/run.

With current implementation:

User sends event via client.send_event(task_id, session_id, event_def)
EventDefinition contains event_obj_str which is serialized representation of event as well as agent_id
Within the execution of the Workflow, if it encounters a new BlockingEvent it waits for its associated unblocking event (whose class is stored in attribute BlockingEvent.unblocking_event_type

The underlying events buffer is managed via an asyncio Queue

coverage: 65.453% (-0.05%) from 65.5%
when pulling 80106c30235dbc985dba749602909e6684b7f754 on nerdai/add-send_event-to-sessionclient
into 719d62f540b6bce9d84af739aca1865b93631509 on main.


Add ability to alter module queries.

Is your feature request related to a problem? Please describe.
Most Druxt modules execute a Fetch query against the backend to get required data, but only two of the modules provide any ability to alter the query; DruxtEntity & DruxtViews.
Describe the solution you'd like
Make a DruxtModule based solution for altering the queries, with the ability to filter the returned fields, add includes, etc.
Describe alternatives you've considered
N/A
Additional context

https://www.npmjs.com/package/drupal-jsonapi-params
https://github.com/druxt/druxt-entity/blob/develop/src/components/DruxtEntity.vue#L184-L196
https://github.com/druxt/druxt-views/blob/develop/src/components/DruxtView.vue#L451-L491

Example option for adding includes:
<script>
export default {
  druxt: {
    query: {
      includes: ['RELATIONSHIP_FIELD']
    }
  }
}
</script>


failed in windows 8

I asked Fede to test JATOS in windows 8 (you met him in Argentina). He has windows 8 and is a programmer.
He said:
-He downloaded jatos (version 1.1.8)
-Unizipped it (ok)
-Checked that production.conf was in the conf directory (ok)
-Double-clicked on loader.bat. Nothing happened. No console opened. He checked the loader.bat file and found nothing weird.
-He typed loader.bat start in the wondows console. He got the error mesage: Error: Could not find or load main class C:\proyectos\jatos-1.1.8-beta\lib\aopalliance.aopalliance-1.0.jar
Although apparently the file IS in the lib folder
-then he checked the bat file, but found nothing weird. (he suggests we use two different bat files, one for start, one for stop.  i don't know whether this is relevant).
-The localhost:9000 doesn't open JATOS in the browser window
-he's got jdk 7 installed. just in case this affects anything..
I wonder where we could get a windows 8 computer to test this...

Weird. I think I have a Win 8 license. I'll install one in a VM on my
Thinkpad tomorrow.
On Thu, Apr 23, 2015 at 3:27 PM, elisafilevich<EMAIL_ADDRESS>wrote:

I asked Fede to test JATOS in windows 8 (you met him in Argentina). He has
windows 8 and is a programmer.
He said:
-He downloaded jatos (version 1.1.8)
-Unizipped it (ok)
-Checked that production.conf was in the conf directory (ok)
-Double-clicked on loader.bat. Nothing happened. No console opened. He
checked the loader.bat file and found nothing weird.
-He typed loader.bat start in the wondows console. He got the error
mesage: Error: Could not find or load main class
C:\proyectos\jatos-1.1.8-beta\lib\aopalliance.aopalliance-1.0.jar
Although apparently the file IS in the lib folder
-then he checked the bat file, but found nothing weird. (he suggests we
use two different bat files, one for start, one for stop. i don't know
whether this is relevant).
-The browser window doesn't open.
-he's got jdk 7 installed. just in case this affects anything..
I wonder where we could get a windows 8 computer to test this...
—
Reply to this email directly or view it on GitHub
https://github.com/JATOS/JATOS/issues/80.

It's due to a bug in a plugin of Play: https://github.com/playframework/playframework/issues/2184#issuecomment-96451299
and
https://github.com/playframework/playframework/issues/3473
There is an easy workaround: Each time before publish a release, unzip and zip the release on a Linux/Unix system. :)


Consider integrating with instructor package

https://github.com/jxnl/instructor
instructor offers detailed validation and easier creation of JSON schemas for function calling, based on pydantic.
It's actually already compatible:
from instructor import OpenAISchema
from pydantic import BaseModel

class EntityLabel(Enum):
    ORG = "ORG"
    PERSON = "PERSON"
    MONEY = "MONEY"
    GPE = "GPE"

class Entity(BaseModel):
    text: str = Field(description="The entity extracted from the text")
    label: EntityLabel = Field(description="The type of entity extracted from the text")

class NamedEntities(OpenAISchema):
    entities: List[Entity] = Field(description="The entities extracted from the text")

print(NamedEntities.openai_schema)

Output:
{
    "name": "NamedEntities",
    "description": "Correctly extracted `NamedEntities` with all the required parameters with correct types",
    "parameters": {
        "$defs": {
            "Entity": {
                "properties": {
                    "text": {
                        "description": "The entity extracted from the text",
                        "type": "string"
                    },
                    "label": {
                        "allOf": [{
                            "$ref": "#/$defs/EntityLabel"
                        }],
                        "description": "The type of entity extracted from the text"
                    }
                },
                "required": ["text", "label"],
                "type": "object"
            },
            "EntityLabel": {
                "enum": ["ORG", "PERSON", "MONEY", "GPE"],
                "type": "string"
            }
        },
        "properties": {
            "entities": {
                "description": "The entities extracted from the text",
                "items": {
                    "$ref": "#/$defs/Entity"
                },
                "type": "array"
            }
        },
        "required": ["entities"],
        "type": "object"
    }
}

And this function definition works with texttunnel's chat.build_requests().
I haven't tested output parsing yet.
Building the function definition with Pydantic could feel more familiar to Python programmers, offers validation and IDE autocompletion. We could advertise it as the recommended way to build the function definition. The instructor package also has a cookbook we could link to in the docs.

@phuoviala Would you like to give it a try as well? I'm curious if you find it more or less intuitive than writing the JSON schema directly.

I don't recommend using instructor + texttunnel anymore. Just use instructor directly and implement parallelization using ThreadPoolExecutor. API limits are set so high now that you can stay within them easily by setting max_workers intelligently.


Not able to display a page in production mode

I'm not able to display a page in production mode on a dummy app with this extension
This is my stacktrace :
I, [2015-05-27T14:20:47.074676 #46288]  INFO -- : Started GET "/accueil" for ::1 at 2015-05-27 14:20:47 -0400
I, [2015-05-27T14:20:48.688389 #46288]  INFO -- : Processing by Refinery::PagesController#show as HTML
I, [2015-05-27T14:20:48.688483 #46288]  INFO -- :   Parameters: {"path"=>"accueil", "locale"=>:en}
D, [2015-05-27T14:20:48.710431 #46288] DEBUG -- :   Refinery::Authentication::Devise::User Load (0.4ms)  SELECT  "refinery_authentication_devise_users".* FROM "refinery_authentication_devise_users" WHERE "refinery_authentication_devise_users"."id" = ?  ORDER BY "refinery_authentication_devise_users"."id" ASC LIMIT 1  [["id", 1]]
D, [2015-05-27T14:20:48.740455 #46288] DEBUG -- :   Refinery::Page Load (0.9ms)  SELECT  "refinery_pages".* FROM "refinery_pages" INNER JOIN "refinery_page_translations" ON "refinery_page_translations"."refinery_page_id" = "refinery_pages"."id" WHERE "refinery_pages"."parent_id" IS NULL AND "refinery_page_translations"."locale" = 'en' AND "refinery_page_translations"."slug" = 'accueil'  ORDER BY "refinery_pages"."id" ASC LIMIT 1
D, [2015-05-27T14:20:48.804480 #46288] DEBUG -- :   Refinery::Page::Translation Load (0.4ms)  SELECT "refinery_page_translations".* FROM "refinery_page_translations" WHERE "refinery_page_translations"."refinery_page_id" = ?  [["refinery_page_id", 1]]
D, [2015-05-27T14:20:48.821242 #46288] DEBUG -- :   Refinery::Page Load (0.5ms)  SELECT  "refinery_pages".* FROM "refinery_pages" WHERE ("refinery_pages"."lft" <= 1) AND ("refinery_pages"."rgt" >= 2) AND "refinery_pages"."parent_id" IS NULL  ORDER BY "refinery_pages"."lft" LIMIT 1
D, [2015-05-27T14:20:48.822779 #46288] DEBUG -- :   CACHE (0.0ms)  SELECT "refinery_page_translations".* FROM "refinery_page_translations" WHERE "refinery_page_translations"."refinery_page_id" = ?  [["refinery_page_id", 1]]
I, [2015-05-27T14:20:48.907695 #46288]  INFO -- :   Rendered /Users/bci20/Sites/refinery/refinerycms-authentication-devise/.gems/bundler/gems/refinerycms-c5e7a052c867/core/app/views/refinery/_content_page.html.erb (51.4ms)
I, [2015-05-27T14:20:48.907833 #46288]  INFO -- :   Rendered /Users/bci20/Sites/refinery/refinerycms-authentication-devise/.gems/bundler/gems/refinerycms-c5e7a052c867/pages/app/views/refinery/pages/show.html.erb within layouts/application (61.1ms)
I, [2015-05-27T14:20:48.908119 #46288]  INFO -- : Completed 500 Internal Server Error in 219ms (ActiveRecord: 3.9ms)
F, [2015-05-27T14:20:48.910431 #46288] FATAL -- :
ActionView::Template::Error (undefined local variable or method `page_title' for #<#<Class:0x007fb313520fa8>:0x007fb313520238>):
    1: <%= render_content_page(@page, {
    2:       :hide_sections => local_assigns[:hide_sections],
    3:       :can_use_fallback => !local_assigns[:show_empty_sections] && !local_assigns[:remove_automatic_sections]
    4:     }) %>
  /Users/bci20/Sites/refinery/refinerycms-authentication-devise/.gems/bundler/gems/refinerycms-c5e7a052c867/pages/app/helpers/refinery/pages/content_pages_helper.rb:9:in `render_content_page'
  /Users/bci20/Sites/refinery/refinerycms-authentication-devise/.gems/bundler/gems/refinerycms-c5e7a052c867/core/app/views/refinery/_content_page.html.erb:1:in `___sers_bci____ites_refinery_refinerycms_authentication_devise__gems_bundler_gems_refinerycms_c_e_a___c____core_app_views_refinery__content_page_html_erb___2848640863599038591_70203549900320'
  actionview (4.2.1) lib/action_view/template.rb:145:in `block in render'
  activesupport (4.2.1) lib/active_support/notifications.rb:166:in `instrument'
  actionview (4.2.1) lib/action_view/template.rb:333:in `instrument'
  actionview (4.2.1) lib/action_view/template.rb:143:in `render'
  actionview (4.2.1) lib/action_view/renderer/partial_renderer.rb:339:in `render_partial'
  actionview (4.2.1) lib/action_view/renderer/partial_renderer.rb:310:in `block in render'
  actionview (4.2.1) lib/action_view/renderer/abstract_renderer.rb:39:in `block in instrument'
  activesupport (4.2.1) lib/active_support/notifications.rb:164:in `block in instrument'
  activesupport (4.2.1) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
  activesupport (4.2.1) lib/active_support/notifications.rb:164:in `instrument'
  actionview (4.2.1) lib/action_view/renderer/abstract_renderer.rb:39:in `instrument'
  actionview (4.2.1) lib/action_view/renderer/partial_renderer.rb:309:in `render'
  actionview (4.2.1) lib/action_view/renderer/renderer.rb:47:in `render_partial'
  actionview (4.2.1) lib/action_view/helpers/rendering_helper.rb:35:in `render'
  /Users/bci20/Sites/refinery/refinerycms-authentication-devise/.gems/bundler/gems/refinerycms-c5e7a052c867/pages/app/views/refinery/pages/show.html.erb:1:in `___sers_bci____ites_refinery_refinerycms_authentication_devise__gems_bundler_gems_refinerycms_c_e_a___c____pages_app_views_refinery_pages_show_html_erb__274115027582767637_70203547272900'
  actionview (4.2.1) lib/action_view/template.rb:145:in `block in render'
  activesupport (4.2.1) lib/active_support/notifications.rb:166:in `instrument'
  actionview (4.2.1) lib/action_view/template.rb:333:in `instrument'
  actionview (4.2.1) lib/action_view/template.rb:143:in `render'
  actionview (4.2.1) lib/action_view/renderer/template_renderer.rb:54:in `block (2 levels) in render_template'
  actionview (4.2.1) lib/action_view/renderer/abstract_renderer.rb:39:in `block in instrument'
  activesupport (4.2.1) lib/active_support/notifications.rb:164:in `block in instrument'
  activesupport (4.2.1) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
  activesupport (4.2.1) lib/active_support/notifications.rb:164:in `instrument'
  actionview (4.2.1) lib/action_view/renderer/abstract_renderer.rb:39:in `instrument'
  actionview (4.2.1) lib/action_view/renderer/template_renderer.rb:53:in `block in render_template'
  actionview (4.2.1) lib/action_view/renderer/template_renderer.rb:61:in `render_with_layout'
  actionview (4.2.1) lib/action_view/renderer/template_renderer.rb:52:in `render_template'
  actionview (4.2.1) lib/action_view/renderer/template_renderer.rb:14:in `render'
  actionview (4.2.1) lib/action_view/renderer/renderer.rb:42:in `render_template'
  actionview (4.2.1) lib/action_view/renderer/renderer.rb:23:in `render'
  actionview (4.2.1) lib/action_view/rendering.rb:100:in `_render_template'
  actionpack (4.2.1) lib/action_controller/metal/streaming.rb:217:in `_render_template'
  actionview (4.2.1) lib/action_view/rendering.rb:83:in `render_to_body'
  actionpack (4.2.1) lib/action_controller/metal/rendering.rb:32:in `render_to_body'
  actionpack (4.2.1) lib/action_controller/metal/renderers.rb:37:in `render_to_body'
  actionpack (4.2.1) lib/abstract_controller/rendering.rb:25:in `render'
  actionpack (4.2.1) lib/action_controller/metal/rendering.rb:16:in `render'
  actionpack (4.2.1) lib/action_controller/metal/instrumentation.rb:44:in `block (2 levels) in render'
  activesupport (4.2.1) lib/active_support/core_ext/benchmark.rb:12:in `block in ms'
  /Users/bci20/.rbenv/versions/2.2.0/lib/ruby/2.2.0/benchmark.rb:303:in `realtime'
  activesupport (4.2.1) lib/active_support/core_ext/benchmark.rb:12:in `ms'
  actionpack (4.2.1) lib/action_controller/metal/instrumentation.rb:44:in `block in render'
  actionpack (4.2.1) lib/action_controller/metal/instrumentation.rb:87:in `cleanup_view_runtime'
  activerecord (4.2.1) lib/active_record/railties/controller_runtime.rb:25:in `cleanup_view_runtime'
  actionpack (4.2.1) lib/action_controller/metal/instrumentation.rb:43:in `render'
  /Users/bci20/Sites/refinery/refinerycms-authentication-devise/.gems/bundler/gems/refinerycms-c5e7a052c867/pages/lib/refinery/pages/instance_methods.rb:33:in `render_with_presenters'
  /Users/bci20/Sites/refinery/refinerycms-authentication-devise/.gems/bundler/gems/refinerycms-c5e7a052c867/pages/lib/refinery/pages/render_options.rb:20:in `render_with_templates?'
  /Users/bci20/Sites/refinery/refinerycms-authentication-devise/.gems/bundler/gems/refinerycms-c5e7a052c867/pages/app/controllers/refinery/pages_controller.rb:35:in `show'
  actionpack (4.2.1) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
  actionpack (4.2.1) lib/abstract_controller/base.rb:198:in `process_action'
  actionpack (4.2.1) lib/action_controller/metal/rendering.rb:10:in `process_action'
  actionpack (4.2.1) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
  activesupport (4.2.1) lib/active_support/callbacks.rb:117:in `call'
  activesupport (4.2.1) lib/active_support/callbacks.rb:117:in `call'
  activesupport (4.2.1) lib/active_support/callbacks.rb:555:in `block (2 levels) in compile'
  activesupport (4.2.1) lib/active_support/callbacks.rb:505:in `call'
  activesupport (4.2.1) lib/active_support/callbacks.rb:505:in `call'
  activesupport (4.2.1) lib/active_support/callbacks.rb:92:in `_run_callbacks'
  activesupport (4.2.1) lib/active_support/callbacks.rb:776:in `_run_process_action_callbacks'
  activesupport (4.2.1) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (4.2.1) lib/abstract_controller/callbacks.rb:19:in `process_action'
  actionpack (4.2.1) lib/action_controller/metal/rescue.rb:29:in `process_action'
  actionpack (4.2.1) lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'
  activesupport (4.2.1) lib/active_support/notifications.rb:164:in `block in instrument'
  activesupport (4.2.1) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
  activesupport (4.2.1) lib/active_support/notifications.rb:164:in `instrument'
  actionpack (4.2.1) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
  actionpack (4.2.1) lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
  activerecord (4.2.1) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
  actionpack (4.2.1) lib/abstract_controller/base.rb:137:in `process'
  actionview (4.2.1) lib/action_view/rendering.rb:30:in `process'
  actionpack (4.2.1) lib/action_controller/metal.rb:196:in `dispatch'
  actionpack (4.2.1) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
  actionpack (4.2.1) lib/action_controller/metal.rb:237:in `block in action'
  actionpack (4.2.1) lib/action_dispatch/routing/route_set.rb:74:in `call'
  actionpack (4.2.1) lib/action_dispatch/routing/route_set.rb:74:in `dispatch'
  actionpack (4.2.1) lib/action_dispatch/routing/route_set.rb:43:in `serve'
  actionpack (4.2.1) lib/action_dispatch/journey/router.rb:43:in `block in serve'
  actionpack (4.2.1) lib/action_dispatch/journey/router.rb:30:in `each'
  actionpack (4.2.1) lib/action_dispatch/journey/router.rb:30:in `serve'
  actionpack (4.2.1) lib/action_dispatch/routing/route_set.rb:819:in `call'
  railties (4.2.1) lib/rails/engine.rb:518:in `call'
  railties (4.2.1) lib/rails/railtie.rb:194:in `public_send'
  railties (4.2.1) lib/rails/railtie.rb:194:in `method_missing'
  actionpack (4.2.1) lib/action_dispatch/routing/mapper.rb:51:in `serve'
  actionpack (4.2.1) lib/action_dispatch/journey/router.rb:43:in `block in serve'
  actionpack (4.2.1) lib/action_dispatch/journey/router.rb:30:in `each'
  actionpack (4.2.1) lib/action_dispatch/journey/router.rb:30:in `serve'
  actionpack (4.2.1) lib/action_dispatch/routing/route_set.rb:819:in `call'
  dragonfly (1.0.10) lib/dragonfly/middleware.rb:14:in `call'
  dragonfly (1.0.10) lib/dragonfly/middleware.rb:14:in `call'
  warden (1.2.3) lib/warden/manager.rb:35:in `block in call'
  warden (1.2.3) lib/warden/manager.rb:34:in `catch'
  warden (1.2.3) lib/warden/manager.rb:34:in `call'
  rack (1.6.1) lib/rack/etag.rb:24:in `call'
  rack (1.6.1) lib/rack/conditionalget.rb:25:in `call'
  rack (1.6.1) lib/rack/head.rb:13:in `call'
  actionpack (4.2.1) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
  actionpack (4.2.1) lib/action_dispatch/middleware/flash.rb:260:in `call'
  rack (1.6.1) lib/rack/session/abstract/id.rb:225:in `context'
  rack (1.6.1) lib/rack/session/abstract/id.rb:220:in `call'
  actionpack (4.2.1) lib/action_dispatch/middleware/cookies.rb:560:in `call'
  activerecord (4.2.1) lib/active_record/query_cache.rb:36:in `call'
  activerecord (4.2.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:649:in `call'
  actionpack (4.2.1) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
  activesupport (4.2.1) lib/active_support/callbacks.rb:88:in `call'
  activesupport (4.2.1) lib/active_support/callbacks.rb:88:in `_run_callbacks'
  activesupport (4.2.1) lib/active_support/callbacks.rb:776:in `_run_call_callbacks'
  activesupport (4.2.1) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (4.2.1) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
  actionpack (4.2.1) lib/action_dispatch/middleware/remote_ip.rb:78:in `call'
  actionpack (4.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
  actionpack (4.2.1) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  railties (4.2.1) lib/rails/rack/logger.rb:38:in `call_app'
  railties (4.2.1) lib/rails/rack/logger.rb:20:in `block in call'
  activesupport (4.2.1) lib/active_support/tagged_logging.rb:68:in `block in tagged'
  activesupport (4.2.1) lib/active_support/tagged_logging.rb:26:in `tagged'
  activesupport (4.2.1) lib/active_support/tagged_logging.rb:68:in `tagged'
  railties (4.2.1) lib/rails/rack/logger.rb:20:in `call'
  actionpack (4.2.1) lib/action_dispatch/middleware/request_id.rb:21:in `call'
  rack (1.6.1) lib/rack/methodoverride.rb:22:in `call'
  dragonfly (1.0.10) lib/dragonfly/cookie_monster.rb:9:in `call'
  rack (1.6.1) lib/rack/runtime.rb:18:in `call'
  activesupport (4.2.1) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
  rack (1.6.1) lib/rack/sendfile.rb:113:in `call'
  railties (4.2.1) lib/rails/engine.rb:518:in `call'
  railties (4.2.1) lib/rails/application.rb:164:in `call'
  rack (1.6.1) lib/rack/lock.rb:17:in `call'
  rack (1.6.1) lib/rack/content_length.rb:15:in `call'
  rack (1.6.1) lib/rack/handler/webrick.rb:89:in `service'
  /Users/bci20/.rbenv/versions/2.2.0/lib/ruby/2.2.0/webrick/httpserver.rb:138:in `service'
  /Users/bci20/.rbenv/versions/2.2.0/lib/ruby/2.2.0/webrick/httpserver.rb:94:in `run'
  /Users/bci20/.rbenv/versions/2.2.0/lib/ruby/2.2.0/webrick/server.rb:294:in `block in start_thread'

I've tested this extension because i'm facing undefined method errors on our spree-refinery-authentication extension in production mode only too :
This my other stacktrace with our spree-refinery-authentication extension :
cache error: No server available
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/dalli-2.7.4/lib/dalli/ring.rb:45:in `server_for_key'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/dalli-2.7.4/lib/dalli/client.rb:332:in `perform'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/dalli-2.7.4/lib/dalli/client.rb:56:in `get'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/newrelic_rpm-<IP_ADDRESS>8/lib/new_relic/agent/instrumentation/memcache.rb:48:in `block (4 levels) in instrument_methods'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/newrelic_rpm-<IP_ADDRESS>8/lib/new_relic/agent/method_tracer.rb:69:in `block in trace_execution_scoped'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/newrelic_rpm-<IP_ADDRESS>8/lib/new_relic/agent/method_tracer_helpers.rb:82:in `trace_execution_scoped'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/newrelic_rpm-<IP_ADDRESS>8/lib/new_relic/agent/method_tracer.rb:67:in `trace_execution_scoped'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/newrelic_rpm-<IP_ADDRESS>8/lib/new_relic/agent/instrumentation/memcache.rb:45:in `block (3 levels) in instrument_methods'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/rack-cache-1.2/lib/rack/cache/metastore.rb:324:in `read'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/rack-cache-1.2/lib/rack/cache/metastore.rb:30:in `lookup'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/rack-cache-1.2/lib/rack/cache/context.rb:169:in `lookup'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/rack-cache-1.2/lib/rack/cache/context.rb:66:in `call!'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/rack-cache-1.2/lib/rack/cache/context.rb:51:in `call'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/newrelic_rpm-<IP_ADDRESS>8/lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/actionpack-4.2.1/lib/action_dispatch/middleware/static.rb:113:in `call'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/newrelic_rpm-<IP_ADDRESS>8/lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/rack-1.6.1/lib/rack/sendfile.rb:113:in `call'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/newrelic_rpm-<IP_ADDRESS>8/lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/railties-4.2.1/lib/rails/engine.rb:518:in `call'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/railties-4.2.1/lib/rails/application.rb:164:in `call'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/newrelic_rpm-<IP_ADDRESS>8/lib/new_relic/agent/instrumentation/middleware_tracing.rb:67:in `call'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/rack-1.6.1/lib/rack/content_length.rb:15:in `call'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/puma-2.11.3/lib/puma/server.rb:507:in `handle_request'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/puma-2.11.3/lib/puma/server.rb:375:in `process_client'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/puma-2.11.3/lib/puma/server.rb:262:in `block in run'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/puma-2.11.3/lib/puma/thread_pool.rb:104:in `call'
/Users/bci20/Sites/equ-001-website-2015/.gems/gems/puma-2.11.3/lib/puma/thread_pool.rb:104:in `block in spawn_thread'
Started GET "/" for ::1 at 2015-05-27 14:28:26 -0400
Processing by Refinery::PagesController#home as HTML
  Rendered refinery/pages/home.html.slim within layouts/application (1.4ms)
  Rendered .gems/bundler/gems/refinerycms-c5e7a052c867/core/app/views/refinery/_html_tag.html.erb (0.4ms)
  Rendered .gems/bundler/gems/refinerycms-c5e7a052c867/core/app/views/refinery/_site_bar.html.erb (261.6ms)
Completed 500 Internal Server Error in 275ms (ActiveRecord: 1.8ms)

ActionView::Template::Error (undefined method `display_site_bar?' for #<#<Class:0x007ffb0f93de58>:0x007ffb093192a8>):
    1: <% if display_site_bar? %>
    2:   <% unless admin? # all required JS included by backend. %>
    3:     <% content_for :stylesheets, stylesheet_link_tag('refinery/site_bar') unless !!local_assigns[:exclude_css] %>
    4:     <%= yield(:stylesheets) unless local_assigns[:head] || local_assigns[:exclude_css] %>
  app/views/layouts/application.html.slim:3:in `_aacb91b860ea02c48166b4689e87d139'

cache: [GET /] pass

Any idea @parndt ? Are they related errors ?

When i set config.eager_load = false in production mode, it work.
I've started to read this :
http://blog.arkency.com/2014/11/dont-forget-about-eager-load-when-extending-autoload/

It has been fixed : https://github.com/refinery/refinerycms/pull/2940#issuecomment-119740264


Remove previous code for user JWT.

Codecov Report

Merging #186 (8207f7f) into main (5b29bb5) will increase coverage by 1.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main     #186      +/-   ##
==========================================
+ Coverage   66.46%   67.47%   +1.01%
==========================================
  Files         111      109       -2
  Lines        2126     2094      -32
  Branches      218      210       -8
==========================================
  Hits         1413     1413
+ Misses        652      620      -32
  Partials       61       61

Flag
Coverage Δ

appcommon
58.15% <ø> (+2.34%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Discussion: Upgrade process is a pain

I'm trying to upgrade from RN 0.57.8 to 0.59.0.
Unfortunately I'm trapped in a double bind because:
react-native-git-upgrade 0.59.0 fails with the following error:
git-upgrade ERR! An error occurred during upgrade:
git-upgrade ERR! Error: ENOENT: no such file or directory, stat './node_modules/react-native/local-cli/generator/copyProjectTemplateAndReplace.js'

I've found this issue, where it is suggested to use the new upgrade command of the CLI.
But, the version I'm running tells me to use react-native-git-upgrade instead 8()
You should consider using the new upgrade tool based on Git. It makes upgrades easier by resolving most conflicts automatically.
To use it:
- Go back to the old version of React Native
- Run "npm install -g react-native-git-upgrade"
- Run "react-native-git-upgrade"
See https://facebook.github.io/react-native/docs/upgrading.html

What should I do to upgrade to 0.59.0

Same problem here.

https://github.com/react-native-community/react-native-releases/issues/100#issuecomment-472111011
Bump react-native to 0.59 in your package.json, run npm/yarn install, then run react-native upgrade --legacy

I would have preferred the react-native-git-upgrade route because this will be a lot of work after using this legacy mode.

It took me ~20 minutes to upgrade from 0.58.5 to 0.59 by applying the diffs here: https://github.com/react-native-community/rn-diff-purge/compare/version/0.58.6...version/0.59.0
Hopefully going forward, react-native upgrade will work well.
They got rid of react-native-git-upgrade because "This tool doesn't work and is a frequent source of pain for people. Nobody maintains it. Let's kill it and stop recommending it to people"

I could understand that, but the fact is that I have numerous clients and doing it for each of their apps is going to be tedious and error prone.

Can you try npx @react-native-community/cli upgrade? It will use the new upgrade while you don't have it already. We noticed however that in some projects the git patch is not applied as expected (even when done manually) and it results in only package.json and lockfile being changed. If that happens to you, please report here, ideally with a repro: https://github.com/react-native-community/react-native-cli/issues/230

The React Native 0.59 blog post covers this topic. Upgrading has been painful for people in the past, and people we work with closely have had success using rn-diff-purge to upgrade to 0.59. Once you're on 0.59, you can use the new upgrade command by default, or you can follow the advice above to directly use the latest React Native CLI.
Since the aim of this thread is to discuss the upgrade process, I recommend using the existing Upgrading React Native thread in the Discussions repository. I am closing this issue in favor of the existing one.

The React Native 0.59 blog post covers this topic. Upgrading has been painful for people in the past, and people we work with closely have had success using rn-diff-purge to upgrade to 0.59. Once you're on 0.59, you can use the new upgrade command by default, or you can follow the advice above to directly use the latest React Native CLI.
Since the aim of this thread is to discuss the upgrade process, I recommend using the existing Upgrading React Native thread in the Discussions repository. I am closing this issue in favor of the existing one.

I must say that even though it is covered in the blog post, it is covered really poorly. It took me a few tries and about one day to manage to upgrade to 0.59.
Once I have some time I'll add a full upgrade guide to this comment though I strongly recommend that the blog post will be revised.

@jeffreyffs Your solution was wayyyy easier and quicker! I just upgraded from 0.56 to 0.59 without the hassle I usually have using react-native-git-upgrade.

@amitassaraf can you elaborate on what can be done to revise it? I'd appreciate some concrete feedback on what we can do to make the process clearer.

@hramos For me it was not clear what I was supposed to do. I understood I need to apply changes manually and that is about it.
The following are the steps I took and I think they should be added / explained better in the blog post.

In rn-diff-purge find your current React Native version.
Click the "Compare" column link and apply all changes manually on your project.
Repeat step 2 all the way up the table up to React Native version 0.59.0
Run yarn / npm install, this will officially put your project on RN v0.59.0 [This is the main step that is missing from the blog post imo]
Run react-native upgrade to upgrade your project to the latest RN version (0.59.1) using the new update command.
Run pod install for iOS if needed and thats it, you are now on the latest RN version.

It took me ~20 minutes to upgrade from 0.58.5 to 0.59 by applying the diffs here<EMAIL_ADDRESS>Hopefully going forward, react-native upgrade will work well.
They got rid of react-native-git-upgrade because "This tool doesn't work and is a frequent source of pain for people. Nobody maintains it. Let's kill it and stop recommending it to people"

How did you manage the diff concerning the project.pbxproj file, I don't really know how to deal with it :/

There should be no changes from rn-diff-purge in project.pbxproj. Which diff are you looking at?

For others..
In new versions, you need to start the server manually. Try react-native start and reload app again.


Fix invalid expect block and support for multi-line errors

Fixes #58  and #248.
Each line of the REPL is now evaluated by the Parser::eval() (Parser and Lex are not modified)
Changes proposed in this PR:

Add Runnable Parser to check invalid syntax
Check invalid block as a error
Add block_begin to use for REPL
Display multi-line error

@mtshiba

Currently it is implemented only in dummy.rs.
Is it necessary to implement run() other than dummy.rs?

A method should be added to the Runnable trait as a request method to determine if the next line should be followed. The name should be something like expect_nextline().

I fixed conflict.

I fixed #281 then I found some bugs.
so I need more time to test and fix them

When REPL detects an error, it refers to the previous source information.

I addressed the issue occurring during single-line errors.
Additionally, I added error handling for cases where newline are expected, such as with do!:, do:, to ensure evaluation in the REPL.

REPL references previous source information when dealing with multiple lines of code.

Multi line errors

Collections

Thank you!


GitHub actions: add another job that requires all tests to pass

Intended to be used as a job that is required for PRs to be merged.
Currently, PRs cannot be merged because both "test" and "test (ubuntu-18.04, 3.8)" (as well as others in the test matrix) are required. These criteria are impossible to meet because "test" is only present when tests are skipped (e.g. on draft PRs), and the others are only present when tests are run. Requiring the "publish" job apparently does not work either because it is skipped even when tests fail.

Works now!


clarify uses of 'proofing' vs 'proving'

as raised in #18

TODO: eliminate "proofing". Identity proofing means something quite different from what we're talking about here. We should be using the word "proving".

addressed in #82, closing


wifi: utils: Get correct channel count

When channel range is configured in scan params, get the channel count from chan_idx instead of taking a difference of start and end of the channel range. The difference method fails in case of 5GHz band since channels may not be consecutive numbers.

@sachinthegreen @ajayparida @VivekUppunda @kapbh  Please have a look.


[REQUEST] cc65 library support

Is your feature request related to a problem? Please describe.
cc65 comes bundled with several libraries installed to /usr/share/cc65/include, but it is not possible to include them, -I returns a "bad option" error, --include-dir works but using #include <nes.h> for example still can't find the library file.
Describe the solution you'd like
could we please get access to the libraries in CE?
Describe alternatives you've considered
n/a
Additional context
great website, thanks for adding cc65 support.

Thanks: will be fixed when we next do a site update!

Looks good, thanks!


Modify CloudStack Connection class so it looks more like other connec…

…tion
classes and user can more easily specify which attributes to send as part of the
query string and as part of the request body.

Thanks.
Can you please have a look - it looks like some tests are failing - https://travis-ci.org/apache/libcloud/builds/14251104.
/cc @runseb


⚠ Bofrost.fr has degraded performance

In ee75a20, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 1161 ms

Resolved: Bofrost.fr performance has improved in ff4a79c after 10 minutes.


yield * does not work for custom iterator method

Bug Report
🔎 Search Terms
yield generator
🕗 Version & Regression Information
4.4.3
⏯ Playground Link
Playground link with relevant code
💻 Code

class Foo {
    foos: Foo[] = [];

    *generator(): Iterator<Foo> {
        for (let foo of this.foos) {
            // Type 'Iterator<Foo, any, undefined>' must
            // have a '[Symbol.iterator]()' method that returns an iterator.
            yield * foo.generator();
        }
    }
}

🙁 Actual behavior
yield * does not work for custom generator method. Makes no sense?
🙂 Expected behavior
Preferably, it should work like it does for [Symbol.iterator]. No?

It doesn't work because you typed the function as returning an Iterator instead of an Iterable, an IterableIterator, or a Generator. You can only use yield* on Iterables, not on Iterators.
Playground

Ah, that makes sense. Thanks! It seems *generator(): Iterable<Foo> would also work.


Cannot extract page at a certain date

When trying to extract https://web.archive.org/web/20030216230918/http://www.turbulence.org/ Webrecorder always records at another date from 4 months earlier:

https://webrecorder.io/m4rk3r/test/20030216230918/http://www.turbulence.org/
Appears to be fixed!


Add weight for slurm nodes

At the moment all of the jobs on the local slurm cluster are running on the 32 core nodes. This should cause the smaller nodes to be prioritised so that the larger nodes are available for larger jobs.


Include MicrosoftVisualC++ VC_redist

It would be nice if the installer of Flamerobin would install the corresponding version of MicrosoftVisualC++ VC_redist.

hi @arvanus
I have a question.
I am looking at the script to generate the Windows installers and I see
the same file is used for x86 and x64.
https://github.com/mariuz/flamerobin/blob/master/install/win32/FlameRobinSetup.iss#L95:L99
Is it the correct file?
./jo

Hi, I don't use this folder anymore, I use a different folder for x86 and x64, hasn't committed the change because I think the best way to build is by running cmake and "follow the flow" from there, so it can be any folder you desire

Hi, I don't use this folder anymore, I use a different folder for x86 and x64, hasn't committed the change because I think the best way to build is by running cmake and "follow the flow" from there, so it can be any folder you desire

ok.
But the correction for this request where are implemented?

I have a question. I am looking at the script to generate the Windows installers and I see the same file is used for x86 and x64.
https://github.com/mariuz/flamerobin/blob/master/install/win32/FlameRobinSetup.iss#L95:L99
Is it the correct file?

done, changed for build32 and build64 folders


Missing InfiniteHits "ShowMore" Css Class

I might be totally missing something but is it not possible to add css classes to properly style the "Show More" button using an existing framework like it is with item / empty / root?

Thanks for the feedback @mindbits, it is indeed a problem with our API. We should add a way to provide a custom CSS class to the button.


Adding in more E2e Tests

Closes #137

Just got back from vacation - still working away at this. Trying to wrap my head around ctypes for testing the rust functions and the libc functions.

Still working at this - struggling with visibility from function calls in tests. Will respond to comments tonight to give some insight.

Hey @thedanvail, let us know if you need any help.

Hey @thedanvail, let us know if you need any help.

I pushed my commits and responded to comments, I'm good on my end for now! Thanks!

@aviramha @infiniteregrets Can I do anything to help you review or to progress this? I'm not sure how important the rewrite is for you, but I just want to make sure that I'm not blocking anything!

@aviramha @infiniteregrets Can I do anything to help you review or to progress this? I'm not sure how important the rewrite is for you, but I just want to make sure that I'm not blocking anything!

Hey! Yes. The comments given still stand - most of the tests don't really use the underlying API that we want to be tested/covered. As @infiniteregrets suggested, the best way to use that API is to use ctypes and call the functions directly instead of using the high level Pythonic wrappers.

@aviramha @infiniteregrets Can I do anything to help you review or to progress this? I'm not sure how important the rewrite is for you, but I just want to make sure that I'm not blocking anything!

Hey! Yes. The comments given still stand - most of the tests don't really use the underlying API that we want to be tested/covered. As @infiniteregrets suggested, the best way to use that API is to use ctypes and call the functions directly instead of using the high level Pythonic wrappers.

In the interest of getting these tests updated and the PR out more quickly, would any of y'all be willing to hop on a discord call sometime this week to pair program this together and get it worked  through?

@aviramha @infiniteregrets Can I do anything to help you review or to progress this? I'm not sure how important the rewrite is for you, but I just want to make sure that I'm not blocking anything!

Hey! Yes. The comments given still stand - most of the tests don't really use the underlying API that we want to be tested/covered. As @infiniteregrets suggested, the best way to use that API is to use ctypes and call the functions directly instead of using the high level Pythonic wrappers.

In the interest of getting these tests updated and the PR out more quickly, would any of y'all be willing to hop on a discord call sometime this week to pair program this together and get it worked through?

ofc! let's coordinate over Discord.

@thedanvail Hey, wanted to check if you were planning to get back to this one anytime soon? Feel free to drop it in favor of something simpler if it's getting too convoluted.

@thedanvail Hey, wanted to check if you were planning to get back to this one anytime soon? Feel free to drop it in favor of something simpler if it's getting too convoluted.

Yeah, I'm still workin' on it. Just needed a break for a minute. If I can't figure out the tests soon, I'll hop back in discord so we can sort it out in some way.


Use apiserver built-in version API for antctl version

The PR makes antrea-controller use apiserver built-in version API to
serve version query. To access antrea's nonGoRestful API which cannot be
registered as APIService, it uses K8s apiserver service proxy, which can
also be used to access antrea-controller's other nonGoRestful APIs.
It unifies how version command is implemented for antrea-agent and
antrea-controller on both client and server side.

/test-all

/test-conformance
/test-e2e

OK, will close this for now.


upper case labels for classes?

In the turtle file, the labels for classes use lower case:
rdfs:label "manifestation"@en ;
The class URI uses upper case:
http://example.org/openWEMI/Manifestation
Should the label also be upper case?

This has been done.


Improved pointers (do not merge)

Implementation of SE-184

I know, the whitespace thing is terribly annoying! I used to open/close a file to fix the whitespace then commit that separately before editing the file. Pure whitespace changes are also discouraged in Swift, but it's probably fine if it's limited to a file that you're already making large changes to.

I found out how to disable whitespace stripping in Atom but I have no idea how to restore the whitespace that was already there before Atom stripped it since it’s all mixed with the actual changes.

For the files with whitespace only changes git checkout master path/to/file will reset them.  For the files with actual code changes you may have to do it by hand

i only saved files i made changes to, which was about 20 or so because of function and argument renaming to make the tests compile

does it look better?

@kelvin13 Please make sure to rebase the branch on master before merging!

The implementation is now up to speed with the latest version of the draft proposal


Upgrade to Latest WIT

Tracking issue to upgrade ComponentizeJS to the latest WIT syntax.
For kebab names, the integration remains identical to the current implementation, ie:
package local:app

world app {
  import fn: func () -> string;
  import iface: interface {
    test: func () -> string
  }
  export fn: func () -> string;
  export iface: interface {
    test: func () -> string
  }
}

can be represented by the JS ESM source:
import fnImport from 'fn';
import { test } from 'iface';

export function fn () {
  return fnImport();
}

export const iface = {
  test () {
    return test();
  }
};

In the recent<EMAIL_ADDRESS>release, the WIT wasn't quite represented correctly for namespaces which require a conversion, resulting in a need for some further refinements described in https://github.com/bytecodealliance/jco/issues/91.
When handling namespaces, we effectively perform a "conversion" from the namespace semantics to the ESM semantics, exactly as described in the JCO issue there.
The convention with aliasing semantics becomes for componentizing a world:
package my:package

interface test {
 hello: func () -> string
}

world test {
  import wasi:filesystem/types
  import test

  export wasi:filesystem/types
  export test
}

becomes the corresponding ESM source written by the user:
import * as types from 'wasi:filesystem/types';
import { hello } from 'my:package/test';

// export aliases
export const types = {
  fn () {], // ...
};
export const test = {
  hello () {}
};

If there were an aliasing conflict, say there already existed interface name exports for test and types, then we would need the code author to instead write:
import * as types from 'wasi:filesystem/types';
import { hello } from 'test';

// when the world has these namespace interface exports already,
// eg from another interface via:
//   export another:package/types
//   export another:package/test
// then the base alias can only be the first or neither
export const types = /*...*/;
export const test = /*...*/;

// now we must then export the full canonical names for the duplicates,
// by defining local variables,
const wasiFilesystemTypes = {
  hello () {}
};
const myPackageTest = {
  fn () {], // ...
};
// then we export them using the "string export" syntax for ES modules
export { wasiFilesystemTypes as 'wasi:filesystem/types', myPackageTest as 'my:package/test' }

The major concern with this Componentize convention for implementing external namespaces, is that when there is a conflict this new authoring style wouldn't be known to the user, so they would need to be informed that they must switch authoring modes into this full convention.
The alternative would be to always require the full verbose export mode without aliasing in componentize workflows to avoid such a cliff.

This looks generally great, thanks for writing it up!
One question: in addition to the 2 ways you showed above to export wasi:filesystem/types, could you additionally write the following 3, thus allowing 5 potential ways to export fn (assuming fn is a field of wasi:filesystem/types):

export const wasi = { http: { types: { fn() {}, ... } } };
export const http = { types: { fn() {}, ... } };
export fn() {}

One tangentially-related comment is that, as of component-model/#164, we tightened up the validation rules to disallow using the same kebab-name in both imports and exports, since it avoids various whole cases of ambiguities that otherwise need to be handled.  Thus, you wouldn't be able to both import and export the kebab-name test.

Yes, all the other nesting options remain as potential aliases, down to themselves having conflicts of course (ie wasi or http as kebab exports).
Function flattening is still somewhat uncertain since unlike the other cases, the function names come from the third-party dependency so the flattening aliasing becomes dependent on hidden names that could possibly vary on patch versions.
Thanks for reminding me of the import / export kebab deconflicting, that is another case to bear in mind, but doesn't have any immediate implications here I don't believe.
Another point on this topic is the self-interface exports of a package:
package local:app
inteface iface {
  fn: func test() -> string
}
world app {
  export iface
}

In theory we could detect these "own" interface exports, and give them aliasing precedence if there is an aliasing conflict. So that the own exported interfaces get the best aliases in that case.

Ah, interesting idea.  I suppose this is already the case when using inline interface exports: the kebab-name gets precedence over any other interface-id exports, and this handles the common case where I'm building my own component with non-interface exports (and, orthogonally, add a Wit syntax for exporting non-inline interfaces without giving them interface-ids).

Exactly, one semantic distinction worth making here is that for kebab names, that is the canonical export name or import specifier (which are camel cased and kebab cased respectively), whereas for namespaces they are always aliases of the main canonical export to begin with.

Landed in https://github.com/bytecodealliance/componentize-js/pull/32 and released in 0.0.8.


Question about making sure that rules in one workflow dosent violate each other.

Suppose we have a Workflow with two rules but we want to make sure that rules in this workflow doesn't violate each other. Does it need an extra feature to validate all rules in one workflow against this requirement?
sample based on demo :
[
  {
    "WorkflowName": "LoyaltyFactorInIndia",
    "Rules": [
      {
        "RuleName": "LoayaltyFactorIs2",
        "SuccessEvent": "10",
        "ErrorMessage": "One or more adjust rules failed.",
        "ErrorType": "Error",
        "RuleExpressionType": "LambdaExpression",
        "Expression": "input1.country == \"india\" AND input1.loyaltyFactor = 2 "
      },
      {
        "RuleName": "LoayaltyFactorIs3",
        "SuccessEvent": "20",
        "ErrorMessage": "One or more adjust rules failed.",
        "ErrorType": "Error",
        "RuleExpressionType": "LambdaExpression",
        "Expression": "input1.country == \"india\" AND input1.loyaltyFactor = 3 "
      }
    ]
  }
]

Thank you in advance

Hi @MehranDHN based on your question, are you looking exclusive rules?
something Like if... else if ?
Do you need it to be that only one rule succeeds in any workflow?


app rotates and resets

When i do single edit, crop, confirm, then try to draw
The app switches to landscape, then switches to portrait (and loses the crop). I also noticed the app colors reset during that.
I'm holding my phone in portait and the rotation of my phone is locked. So i'm confused why the app switches to landscape somehow.
https://github.com/T8RIN/ImageToolbox/assets/1010226/455dc720-17cd-420c-a076-c26fc4fe1549
2.5.1 foss

Losing crop is definitely a bug , but this rotation in draw mode can be disabled in the settings

so , is draw mode always going landscape? or what do you mean?
I feel like i've used draw mode in portait before.
again, i'm not holding my phone in landscape, I on purpose made sure to really hold it vertically so it would always detect portait. Plus my phone's rotation is locked anyway

Enter the standalone draw mode and u will see the setting if you not find it in settings sheet

the app settings were set to stay locked though:

Description is unclear, switch this off and all be ok

that does fix it. But it is confusing yeah.
I guess it's confusing if you have this set to on, I would have expected it to never do any kind of ui rotation unlike what you saw in the video

When i created this i thought that landscape images will be locked to landscape, and portrait to portrait, preventing auto rotate

hmm, but in my case it's a portait image, so it should never rotate either way I guess

You cropped it to be non portrait

Oooh ok yeah
Guess I'll see how it behaves when the crop removal bug is fixed.
Thx 👍


Feature Request: Dynamic Outbound IP Routing

I would like to add the option to add dynamic outbound IP routing assigned to the server for the VPN clients.  Let say that the server have 24 IPs assigned to the server for use, and I would like to dynamically assign a pool of IPs to users that it randomly uses the IP for VPN Outbound traffic to the Internet.
Right now, it is only set to use only one IP and rather like to have option to use a range of IPs available for use.

Sorry I think this is a very specific use case. Or I may have not understood this feature.

This is something that should be done in the server OS / firewall (SNAT) rather than in SE.


New Design Feature for Enhanced UI

In our mobile app, users often face a situation where, after moving to a new page, they want to check which language and tag they had selected. To do this, they need to open the Language and Tag picker again. I want to make it so that the selected language and tag remain visible to the user without them having to open the pickers again.
⭐ With the addition of the fixed sidebar, this feature has become even more critical.
Demo :
https://github.com/lucavallin/first-issue/assets/91373023/eed8c299-69e6-405a-8206-600386ec8776

@lucavallin, I kindly request you to assign this task to me since I've written the majority of the code for this feature.


Remove all uses of ITypeActivator and use the static method instead

@kirthik  - https://github.com/aspnet/DependencyInjection/issues/164

Code checked in - 5de210f5271c385d7bae47af0f866698518fccdc

Why does the DefaultTypeActivatorCache leverage a cache of delegates which indirectly call ActivatorUtilities.CreateFactory(...) vs just calling ActivatorUtilities.CreateFactory(...) directly?


gamnit: cache each camera matrix and avoid boxing floats in matrix operations

Optimize the gamnit framework to avoid excessive garbage collection and a general speedup.
Replace the use of a generic Array[E] to implement matrices of floats, as it caused the boxing of each floats at each access. The new custom extern class does not suffer from the boxing and allow for some optimization in C code. This structure is allocated in the Nit GC (hackishly), and doesn't need an explicit liberation. A limitation of the current solution is about the size of the floating points in C, matrix uses doubles and glesv2 floats, the data is copied and cast in C code, this could be optimized further as needed.
Caching each camera matrix avoids recreating them at each frame, which was quite costly, especially for the UI camera that rarely moves. The caching logic is implemented as a distinct class allowing easy debugging.

test this please


Migrate deprecated DeviceArray

fix #15
There are still some DeviceArray doc/docstring let me know what you want to do

I've updated the version of jaxline to 0.0.7 including this fix. Thanks for reporting! So i'll close this PR.


IfW: add VTK output of slice in XY to driver

This PR is ready to merge.
Feature or improvement description
This allows visualizing a slice through hub-height (or other height) when comparing with a simulation.  The user can specify the height at which to export the slice.  At the moment it is a very slow process due to the looping and because it exports over the entire time range (this could be improved later).

This figure shows the XY plane at the hub height for a Mann wind field (HAWC format).  The vertical plane is exported from the driver using the WrVTK option.  Both are taken at 23.625 seconds.
Related issue, if one exists
none
Impacted areas of the software
InflowWind driver only
Additional supporting information
During testing of the wake added turbulence feature, I ran into issues in verifying that the background turbulence was being added correctly.  To check this, I needed some way to visualize the XY plane through the hub from the Mann box turbulence.
Test results, if applicable
No test cases are affected.  I did not add a test case for this since it is a very slow code to execute.

If it's not too much work, maybe XZ and YZ could be added too (like fast farm).
On a side note, plotting slices of TurbSim and MonnBoxes can easily be done using the python-toolbox:
https://github.com/OpenFAST/python-toolbox/blob/787092df79a558b849c45aa9c53adfb737beb386/pyFAST/input_output/examples/Example_TurbSimBox.py#L51

Adding the XY and YZ slices should be pretty straightforward.  I'll give that a shot.  Also, it might make sense to allow exporting multiple slices instead of just one.


Swagger info corections

use Numbers ONLY (dont mix code style)
format code (space betwen swagger comments and code)
improve a few error messages
add invalidTopicsError type for topic api
complete error responces in swagger comments

@sapk PING ;)

@lunny b1ff386e2418ed6a7f183e756b13277d701278ef is about move all http.Status* enum to numbers since it was mixed in each function or eaven in a function

@lunny I could also search for ctx.Error(500, "", err) and convert them to ctx.InternalServerError(err)

Codecov Report

Merging #9441 into master will increase coverage by 0.01%.
The diff coverage is 40.28%.

@@            Coverage Diff            @@
##           master   #9441      +/-   ##
=========================================
+ Coverage   41.48%   41.5%   +0.01%
=========================================
  Files         570     570
  Lines       74324   74630     +306
=========================================
+ Hits        30834   30975     +141
- Misses      39647   39816     +169
+ Partials     3843    3839       -4

Impacted Files
Coverage Δ

modules/context/api.go
76.19% <ø> (ø)
:arrow_up:

routers/api/v1/org/hook.go
0% <0%> (ø)
:arrow_up:

routers/api/v1/repo/release_attachment.go
0% <0%> (ø)
:arrow_up:

routers/api/v1/admin/repo.go
0% <0%> (ø)
:arrow_up:

routers/api/v1/repo/issue_tracked_time.go
0% <0%> (ø)
:arrow_up:

routers/api/v1/user/star.go
0% <0%> (ø)
:arrow_up:

routers/api/v1/misc/signing.go
0% <0%> (ø)
:arrow_up:

routers/api/v1/misc/markdown.go
67.41% <0%> (ø)
:arrow_up:

routers/api/v1/repo/subscriber.go
0% <0%> (ø)
:arrow_up:

routers/api/v1/repo/star.go
0% <0%> (ø)
:arrow_up:

... and 47 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 e2fc0a0...76c3e1f. Read the comment docs.

I far prefer using the code constants compared to numbers. I appreciate that our swagger comments require us to use numbers but that's a fault of the code generator which could be fixed at their end.
The reasoning is simple: magic numbers have no context. Yes 404 is a rare enough number outside of its use as resource not found but, 200 & 500 are less rare. There is no loss of the additional semantic meaning when you write http.StatusOK & http.StatusInternalError - it also focuses your mind on whether you mean http.StatusForbidden or http.StatusUnauthorized in a way that 401 & 403 don't.

@sapk the code changes have no afect of the end result/responce beside 1/2 witch had none before

@sapk @zeripath done


Feature/enhancements

Enhancements added

Hi Priyanka, thanks for the pull request. We're actively working on the next major release of ResearchStack and do not plan to directly merge the develop branch into master. Perhaps we could chat about what you're working on to see if our next release will align with your requirements.


Quantization make graph slower during inference.

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): Yes
OS Platform and Distribution: Linux Ubuntu 16.04
TensorFlow installed from: using TF source code (GPU build), can provide docker to reproduce environment conditions if necessary
TensorFlow version: using r1.3 branch, version 1.3.1
Python version: 2.7
Bazel version (if compiling from source): 0.6.1
CUDA/cuDNN version: 8.0/6.0
GPU model and memory: GeForce GTX 1080 Ti, 11170 MB
Exact command to reproduce:
/tensorflow/bazel-bin/tensorflow/tools/graph_transforms/transform_graph  --in_graph=/quantization/VGG16/frozen_model.pb   --outputs="Validation_segmentation/Validation/decoder/Softmax" --out_graph=/quantization/VGG16/optimized_model.pb   --transforms='add_default_attributes strip_unused_nodes(type=float, shape="384,1248,3") remove_nodes(op=Identity, op=CheckNumerics) fold_constants(ignore_errors=true) fold_batch_norms fold_old_batch_norms quantize_weights quantize_nodes'

Describe the problem
Hi, I compressed a graph using transform_graph tool but the resulting graph is actually slower during inference. I am compressing a graph similar to the one presented in this article: https://arxiv.org/pdf/1612.07695.pdf, which has VGG16 as an encoder in input and a classification decoder with a Softmax in output. Inference uses same python script for both graph (original and quantized) and make an average of 100 inferences. Original graph takes ~0.1s for inference, quantized graph takes 70s! If I perform quantization without quantize_nodes, inference takes ~0.3s.
I understand that this quantization is still in a work in progress and maybe was more aimed at improving inference on mobile devices, but I'm surprised that it is actually so much slower, so that's why I'm logging it as a bug here. (I posted this on stackoverflow but didn't get any answer...)
The graph takes ~500Mb, let me know if I should attach it to this ticket (or include an external link?)
Source code / logs
quantization_logs.txt
tf_env.txt
inference.py.txt

I have the same problem as this. I have a small graph of 30MB (7.5MB after quantization). On 1080Ti quantization increases inference time from 8ms to 5s. And on DrivePX2 embedded device it increases from 100ms -> 800ms.
I observe that on both devices, after quantization the graph is processed on the CPU. By inspecting nvidia-smi I can see that the GPU memory is allocated but no processing occurs on it.

It has been 14 days with no activity and this issue has an assignee.Please update the label and/or status accordingly.


THIS IS JUST A TEST

DO NOT READ THIS

Goodbye old friend

Goodbye old friend

gone but not forgotten


Minor issue in "Configuring WSO2 IoT Server with WSO2 Identity Server " documentation

Currently in this page " Configuring WSO2 Identity Server as a Key Manager" link points to a image and "feature installation pom" does not have a pom file to download. We need to fix this.
[1] https://docs.wso2.com/display/IoTS310/Configuring+WSO2+IoT+Server+with+WSO2+Identity+Server

Thank you! We are working on this. Will update docs soon.

Thank you! Fixed in 310, 320, and EMM330 docs.
[1] https://docs.wso2.com/display/IOTS320/Integrating+a+Third-Party+Identity+Provider+for+Access+Token+Management


BNS subdomains

Description
This PR contains updates in the subdomain-registrar needed to add support for subdomains in BNS. It will enable users to register subdomains on BNS.
Flow: Name owner registers subdomain(s) using subdomain-registrar, it stores them in the database, in the next batch It creates contract-call(name-update) transaction, updates zone-file and broadcasts it as an attachment.
Type of Change

[x] New feature
[ ] Bug fix
[ ] API reference/documentation update
[ ] Other

Are documentation updates required?

[ ] Link to documentation updates:

Testing information
Test cases are yet to be updated
TODO

[ ] /check_zonefiles/  is not complete yet, It is broadcasting zone file to the network which I think not needed anymore as we now send zone file as an attachment and it should automatically replicate over the network from there.
[x] Test cases need to be updated

@hstove @zone117x Can we get your full reviews here today? I'd like to get this registrar up and running this week if possible to restore username registration functionality for apps.

@hstove @zone117x Can we get your full reviews here today? I'd like to get this registrar up and running this week if possible to restore username registration functionality for apps.

@hstove I believe you're planning on submitting a formal review here, correct? Do you have an ETA for that?
@asimm241 Are there any other todos remaining, such as the /check_zonefiles/ one listed here in the description? Has your team been able to test this PR fully, and might it be possible for you to host a version of it for us to check out live?

`@markmhx

@asimm241 Are there any other todos remaining, such as the /check_zonefiles/ one listed here in the description?

There is one todo remaining other than /check_zonefiles/, which is to figure out a better way to work on mainnet and mocknet. I also don't know if mainnet and testnet have the correct URL and we should continue using them. I was hoping after the review you guys will confirm it.

Has your team been able to test this PR fully,I'd like to finalize the work on this registrar in general soon this week if at all possible.

The tests that were already there are passing!. We haven't written any new test cases.  They are not making any real network calls,  all API's including contract calls are mocked. We tested it with a local node and we received a name-update event in stacks-blockchain-api.

and might it be possible for you to host a version of it for us to check out live?

hosting it should not be a problem, We would need to point subdomain-registerar to testnet and register a name on testnet to get it working. Is there an interface we can use to register the name on testnet?

@hstove Mind helping here regarding "Is there an interface we can use to register the name on testnet?" and @asimm241's questions generally around networks?

Is there an interface we can use to register the name on testnet?

No, not right now. We'd need to get this hosted, first, and fully configured with a BNS name on testnet. Then I'm happy to spin up a UI to test this.

No, not right now. We'd need to get this hosted, first, and fully configured with a BNS name on testnet. Then I'm happy to spin up a UI to test this.

how do I register name on testnet?

@asimm241 We touched base on this as a team and decided that it's probably easiest if we host a testnet based version of this on our end instead of asking you to do so on yours. 🙏