problem with switching between a large number of effects (faceeffect)

Hi, I'm modifying faceeffect example. I want to switch between a lot effects (about 25 effects). but when I add more than 10-15 effect renderer calculator, the app does not open and my phone freeze (I think it's memory problem). It's ok when I use less than 10 calculator. Is there any solution to change the effect without consecutive render calculators? for example by passing the texture path as an input_stream? if not what is the solution.
Tank you.
the sample graph I used:
# MediaPipe graph that applies a face effect to the input video stream.

# GPU buffer. (GpuBuffer)
input_stream: "input_video"

input_stream: "effect_type1"
input_stream: "effect_type2"

input_stream: "effect_type3"

# Indicates whether to use the face detection as the input source. (bool)
#
# If `true`, the face detection pipeline will be used to produce landmarks.
# If `false`, the face landmark pipeline will be used to produce landmarks.
# input_side_packet: "use_face_detection_input_source"

# Output image with rendered results. (GpuBuffer)
output_stream: "output_video"

# A list of geometry data for a single detected face.
#
# NOTE: there will not be an output packet in this stream for this particular
# timestamp if none of faces detected.
#
# (std::vector<face_geometry::FaceGeometry>)
output_stream: "multi_face_geometry"

# Throttles the images flowing downstream for flow control. It passes through
# the very first incoming image unaltered, and waits for downstream nodes
# (calculators and subgraphs) in the graph to finish their tasks before it
# passes through another image. All images that come in while waiting are
# dropped, limiting the number of in-flight images in most part of the graph to
# 1. This prevents the downstream nodes from queuing up incoming images and data
# excessively, which leads to increased latency and memory usage, unwanted in
# real-time mobile applications. It also eliminates unnecessarily computation,
# e.g., the output produced by a node may get dropped downstream if the
# subsequent nodes are still busy processing previous inputs.
node {
  calculator: "FlowLimiterCalculator"
  input_stream: "input_video"
  input_stream: "FINISHED:output_video"
  input_stream_info: {
    tag_index: "FINISHED"
    back_edge: true
  }
  output_stream: "throttled_input_video"
}

# Generates an environment that describes the current virtual scene.
node {
  calculator: "FaceGeometryEnvGeneratorCalculator"
  output_side_packet: "ENVIRONMENT:environment"
  node_options: {
    [type.googleapis.com/mediapipe.FaceGeometryEnvGeneratorCalculatorOptions] {
      environment: {
        origin_point_location: TOP_LEFT_CORNER
        perspective_camera: {
          vertical_fov_degrees: 63.0  # 63 degrees
          near: 1.0  # 1cm
          far: 10000.0  # 100m
        }
      }
    }
  }
}

node {
  calculator: "SingleFaceGeometryFromLandmarksGpu"
  input_stream: "IMAGE:throttled_input_video"
  input_side_packet: "ENVIRONMENT:environment"
  output_stream: "MULTI_FACE_GEOMETRY:multi_face_geometry"
}

# Renders the selected effect based on `selected_effect_id`.
node {
  calculator: "SwitchContainer"
  input_stream: "SELECT:effect_type1"
  input_stream: "IMAGE_GPU:throttled_input_video"
  input_stream: "MULTI_FACE_GEOMETRY:multi_face_geometry"
  input_side_packet: "ENVIRONMENT:environment"
  output_stream: "IMAGE_GPU:effect1_res"
  node_options: {
    [type.googleapis.com/mediapipe.SwitchContainerOptions] {
      contained_node: {
        calculator: "FaceGeometryEffectRendererCalculator"
        node_options: {
          [type.googleapis.com/mediapipe.FaceGeometryEffectRendererCalculatorOptions] {
            effect_texture_path: "mediapipe/graphs/face_effect/data/effect11.pngblob"
          }
        }
      }
      contained_node: {
        calculator: "FaceGeometryEffectRendererCalculator"
        node_options: {
          [type.googleapis.com/mediapipe.FaceGeometryEffectRendererCalculatorOptions] {
            effect_texture_path: "mediapipe/graphs/face_effect/data/effect12.pngblob"
          }
        }
      }
      contained_node: {
        calculator: "FaceGeometryEffectRendererCalculator"
        node_options: {
          [type.googleapis.com/mediapipe.FaceGeometryEffectRendererCalculatorOptions] {
            effect_texture_path: "mediapipe/graphs/face_effect/data/effect13.pngblob"
          }
        }
      }
      contained_node: {
        calculator: "FaceGeometryEffectRendererCalculator"
        node_options: {
          [type.googleapis.com/mediapipe.FaceGeometryEffectRendererCalculatorOptions] {
            effect_texture_path: "mediapipe/graphs/face_effect/data/effect14.pngblob"
          }
        }
      }
      contained_node: {
        calculator: "FaceGeometryEffectRendererCalculator"
        node_options: {
          [type.googleapis.com/mediapipe.FaceGeometryEffectRendererCalculatorOptions] {
            effect_texture_path: "mediapipe/graphs/face_effect/data/effect15.pngblob"
          }
        }
      }
      contained_node: {
        calculator: "FaceGeometryEffectRendererCalculator"
        node_options: {
          [type.googleapis.com/mediapipe.FaceGeometryEffectRendererCalculatorOptions] {
            effect_texture_path: "mediapipe/graphs/face_effect/data/effect16.pngblob"
          }
        }
      }

    }
  }
}

node {
  calculator: "SwitchContainer"
  input_stream: "SELECT:effect_type3"
  input_stream: "IMAGE_GPU:effect1_res"
  input_stream: "MULTI_FACE_GEOMETRY:multi_face_geometry"
  input_side_packet: "ENVIRONMENT:environment"
  output_stream: "IMAGE_GPU:effect2_res"
  node_options: {
    [type.googleapis.com/mediapipe.SwitchContainerOptions] {
      contained_node: {
        calculator: "FaceGeometryEffectRendererCalculator"
        node_options: {
          [type.googleapis.com/mediapipe.FaceGeometryEffectRendererCalculatorOptions] {
            effect_texture_path: "mediapipe/graphs/face_effect/data/effect21.pngblob"
          }
        }
      }
      contained_node: {
        calculator: "FaceGeometryEffectRendererCalculator"
        node_options: {
          [type.googleapis.com/mediapipe.FaceGeometryEffectRendererCalculatorOptions] {
            effect_texture_path: "mediapipe/graphs/face_effect/data/effect22.pngblob"
          }
        }
      }
      contained_node: {
        calculator: "FaceGeometryEffectRendererCalculator"
        node_options: {
          [type.googleapis.com/mediapipe.FaceGeometryEffectRendererCalculatorOptions] {
            effect_texture_path: "mediapipe/graphs/face_effect/data/effect23.pngblob"
          }
        }
      }
      contained_node: {
        calculator: "FaceGeometryEffectRendererCalculator"
        node_options: {
          [type.googleapis.com/mediapipe.FaceGeometryEffectRendererCalculatorOptions] {
            effect_texture_path: "mediapipe/graphs/face_effect/data/effect24.pngblob"
          }
        }
      }
      contained_node: {
        calculator: "FaceGeometryEffectRendererCalculator"
        node_options: {
          [type.googleapis.com/mediapipe.FaceGeometryEffectRendererCalculatorOptions] {
            effect_texture_path: "mediapipe/graphs/face_effect/data/effect25.pngblob"
          }
        }
      }
      contained_node: {
        calculator: "FaceGeometryEffectRendererCalculator"
        node_options: {
          [type.googleapis.com/mediapipe.FaceGeometryEffectRendererCalculatorOptions] {
            effect_texture_path: "mediapipe/graphs/face_effect/data/effect26.pngblob"
          }
        }
      }

    }
  }
}

node {
  calculator: "SwitchContainer"
  input_stream: "SELECT:effect_type2"
  input_stream: "IMAGE_GPU:effect2_res"
  input_stream: "MULTI_FACE_GEOMETRY:multi_face_geometry"
  input_side_packet: "ENVIRONMENT:environment"
  output_stream: "IMAGE_GPU:output_video"
  node_options: {
    [type.googleapis.com/mediapipe.SwitchContainerOptions] {
      contained_node: {
        calculator: "FaceGeometryEffectRendererCalculator"
        node_options: {
          [type.googleapis.com/mediapipe.FaceGeometryEffectRendererCalculatorOptions] {
            effect_texture_path: "mediapipe/graphs/face_effect/data/effect31.pngblob"
          }
        }
      }
      contained_node: {
        calculator: "FaceGeometryEffectRendererCalculator"
        node_options: {
          [type.googleapis.com/mediapipe.FaceGeometryEffectRendererCalculatorOptions] {
            effect_texture_path: "mediapipe/graphs/face_effect/data/effect32.pngblob"
          }
        }
      }
      contained_node: {
        calculator: "FaceGeometryEffectRendererCalculator"
        node_options: {
          [type.googleapis.com/mediapipe.FaceGeometryEffectRendererCalculatorOptions] {
            effect_texture_path: "mediapipe/graphs/face_effect/data/effect33.pngblob"
          }
        }
      }
      contained_node: {
        calculator: "FaceGeometryEffectRendererCalculator"
        node_options: {
          [type.googleapis.com/mediapipe.FaceGeometryEffectRendererCalculatorOptions] {
            effect_texture_path: "mediapipe/graphs/face_effect/data/effect34.pngblob"
          }
        }
      }
      contained_node: {
        calculator: "FaceGeometryEffectRendererCalculator"
        node_options: {
          [type.googleapis.com/mediapipe.FaceGeometryEffectRendererCalculatorOptions] {
            effect_texture_path: "mediapipe/graphs/face_effect/data/effect35.pngblob"

          }
        }
      }
      contained_node: {
        calculator: "FaceGeometryEffectRendererCalculator"
        node_options: {
          [type.googleapis.com/mediapipe.FaceGeometryEffectRendererCalculatorOptions] {
            effect_texture_path: "mediapipe/graphs/face_effect/data/effect36.pngblob"

          }
        }
      }

    }
  }
}

any advice?
I also check it without using "SwitchContainer" and the problem still exist.

I have similar problem when using 20 render calculator on weak hardware device(e.g Huawei honor 8C) crashed.

Same issue. Is this really a bug ?

You might want to use only one calculator and send the effect textures via an input stream.

You might want to use only one calculator and send the effect textures via an input stream.

yes, It's what I want. but I think It's impossible with current calculator structure. should I write my own renderer calculator?

Yes, you need to modify the calculator. I've done something similar before.

Add a new input stream with packet specifying the texture resource path. Also add a private variable to store the current texture (could be empty by design). Remove texture setting from input side packet.
Use SyncSetInputStreamHandler for your new calculator in pbtxt, separate original input streams and the new one into two sets.
at Process() function of your calculator, if original set of packets is received, just render with current texture as usual. If texture path packet is received, select/load the target texture, reassign current texture and return.
At application level, bind the UI (say double tap event) with sending the next texture path packet. Note that the timestamp must be monotonically increasing. For example like Frame(t0) -> Texture(t1) -> Frame(t2).

Hope this helps.

Yes, you need to modify the calculator. I've done something similar before.

Add a new input stream with packet specifying the texture resource path. Also add a private variable to store the current texture (could be empty by design). Remove texture setting from input side packet.
Use SyncSetInputStreamHandler for your new calculator in pbtxt, separate original input streams and the new one into two sets.
at Process() function of your calculator, if original set of packets is received, just render with current texture as usual. If texture path packet is received, select/load the target texture, reassign current texture and return.
At application level, bind the UI (say double tap event) with sending the next texture path packet. Note that the timestamp must be monotonically increasing. For example like Frame(t0) -> Texture(t1) -> Frame(t2).

Hope this helps.

Thank you for your great reply. I will do it and tell the result here.

@brucechou1983 thanks for reply. i've actually modified the existing effect_renderer.cc to fit my needs(although i'm not using a SyncSetInputStreamHandler here). but the app freezes and is being killed after i switch about 20-25 effects (this threshold actually depends on the device). i am suspecting an OOM here prolly because i'm leaking memory somewhere. i've looked into it for 2 days not but can't figure out why the app is being killed. here is my modified effect_renderer.cc:
#include <memory>
#include <string>
#include <vector>

#include "absl/types/optional.h"
#include "mediapipe/framework/calculator_framework.h"
#include "mediapipe/framework/formats/image_frame.h"
#include "mediapipe/framework/formats/image_frame_opencv.h"
#include "mediapipe/framework/port/opencv_core_inc.h"       // NOTYPO
#include "mediapipe/framework/port/opencv_imgcodecs_inc.h"  // NOTYPO
#include "mediapipe/framework/port/opencv_imgproc_inc.h"    // NOTYPO
#include "mediapipe/framework/port/ret_check.h"
#include "mediapipe/framework/port/status.h"
#include "mediapipe/framework/port/status_macros.h"
#include "mediapipe/framework/port/statusor.h"
#include "mediapipe/gpu/gl_calculator_helper.h"
#include "mediapipe/gpu/gpu_buffer.h"
#include "mediapipe/modules/face_geometry/libs/effect_renderer.h"
#include "mediapipe/modules/face_geometry/libs/validation_utils.h"
#include "mediapipe/modules/face_geometry/protos/environment.pb.h"
#include "mediapipe/modules/face_geometry/protos/face_geometry.pb.h"
#include "mediapipe/modules/face_geometry/protos/mesh_3d.pb.h"
#include "mediapipe/util/resource_util.h"

namespace mediapipe {
namespace {

static constexpr char kEnvironmentTag[] = "ENVIRONMENT";
static constexpr char kImageGpuTag[] = "IMAGE_GPU";
static constexpr char kMultiFaceGeometryTag[] = "MULTI_FACE_GEOMETRY";

static constexpr char kEffectTexturePathTag[] = "TEXTURE_PATH";
static constexpr char kEffectMesh3dPathTag[] = "MESH3D_PATH";
static constexpr char kRenderFlag[] = "RENDER_FLAG";

class CustomEffectRendererCalculator : public CalculatorBase {
 public:
  static absl::Status GetContract(CalculatorContract* cc) {
    MP_RETURN_IF_ERROR(mediapipe::GlCalculatorHelper::UpdateContract(cc))
        << "Failed to update contract for the GPU helper!";

    cc->InputSidePackets()
        .Tag(kEnvironmentTag)
        .Set<face_geometry::Environment>();
    cc->Inputs().Tag(kImageGpuTag).Set<GpuBuffer>();

    cc->Inputs().Tag(kEffectTexturePathTag).Set<std::string>();
    cc->Inputs().Tag(kRenderFlag).Set<bool>();

    if (cc->Inputs().HasTag(kEffectMesh3dPathTag)) {
      cc->Inputs().Tag(kEffectMesh3dPathTag).Set<std::string>();
    }

    cc->Inputs()
        .Tag(kMultiFaceGeometryTag)
        .Set<std::vector<face_geometry::FaceGeometry>>();
    cc->Outputs().Tag(kImageGpuTag).Set<GpuBuffer>();

    return mediapipe::GlCalculatorHelper::UpdateContract(cc);
  }

  absl::Status Open(CalculatorContext* cc) override {
    cc->SetOffset(mediapipe::TimestampDiff(0));
    MP_RETURN_IF_ERROR(gpu_helper_.Open(cc))
        << "Failed to open the GPU helper!";

    return gpu_helper_.RunInGlContext([&]() -> absl::Status {
      environment_ = cc->InputSidePackets()
                         .Tag(kEnvironmentTag)
                         .Get<face_geometry::Environment>();
      MP_RETURN_IF_ERROR(face_geometry::ValidateEnvironment(environment_))
          << "Invalid environment!";
      return absl::OkStatus();
    });
  }

  absl::Status Process(CalculatorContext* cc) override {
    auto texture_path =
        cc->Inputs().Tag(kEffectTexturePathTag).Get<std::string>();
    if (texture_path != "") {
      current_texture_path = texture_path;
      current_mesh_3d_path =
          cc->Inputs().HasTag(kEffectMesh3dPathTag)
              ? cc->Inputs().Tag(kEffectMesh3dPathTag).Get<std::string>()
              : "";

      ReadFromInputStream(cc, current_texture_path, current_mesh_3d_path);
      initialized = true;

      cc->Outputs()
          .Tag(kImageGpuTag)
          .AddPacket(
              cc->Inputs().Tag(kImageGpuTag).Value().At(cc->InputTimestamp()));
      return absl::OkStatus();
    }

    if (!cc->Inputs().Tag(kImageGpuTag).IsEmpty()) {
      bool render_flag = cc->Inputs().Tag(kRenderFlag).Get<bool>();
      if (initialized && render_flag) {
        Render(cc);
        return absl::OkStatus();
      } else {
        cc->Outputs()
            .Tag(kImageGpuTag)
            .AddPacket(cc->Inputs()
                           .Tag(kImageGpuTag)
                           .Value()
                           .At(cc->InputTimestamp()));
        return absl::OkStatus();
      }
    }

    return absl::OkStatus();
  }

  ~CustomEffectRendererCalculator() {
    gpu_helper_.RunInGlContext([this]() { effect_renderer_.reset(); });
  }

 private:
  absl::Status ReadFromInputStream(CalculatorContext* cc,
                                   const std::string& texture_path,
                                   const std::string& mesh_3d_path) {
    return gpu_helper_.RunInGlContext([&]() -> absl::Status {
      absl::optional<face_geometry::Mesh3d> effect_mesh_3d;
      if (mesh_3d_path != "") {
        ASSIGN_OR_RETURN(effect_mesh_3d, ReadMesh3dFromFile(mesh_3d_path),
                         _ << "Failed to read the effect 3D mesh from file!");
      }

      ASSIGN_OR_RETURN(ImageFrame effect_texture,
                       ReadTextureFromFile(texture_path),
                       _ << "Failed to read the effect texture from file!");

      effect_renderer_.reset();
      ASSIGN_OR_RETURN(effect_renderer_,
                       CreateEffectRenderer(environment_, effect_mesh_3d,
                                            std::move(effect_texture)),
                       _ << "Failed to create the effect renderer!");

      return absl::OkStatus();
    });
  }

  absl::Status Render(CalculatorContext* cc) {
    return gpu_helper_.RunInGlContext([this, cc]() -> absl::Status {
      const auto& input_gpu_buffer =
          cc->Inputs().Tag(kImageGpuTag).Get<GpuBuffer>();

      GlTexture input_gl_texture =
          gpu_helper_.CreateSourceTexture(input_gpu_buffer);

      GlTexture output_gl_texture = gpu_helper_.CreateDestinationTexture(
          input_gl_texture.width(), input_gl_texture.height());

      std::vector<face_geometry::FaceGeometry> empty_multi_face_geometry;
      const auto& multi_face_geometry =
          cc->Inputs().Tag(kMultiFaceGeometryTag).IsEmpty()
              ? empty_multi_face_geometry
              : cc->Inputs()
                    .Tag(kMultiFaceGeometryTag)
                    .Get<std::vector<face_geometry::FaceGeometry>>();

      // Validate input multi face geometry data.
      for (const face_geometry::FaceGeometry& face_geometry :
           multi_face_geometry) {
        MP_RETURN_IF_ERROR(face_geometry::ValidateFaceGeometry(face_geometry))
            << "Invalid face geometry!";
      }

      MP_RETURN_IF_ERROR(effect_renderer_->RenderEffect(
          multi_face_geometry, input_gl_texture.width(),
          input_gl_texture.height(), input_gl_texture.target(),
          input_gl_texture.name(), output_gl_texture.target(),
          output_gl_texture.name()))
          << "Failed to render the effect!";

      std::unique_ptr<GpuBuffer> output_gpu_buffer =
          output_gl_texture.GetFrame<GpuBuffer>();

      cc->Outputs()
          .Tag(kImageGpuTag)
          .AddPacket(mediapipe::Adopt<GpuBuffer>(output_gpu_buffer.release())
                         .At(cc->InputTimestamp()));

      output_gl_texture.Release();
      input_gl_texture.Release();

      return absl::OkStatus();
    });
  }

  static absl::StatusOr<ImageFrame> ReadTextureFromFile(
      const std::string& texture_path) {
    ASSIGN_OR_RETURN(std::string texture_blob,
                     ReadContentBlobFromFile(texture_path),
                     _ << "Failed to read texture blob from file!");

    // Use OpenCV image decoding functionality to finish reading the texture.
    std::vector<char> texture_blob_vector(texture_blob.begin(),
                                          texture_blob.end());
    cv::Mat decoded_mat =
        cv::imdecode(texture_blob_vector, cv::IMREAD_UNCHANGED);

    RET_CHECK(decoded_mat.type() == CV_8UC3 || decoded_mat.type() == CV_8UC4)
        << "Texture must have `char` as the underlying type and "
           "must have either 3 or 4 channels!";

    ImageFormat::Format image_format = ImageFormat::UNKNOWN;
    cv::Mat output_mat;
    switch (decoded_mat.channels()) {
      case 3:
        image_format = ImageFormat::SRGB;
        cv::cvtColor(decoded_mat, output_mat, cv::COLOR_BGR2RGB);
        break;

      case 4:
        image_format = ImageFormat::SRGBA;
        cv::cvtColor(decoded_mat, output_mat, cv::COLOR_BGRA2RGBA);
        break;

      default:
        RET_CHECK_FAIL()
            << "Unexpected number of channels; expected 3 or 4, got "
            << decoded_mat.channels() << "!";
    }

    ImageFrame output_image_frame(image_format, output_mat.size().width,
                                  output_mat.size().height,
                                  ImageFrame::kGlDefaultAlignmentBoundary);

    output_mat.copyTo(formats::MatView(&output_image_frame));

    return output_image_frame;
  }

  static absl::StatusOr<face_geometry::Mesh3d> ReadMesh3dFromFile(
      const std::string& mesh_3d_path) {
    ASSIGN_OR_RETURN(std::string mesh_3d_blob,
                     ReadContentBlobFromFile(mesh_3d_path),
                     _ << "Failed to read mesh 3D blob from file!");

    face_geometry::Mesh3d mesh_3d;
    RET_CHECK(mesh_3d.ParseFromString(mesh_3d_blob))
        << "Failed to parse a mesh 3D proto from a binary blob!";

    return mesh_3d;
  }

  static absl::StatusOr<std::string> ReadContentBlobFromFile(
      const std::string& unresolved_path) {
    ASSIGN_OR_RETURN(std::string resolved_path,
                     mediapipe::PathToResourceAsFile(unresolved_path),
                     _ << "Failed to resolve path! Path = " << unresolved_path);

    std::string content_blob;
    MP_RETURN_IF_ERROR(
        mediapipe::GetResourceContents(resolved_path, &content_blob))
        << "Failed to read content blob! Resolved path = " << resolved_path;
    LOG(INFO) << "JEDI::MEDIAPIPE:: read file with path " << resolved_path
              << " successfully";

    return content_blob;
  }

  mediapipe::GlCalculatorHelper gpu_helper_;
  face_geometry::Environment environment_;
  std::unique_ptr<face_geometry::EffectRenderer> effect_renderer_;
  std::string current_texture_path = "";
  std::string current_mesh_3d_path = "";
  bool initialized = false;
};

}  // namespace

using CustomFaceGeometryEffectRendererCalculator =
    CustomEffectRendererCalculator;

REGISTER_CALCULATOR(CustomFaceGeometryEffectRendererCalculator);

}  // namespace mediapipe

well, maybe things are not that complicated. Like video games do, do just load/unload model/texture with respect to user input.
A windows port of face_effect is here to demonstrate it. Built by visual studio 2019/2022 makes it easier to debug and see what's really going on.


Bug: raise jsonrpc exceptions in python

Describe what you are looking for
Return actual errors from python server, and raise them in Client
Can you contribute to the implementation?

[X] I can contribute

Is your feature request specific to a certain interface?
Official Python bindings
Contact Details
No response
Is there an existing issue for this?

[X] I have searched the existing issues

Code of Conduct

[X] I agree to follow this project's Code of Conduct

Partially (Client side) fixed with https://github.com/unum-cloud/ujrpc/pull/34


NIFI-8270: Fixed issue to show property dependent on default value of another

Thank you for submitting a contribution to Apache NiFi.
Please provide a short description of the PR here:
Description of PR
The properties object of a created Controller Service was populated with null values rather than default values. This causes a property dependent on the default value of another property to be hidden when instead it should be displayed. This PR populates the property value based on the property's default value.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:

[x] Is there a JIRA ticket associated with this PR? Is it referenced
in the commit message?

[x] Does your PR title start with NIFI-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character.

[x] Has your PR been rebased against the latest commit within the target branch (typically main)?

[x] Is your initial contribution a single, squashed commit? Additional commits in response to PR reviewer feedback should be made on this branch and pushed to allow change tracking. Do not squash or use --force when pushing to allow for clean monitoring of changes.

For code changes:

[ ] Have you ensured that the full suite of tests is executed via mvn -Pcontrib-check clean install at the root nifi folder?
[ ] Have you written or updated unit tests to verify your changes?
[x] Have you verified that the full build is successful on JDK 8?
[ ] Have you verified that the full build is successful on JDK 11?
[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?
[ ] If applicable, have you updated the LICENSE file, including the main LICENSE file under nifi-assembly?
[ ] If applicable, have you updated the NOTICE file, including the main NOTICE file found under nifi-assembly?
[ ] If adding new Properties, have you added .displayName in addition to .name (programmatic access) for each of the new properties?

For documentation related changes:

[ ] Have you ensured that format looks appropriate for the output in which it is rendered?

Note:
Please ensure that once the PR is submitted, you check GitHub Actions CI for build issues and submit an update to your PR as soon as possible.

+1 Verified a Controller Service properties object is now populated with default values. Properties that are dependent on a default value are now showing correctly. Verified by checking the JsonTreeReader Controller Service. Thanks.


isNotifiable cannot receive data

Prerequisites
Please answer the following questions for yourself before submitting an issue. YOU MAY DELETE THE PREREQUISITES SECTION.

[ yes] I am running the latest version
[ yes] I checked the documentation and found no answer
[ yes] I checked to make sure that this issue has not already been filed
[yes ] I'm sure that question is related to the library itself and not Bluetooth Low Energy or Classic in general. If that so, please post your question on StackOverflow or on our Gitter channel.

Question
Please describe the question.
My device using oximeter, thermometer, blood pressure and i want to get notification from device when devices have a new data
Here is my characteristic value
deviceID : "C0:26:DA:04:75:48"
id: 38
isIndicatable: false
isNotifiable: true
isNotifying: false
isReadable: false
isWritableWithResponse: true
isWritableWithoutResponse: false
serviceID: 37
serviceUUID: "00001523-1212-efde-1523-785feabcd123"
uuid: "00001524-1212-efde-1523-785feabcd123"
value: null

and here is my code for start notification
characteristics.forEach(async (cha) => {
    console.log('CHA', cha);
    var deviceID = cha.deviceID;
    var serviceUUID = cha.serviceUUID;
    var uuid = cha.uuid;

    if(cha.isNotifiable === true){
      console.log("characteristic foreach start")
      console.log(cha);
      cha.monitor((err, update) => {
          if (err) {
              console.log(`characteristic error: ${err}`);
              console.log(JSON.stringify(err));
          } else {
              var data = parseInt(base64.decode(update.value));
              console.log(data);
          }
      });
  }

and i also try
monitorCharacteristicForService
monitorCharacteristicForDevice
still not get notification from device what should i do please help

I tested your code
  const monitorForAllAvailableCharacteristics = () => {
    BLEService.getCharacteristicsForDevice(deviceTimeService).then(characteristics => {
      if (!characteristics) {
        throw new Error('characteristics error')
      }

      characteristics.forEach(async cha => {
        if (cha.isNotifiable === true) {
          console.log(`started monitor for: ${cha.uuid}`)
          cha.monitor((err, update) => {
            if (err) {
              console.log(`characteristic error: ${err}`)
              console.log(JSON.stringify(err))
            } else {
              console.log(`received message: ${base64.decode(update?.value)}`)
            }
          })
        }
      })
    })
  }

output:
 LOG  started monitor for: 00002a2b-0000-1000-8000-00805f9b34fb
 LOG  received message: This code works

and it works fine.
Can you tell me what steps you take before your function?


Missing Flag for Netherlands Antilles

Missing the flag in the sprite and CSS for Netherlands Antilles.

@tyler-willowtree Unfortunately, it's not supported by google/libphonenumber: https://github.com/google/libphonenumber/blob/master/resources/ShortNumberMetadata.xml


Web Request when behind a work proxy

At work where I am currently using Node-RED for some automation in-house, I am unable to determine how to get Node-RED to work with our firewall, it is a typically HTTP firewall, but I can not find a setting to configure this, nor can I find where in the source web requests are made, so I could not create a PR for this.
I've searched the issues and most other proxy issues seem to be WebSockets related. This is for Web Requests, not the communication between the front and backend of Node-RED itself.
Cheers, and thanks for this beautiful tool.

:+1: This seems like a cool project; I'm just working my way through the tutorials. Getting stuck on creating your second flow due to corporate proxy server.

@matttrawicki
thanks for that - actually not totally crude - seems like a minimally intrusive approach. Settings is the right place to put this - only thing I'll change is the settings property names to be more inline with those we already have - ie  httpNodeProxy and httpNodeProxyPort.
That and https traffic needs to be handled slightly more carefully - https://stackoverflow.com/questions/3862813/how-can-i-use-an-http-proxy-with-node-js-http-client
Am on the case.

Pushed a version of this as  commit 17f3366556de24f24bcc900c32c2511b38a6348d
Supports https via the http proxy also

Thanks for jumping on the change. Is a similar change necessary for some of the other nodes? As far as testing this change, Node 0.12 had been working for me with 0.10.6 from npm. Cloning master not so happy "TypeError: argument entity must be string, Buffer, or fs.Stats" (https://github.com/node-red/node-red/issues/565). If someone else can verify this change, great, else I can revert back to Node 0.10 next week. At the moment I'm on Windows so no nvm.

Yes, any other node that makes http requests under the covers will need to pick up and apply this setting - there isn't a way we can apply it on behalf of nodes.

Is this now two issues ? Are you saying the change caused it to break on Node v0.12 ? (which we don't yet support) - or that when you got the git version in order to get the fix something else then broke in v0.12 ?
And then re other nodes - as Nick says there's ot much we can do for all the third party npm modules out there apart from raise issues on their projects... which anyone can do.... - I was thinking that a fairly common idiom is the use of an environment variable http_proxy etc... at the OS level - I have no idea if other nodes that use http under the covers honour that already ? If we find out that a few do - we could also pick that up for our http-request node ?
Are there any other nodes that we own that we ought to handle ?

Any breakage in 0.12 is not a 'new' issue - we've not started looking at 0.12 support yet, so if there were any new breakage, it doesn't count ... ;)
For nodes we maintain, I suspect the WebSocket node in client mode will need looking at, as well as all the social nodes (twitter, and all the web nodes).

@matttrawicki  - I've had a change of mind... - I'm reimplementing this to use an external environment variable http_proxy  instead of using our settings file - This is because the require npm we use in other nodes (eg Twitter etc) already supports it - so by doing that it "should just work" in more places....
so this change will break you until you set the environment variable at the OS level... and then restart Node-RED eg for Linux
export http_proxy=http://myproxy.co,uk:8080

Just thought I'd make a note.
https_proxy is a common environ-var also.

exactly... :-) let's use the standard...

If we are doing the full implementation, NO_PROXY (no_proxy) is used as a comma separated list of urls/addresses to not use the proxy for. Perhaps there is a module that already obeys these rules? It would be adding one more dependency, but saves rolling your own implementation.

I've some trouble with a "standard" http_proxy environment variable with username and password, like this:
http_proxy=http://:@:
Could you help me?
Thank you

@elle2
You should be able to set username and password as follows:
export HTTP_PROXY=http://user:password@foo.com:8080
(I assume you put something similar to this in but used angle brackets?)
Can you expand a little on what problems you are seeing?

@hardillb
Yes I've set username and password like you suggest but using "http request" node with http:www.google.com  I've no valid http response . It's ok if I use the same URL in a browser, so the enviroment variable it's ok.

yup... mea culpa... bad regex... will work on it.

have pushed a fix that is slightly more relaxed - but am on the road so can't fully test it from here - feedback appreciated.

I have the same error.
Into console I see:
MATCH [ 'http://username:password@xxx.xxx.xxx.xxx:8080',
'http://',
<EMAIL_ADDRESS>'8080',
index: 0,
input: 'http://username:password@xxx.xxx.xxx.xxx:8080' ]
I suppose the issue is with match[2] since there isn't an hostname and I see in tcpdump log several DNS query to resolve an hostname<EMAIL_ADDRESS>

Thanks for that... pushed another fix - this time letting urllib parse the proxy (which should do a better job than I at picking out the userid:password)

Closing as I believe this all works now - will be available in the imminent 0.10.8 release.

Works great with environment variable. Thanks a ton!

Hello,
I'm having a problem similar to the one in this thread.
I have two raspberry pi with raspbian stretch lite, in them is node-network V0.19.4. One raspi I have it in my house, the other one in my work, the one that is in my work I have it behind a web proxy. both are identical except for the latter, the work is after a proxy.
Well, I have a flow inject-> http request-> debug the url of the http node is something like "https://api.telegram.org/bot57:AAElikjZOEMU/sendMessage?chat_id=-2647&text=Test from home"
In the home node-network works perfectly, in the node-network of the work does not work, gives the error: "" Error: tunneling socket could not be established, cause = connect EINVAL <IP_ADDRESS>:80 - Local (<IP_ADDRESS> : 0) ""
I have adjusted the proxy both in the linux system, and in the nodered.service file, but I can not get it to work.
how can I solve that?


App terminates after showing main screen.

Hi there,
I have followed all the steps correctly except facebook setup. I can register the user on my firebase account but after that the app gets terminate after showing the main layout screen.  Please help me. I want to use this as my final year project(200 marks) :(

What is your project? In which university you study?

Can you please send a copy of the stack trace, and your google-services.json file and the BDefines.java file?
Also, bear in mind that you are not allowed to remove any copyright information from the project. Claiming that you wrote the project would be both a breach of the licensing conditions and plagiary and is definitely not recommended.


feat(macos): integrate Sparkle autoupdate framework

This does a couple things:

adds an oni2_sparkle library
brings in Sparkle.framework
separates out the release-based scripts to an @release namespace
add both Feature_AutoUpdate and Service_AutoUpdate projects
probably other things I'm forgetting

This is still WIP, but I'm making good progress so hopefully it should be done (relatively) soon!

@bryphe I tried merging master, but I got the following dependency error (even after deleting _esy & .esy):
Conflicting constraints:
  Oni2 -><EMAIL_ADDRESS>  Oni2 -> revery -> flex -><EMAIL_ADDRESS><=4.10.0

Were you able to get around this somehow? Should I just pin ocaml to 4.10.1002 in resolutions?

@bryphe I tried merging master, but I got the following dependency error (even after deleting _esy & .esy):

Hmm, ya, I'm seeing this too merging up your branch - looks like the version constraint is tight on flex - anything over 4.10.0 will be rejected. I opened a PR to loosen this up, and added it as a resolution: https://github.com/jordwalke/flex/pull/28

/azp run

/azp run

/azp run

/azp run

Finally got a green CI build! @bryphe ready to merge when you are!

Thanks for all your hard work on this, @zbaylin ! Very exciting to have an auto-update story for OSX 🚀


Reconcile only when spec change for the OperandConfig and OperandRegistry

/kind feature
Describe the solution you'd like
[A clear and concise description of what you want to happen.]
Anything else you would like to add:
[Miscellaneous information that will assist in solving the issue.]

done


Pseudoterminal handleInput does not catch Terminal.sendText

Info:

VSCode Version: 1.41.1
OS Version: Windows 10

Issue:
This code creates a pseudoterminal and tries to write a string to it:
const writeEmitter = new vscode.EventEmitter<string>();
const pty: vscode.Pseudoterminal = {
    onDidWrite: writeEmitter.event,
    open: () => writeEmitter.fire('Opening terminal!'),
    close: () => {},
    handleInput: data => writeEmitter.fire(data === '\r' ? '\r\n' : data)
};
let terminal = vscode.window.createTerminal({ name: "test", pty });
terminal.sendText("test");

However the handleInput does not catch the sendText command and no text is printed.
The docs do mention that it catches sendText():

handleInput(data: string): void

Implement to handle incoming keystrokes in the terminal or when an extension calls Terminal.sendText. data contains the keystrokes/text serialized into their corresponding VT sequence representation.

Typing in the pseudoterminal does trigger handleInput.

Not yet confirmed.

I was really hoping to integrate the pseudoterminal into my extension for as an interface for input and output, but without this functionality, that's not possible.

I've also written here https://github.com/microsoft/vscode/issues/92826#issuecomment-622396926.
I see the same issue but only sometimes. Could not detect a pattern when it does work and when it fails.

Likely related to this async:
https://github.com/Microsoft/vscode/blob/e880f7ef3d2ca036a8467cb65fa3e6d64ef0d3e4/src/vs/workbench/api/common/extHostTerminalService.ts#L133-L133
And the fact we use ? here:
https://github.com/Microsoft/vscode/blob/c1427cc3292c7658cfc04127bbd651f4aefe5cfe/src/vs/workbench/api/browser/mainThreadTerminalService.ts#L186-L186
I expect waiting briefly after createTerminal before calling sendText would workaround the problem.

As far as I can tell, writeEmitter.fire only writes to the terminal from the point that pty.open is called.
But the terminal is not opened immediately upon vscode.window.createTerminal, which means that at the point of terminal.sendText("test") it is not yet open.
If you do this in a function registered to a command, and have a breakpoint on terminal.sendText("test"), you'll notice that at this point the terminal is indeed not yet visible in the UI. It only appears after the function / command has finished.
What I take from that is that it is necessary to create the terminal in the activate function, so that it is already open when later commands are executed.
What might be good is a way to check whether the terminal is open. terminal.state would be the logical place, but TerminalState only has the property isInteractedWith.

What I take from that is that it is necessary to create the terminal in the activate function, so that it is already open when later commands are executed.

I realized that's not enough: What if the user closed the terminal? Then a new one needs to be created upon use, but that doesn't help because it's not usable right away.

Encountered this issue too, please fix :)


Update readme

create readme

note the connector docs link will not work until this branch is merged into staging


provision: Run apt-get update on catching an error.

For broken apt cache, we run the command apt-get update on catching the error.

Merged as 0e5fdcea3f5e06e56db555679c58ac38d79913a5, after expanding the explanatory comment to help future developers of this tool.  Thanks @rheaparekh!


Add postcss-extend

Adding postcss-extend would allow users to combine tachyons to build their own custom classes.
For example, if you add the css on the left to _styles.css in tachyons/src, you could get the pretty buttons on the right with just one class.

oooooo
aaaaah

Unfortunately, I don't see any places in the core tachyons where this would be helpful.

Actually, one place that may benefit from this, at least size-wise: skin-pseudos.
.white { color: var(--white); }
.hover-white:hover,
.hover-white:focus { color: var(--white); }

creates
.white { color: #fff; }
.hover-white:hover,
.hover-white:focus { color: #fff; }

meanwhile
.white { color: var(--white); }
.hover-white:hover,
.hover-white:focus { @extend .white; }

would create
.white,
.hover-white:hover,
.hover-white:focus { color: #fff; }

Finally got test results, reduces min (non gzip) size by 2,400 bytes.

I just realized my screenshot above is working off a branch of postcss-extend. The below code does the same thing, but is more verbose, if you wanted to test.
.button {
  @extend .border-box;
  @extend .dib;
  @extend .ma1;
  @extend .ph3;
  @extend .pv1;
  @extend .ba;
  @extend .bw2;
  @extend .b--navy;
  @extend .hover-b--blue;
  @extend .f6;
  @extend .b;
  @extend .tracked;
  @extend .white;
  @extend .bg-dark-blue;
  @extend .hover-bg-blue;
  @extend .br2;
  @extend .pointer;
  @extend .no-underline;
}

Thanks for the PR!
Long story short, we don't want to directly advocate for using extend as we think it is a bit of an anti-pattern (something that is a blog post in and of itself). However, we would like to expose the ability to use postcss-extend, or any other plugin through our build tooling.
If you'd like (or I can if you don't have the time), we could amend this PR to make tachyons-build-css accept an optional array of plugins if that makes sense? That way postcss-extend, and any other plugin a user would like to leverage can be optionally added to the postcss build system.

That does make sense, I'll see what I can do!

Having looked into this a little more, I think most users who want to extend or build upon tachyons would include the src folder from the tachyons repository into their own build system.
I agree with your decision to not combine selectors using extend (more modular, easier to understand), it's an excellent call. If you still want me to look into adding an optional array for more build tools, let me know.


Remote (non localhost) address support

If one hosts it on public IP / address, then it throws the error WebSocket connection to 'ws://localhost:8000/ws' failed:
Changing client/scripts.js localhost value to my host's IP worked but obviously, it won't work for next update.
I started the app uvicorn main:app --reload --host <IP_ADDRESS>
Can we support remote addresses please?

Can you try with the following?
uvicorn main:app --host <IP_ADDRESS> --port 8000

Hi @shon it is in my backlog. feel free to work on it and add a pull request!

Hi @shon it is in my backlog. feel free to work on it and add a pull request!

Done. Have a look https://github.com/assafelovic/gpt-researcher/pull/63
And thanks for this amazing tool


Error with Nix 2.8

Running
$ > nix run flake.nix#signdiv /tmp/falsisign/Signature_guide.pdf

yields
path '/tmp/falsisign.nix/flake.nix' does not contain a 'flake.nix', searching up
error: attribute 'apps.x86_64-linux.signdiv' should have type 'app'

@gvolpe no, as this is related to signdiv. I did not manage to fix it, unfortunately

Unfortunately it does not. I will have a look at it later in the day

As you might have guessed, I forgot about it
I will have a look today

No worries, there's no rush :)


orElse abstraction on Option not behaving as expected

return Seq(Tuple.of(currTxn, maybeLatestTxn))
                .flatMap(tuple ->
                        checkNew.apply(c1, c2, s1, s2, tuple._1, tuple._2)
                                .orElse(checkDowngrade.apply(c1, c2, s1, s2, tuple._1, tuple._2)
                                        .orElse(checkUpgrade.apply(c1, c2, s1, s2, tuple._1, tuple._2))
                                            .orElse(checkRenew.apply(c1, c2, s1, s2, tuple._1, tuple._2))
                                                .orElse(checkExpire.apply(c1, c2, s1, s2, tuple._1, tuple._2))
                                )
                ).toTry();

private Function6<Integer, Option<Integer>, String, Option<String>,
            TransactionData, Option<TransactionData>, Option<TransactionData>> checkNew =
            (c1, c2, s1, s2, tx1, tx2) -> Seq(tx1)
                    .filter(t -> tx2.equals(Option.none()))
                    .map(t -> t.setEvent(DBEvent.CREATE))
                    .toOption();

default Option<T> orElse(Option<? extends T> other) {
        Objects.requireNonNull(other, "other is null");
        return isEmpty() ? (Option<T>) other : this;
    }

@SuppressWarnings("unchecked")
   default Option<T> orElse(Supplier<? extends Option<? extends T>> supplier) {
        Objects.requireNonNull(supplier, "supplier is null");
        return isEmpty() ? (Option<T>) supplier.get() : this;
    }

I have this code where I am kind of applying functions in a chain operation if the output of the previous func is None where I am using  a orElse abstraction to achieve this, but the problem I am facing is even if I get the output of the first func checkNew as Option<TransactionData> its still evaluating the next function checkDowngrade and it breaks my code as I am not expecting a None somewhere in the func evaluation which should ideally not happen.
Digging further I found out that there are 2 abstractions of orElse available in the type which i have mentioned above in the code block.
I noticed with a dummy example that If I use the second one which take a supplier it works as expected where it would not execute further if the o/p of the previous if None. But somehow when I am using the library it automatically uses the first abstraction of orElse which faces the problem I stated above. Is there something that I am missing here ?
@danieldietrich

Thank you for your question. I took me some time to get your example compiling because there are missing many type informations. For the next time it would help me if you could provide a more minimal and complete example.
This is what I've come up with:
import javaslang.control.Option;
import javaslang.control.Try;

import static javaslang.API.*;

public class Test {

    Try<TransactionData> test(int c1, Option<Integer> c2, String s1, Option<String> s2, TransactionData currTxn, Option<TransactionData> maybeLatestTxn) {
        return Seq(Tuple.of(currTxn, maybeLatestTxn))
                .flatMap(tuple ->
                        checkNew.apply(c1, c2, s1, s2, tuple._1, tuple._2)
                                .orElse(checkDowngrade.apply(c1, c2, s1, s2, tuple._1, tuple._2))
                                .orElse(checkUpgrade.apply(c1, c2, s1, s2, tuple._1, tuple._2))
                                .orElse(checkRenew.apply(c1, c2, s1, s2, tuple._1, tuple._2))
                                .orElse(checkExpire.apply(c1, c2, s1, s2, tuple._1, tuple._2))
                ).toTry();
    }

    private Function6<Integer, Option<Integer>, String, Option<String>,
            TransactionData, Option<TransactionData>, Option<TransactionData>> checkNew =
            (c1, c2, s1, s2, tx1, tx2) -> Seq(tx1)
                        .filter(t -> tx2.equals(Option.none()))
                        .map(t -> t.setEvent(DBEvent.CREATE))
                        .toOption();

    private Function6<Integer, Option<Integer>, String, Option<String>,
            TransactionData, Option<TransactionData>, Option<TransactionData>> checkDowngrade = null;

    private Function6<Integer, Option<Integer>, String, Option<String>,
            TransactionData, Option<TransactionData>, Option<TransactionData>> checkUpgrade = null;

    private Function6<Integer, Option<Integer>, String, Option<String>,
            TransactionData, Option<TransactionData>, Option<TransactionData>> checkRenew = null;

    private Function6<Integer, Option<Integer>, String, Option<String>,
            TransactionData, Option<TransactionData>, Option<TransactionData>> checkExpire = null;

    interface TransactionData {
        TransactionData setEvent(DBEvent dbEvent);
    }

    enum DBEvent {
        CREATE
    }

}

Because it does compile, the types are right. Is this what your types look like, especially for the functions I added?
I understand that there are two types of orElse signatures. But I can't see a compiler conflict here.
Which IDE/compiler do you use? Eclipse/ECJ or IntelliJ IDEA/javac?
Thx
- Daniel

Which version of Javaslang do you use?

I think you use 2.1.0-alpha because of the API.Seq(...) factory method.
I highly recommend to use the latest stable bugfix release (currently 2.0.5).
Your code can be simplified like this:
    return Option.of(Tuple.of(currTxn, maybeLatestTxn))
            .flatMap(tuple ->
                    checkNew.apply(c1, c2, s1, s2, tuple._1, tuple._2)
                            .orElse(checkDowngrade.apply(c1, c2, s1, s2, tuple._1, tuple._2))
                            .orElse(checkUpgrade.apply(c1, c2, s1, s2, tuple._1, tuple._2))
                            .orElse(checkRenew.apply(c1, c2, s1, s2, tuple._1, tuple._2))
                            .orElse(checkExpire.apply(c1, c2, s1, s2, tuple._1, tuple._2))
            ).toTry(() -> new Error("Can't create TransactionData"));

I used Option instead of Seq and toTry instead of toOption. Given that you are able to provide a meaningful error message (instead of NoSuchElementException(...)).

Regarding your initial question: You have to use Suppliers with orElse in order to ensure that check* aren't evaluated if not necessary(!), i.e.
    return Option.of(Tuple.of(currTxn, maybeLatestTxn))
            .flatMap(tuple ->
                    checkNew.apply(c1, c2, s1, s2, tuple._1, tuple._2)
                            .orElse(() -> checkDowngrade.apply(c1, c2, s1, s2, tuple._1, tuple._2))
                            .orElse(() -> checkUpgrade.apply(c1, c2, s1, s2, tuple._1, tuple._2))
                            .orElse(() -> checkRenew.apply(c1, c2, s1, s2, tuple._1, tuple._2))
                            .orElse(() -> checkExpire.apply(c1, c2, s1, s2, tuple._1, tuple._2))
            ).toTry(() -> new Error("Can't create TransactionData"));

I hope this helps.
I'm pretty sure that the current Option methods work, there is no error. The functionality is well covered by unit tests.
If you don't mind, I will close the issue.

@danieldietrich I am using the 2.1.0-alpha as u said because of the await functionality on the Future<T> which I needed the most in my code. I am using Intellij Idea 2017 as my IDE. If I switch to the 2.0.5 I have to replace my code where await() on Future<T> does not return Future<T>.I know there is a workaround for it but just wanted that functionality so used the latest version.

@Vivek-Patil If you do not have any transitive dependencies that depend on Javaslang, you may use 2.1.0-alpha. Currently I'm preparing 2.1.0-beta.
I also use IntelliJ IDEA 2017. The code I've written above works with 2.0.5 and 2.1.0-alpha. Please use orElse with Suppliers and all should be fine.

@danieldietrich Also why is it such that I have to replace toOption() with toTry() ? It should also work on even if I return a topOption(), but it takes me to the orElse()` with one not using the supplier. Is it something because of the javaslang latest alpha version ?

No, toOption() is perfectly fine. But I replaced Seq with Option at the beginning. I see no reason to use a collection. The natural use-case is to use an Option directly. However, it is your choice.
I will close this issue because there is no reason to change the code-base. Feel free to ask more question in this issue if still something isn't clear to you.

@danieldietrich Yes, sorry mistyped it, I wanted to ask why changing the Seq withOption is taking me to the correct orElse() abstraction. Any specific reason ? Because my initial code still does not work with Seq. The problem is fixed as u said, but just curious to know as of why changing Seq with Option changed the behaviour ?

@danieldietrich How can I force it to use orElse with suppliers because even if I do that in Intellij it still takes me to the one with orElse with no supplier. I really dont know what might be going wrong here. Do u have any idea ?

@danieldietrich Got it. You replaced the function provided in the orElse block to a explicit function argument which I did not notice as it takes a supplier. Thanks for your immediate help.
Thanks
Vivek


Favorite & Randomize sprites and MSU packs

There's more and more sprites and MSU packs coming out and the list keeps getting larger and larger.
Being able to mark sprites and packs as favorites and being able to select "Random" or "Random favorite" for each would be a fantastic addition.
Notes:

[ ] The "Random" or "Random favorite" option should be saved so you don't have to re-select "random" every time.
[ ] Selecting "Random" shouldn't have Tracker use "Random" as the character's name in hints.
[ ] Bonus points if you prevent rolling the same option too often (whether using weights or otherwise)

In regards to this, I know you started doing the MSU manager, but I think at least maybe scanning an MSU folder or maybe just saving previous MSUs you used and creating a dropdown to pick them would be nice.

I think rolling this into the Sprite Preview is a good idea too. Scrolling through the LTTP sprites is a bit of a nightmare. I think putting something in the options about how it shows sprites in the pull down selection would be a good idea too with the options being All, Favorite Priority (favorites at the top) and Favorites Only.


[Feature Request] Remove single or multiple notes directly from the list

At the time of writing, I can delete a note by clicking on it, then on the button to the  top-right side and then on 'Delete'.
It would be useful if I could delete a note directly from the list view pressing on the specific note or with a swipe.
And it would be useful if I could select and delete multiple notes.

@kazup01 cancelled funding, $20, of this issue. Visit this issue on Issuehunt


[ZEPPELIN-2733] Remove System Information Leak in Authentication.java.

What is this PR for?
An information leak occurs when system data or debugging information leaves the program through an output stream or logging function.
In the file Authentication.java,
Line 137: LOG.debug("Encrypted user key is {}", userKey);
Line 148: LOG.debug("IV is {}, IV length is {}", initVector, initVector.length());

These lines may print information which can reveal some important data to user making it vulnerable to attacks, we should not log this sensitive information.
What type of PR is it?
[Improvement]
What is the Jira issue?
https://issues.apache.org/jira/browse/ZEPPELIN-2733
How should this be tested?
Existing tests.
Screenshots (if appropriate)
Questions:

Does the licenses files need update? - No
Is there breaking changes for older versions? - No
Does this needs documentation? - No

Thanks @yanboliang for the fix.
LGTM and merge to master if no further discussion.

@yanboliang Thanks for taking care of this.
Yeah, It makes sense.
I guess this PR works well, because you just removed log. But it would be great to make sure that CI pass.
Could you confirm it?

@Leemoonsoo @soralee It passed CI test now. Thanks.


Unable to get data from multiple topics easily

I am trying to display data from multiple topics in plot panels and then download all the data in CSV files. I have over 30 topics
I tried using a Tab Panel containing multiple Plot panel per topic but switching tabs erase previous data on the panels.
I also tried using independent Plot panels but having too many plot panels does not allow me to visualize the data properly.
I also tried having a single plot panel with all the topics but this is not ideal. Moreover, there is a point where I can't add more topics to the plot as the list of topics gets too long to fit on the screen.
Is there any way I can keep the data on the plots after switching tabs?

You could try using Node Playground to take multiple topics and merge into one before publishing: https://github.com/cruise-automation/webviz/blob/master/packages/webviz-core/src/panels/NodePlayground/index.help.md#using-multiple-input-topics

We tried using Node Playground but that approach did not solve my problem. What would solve my problem is data persistence when swapping between tabs


Add NoBacon

@BrianPeek

@anthonychu,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

sandbox/media/notbacon/add-bacon-images.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/add-images-custom-vision.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/add-not-bacon-images.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/azuredeploy-finish.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/azuredeploy-start.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/click-train.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/create-custom-vision-project.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/grab-keys.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/not-bacon.gif
:white_check_mark:Succeeded
View

sandbox/media/notbacon/set-default.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/test-model.png
:white_check_mark:Succeeded
View

sandbox/notbacon.md
:white_check_mark:Succeeded
View

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

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

sandbox/TOC.yml
:white_check_mark:Succeeded
View

sandbox/index.yml
:white_check_mark:Succeeded
View

sandbox/media/notbacon/add-bacon-images.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/add-images-custom-vision.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/add-not-bacon-images.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/azuredeploy-finish.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/azuredeploy-start.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/click-train.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/create-custom-vision-project.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/grab-keys.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/not-bacon.gif
:white_check_mark:Succeeded
View

sandbox/media/notbacon/set-default.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/test-model.png
:white_check_mark:Succeeded
View

sandbox/notbacon.md
:white_check_mark:Succeeded
View

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

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

sandbox/TOC.yml
:white_check_mark:Succeeded
View

sandbox/index.yml
:white_check_mark:Succeeded
View

sandbox/media/notbacon/add-bacon-images.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/add-images-custom-vision.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/add-not-bacon-images.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/azuredeploy-finish.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/azuredeploy-start.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/click-train.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/create-custom-vision-project.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/grab-keys.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/not-bacon.gif
:white_check_mark:Succeeded
View

sandbox/media/notbacon/set-default.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/test-model.png
:white_check_mark:Succeeded
View

sandbox/notbacon.md
:white_check_mark:Succeeded
View

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

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

sandbox/TOC.yml
:white_check_mark:Succeeded
View

sandbox/index.yml
:white_check_mark:Succeeded
View

sandbox/media/notbacon/add-bacon-images.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/add-images-custom-vision.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/add-not-bacon-images.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/azuredeploy-finish.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/azuredeploy-start.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/click-train.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/create-custom-vision-project.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/grab-keys.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/not-bacon.gif
:white_check_mark:Succeeded
View

sandbox/media/notbacon/set-default.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/test-model.png
:white_check_mark:Succeeded
View

sandbox/notbacon.md
:white_check_mark:Succeeded
View

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

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

sandbox/TOC.yml
:white_check_mark:Succeeded
View

sandbox/index.yml
:white_check_mark:Succeeded
View

sandbox/media/notbacon/add-bacon-images.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/add-images-custom-vision.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/add-not-bacon-images.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/azuredeploy-finish.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/azuredeploy-start.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/click-train.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/create-custom-vision-project.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/grab-keys.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/not-bacon.gif
:white_check_mark:Succeeded
View

sandbox/media/notbacon/set-default.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/test-model.png
:white_check_mark:Succeeded
View

sandbox/notbacon.md
:white_check_mark:Succeeded
View

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

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

sandbox/TOC.yml
:white_check_mark:Succeeded
View

sandbox/index.yml
:white_check_mark:Succeeded
View

sandbox/media/notbacon/add-bacon-images.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/add-images-custom-vision.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/add-not-bacon-images.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/azuredeploy-finish.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/azuredeploy-start.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/click-train.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/create-custom-vision-project.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/grab-keys.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/not-bacon.gif
:white_check_mark:Succeeded
View

sandbox/media/notbacon/set-default.png
:white_check_mark:Succeeded
View

sandbox/media/notbacon/test-model.png
:white_check_mark:Succeeded
View

sandbox/notbacon.md
:white_check_mark:Succeeded
View

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


Define a json schema for MML CREATE GENERATOR statements

...and build up some utility methods around it.
This implements everything but validation from https://docs.google.com/document/d/11iZf-yeCkXvkAXdIl5QPariLbbOJDRos_iB9WOMtWts/edit

Aside from the incompleteness, looks good.

I think the main incompleteness at this point is the lack of validate. But I think this is useful without even without that, and would like to split this and validate into two PRs to probcomp. Is there another source of incompleteness you mean?

Send this as a PR to probcomp at your convenience.

Opened https://github.com/probcomp/bdbcontrib/pull/153. Closing this one out


Create MCQA for Array. pop()

Please create an MCQ to be added as question number 21.
The multiple choice question should be on the topic .pop() method of an array. The difficulty level should be "Medium/Hard"
What is Array.pop() method?
The pop() method removes last item and returns removed element

[ ] add your code to 021 folder under code
[ ] add your question to 21 in README.md file
[ ] create a video explanation (optional)

Hi,
I'd like to take this further.


Discuss whether to implement a sensor dry read for a call at the end of setDriversList() in YarpSensorBridge to detect an early failure

Copying from https://github.com/dic-iit/bipedal-locomotion-framework/issues/121#issuecomment-698519020,

Aside, in addition to all the pointers, there was one feature I did not implement in the YarpSensorBridge while porting from the legacy RobotSensorBridge which basically runs a dry reading of sensors at the end of setDriversList phase once all the drivers are attached. This dry read polls for sensor measurements upto a timeout period (similar to the recent fix in IRobotControl) helping to identify early failures at the initialisation phase itself, in case there are no measurements available at the lower level.
Should we consider to reimplement it here as well?

The implementation of this in the previous RobotSensorBridge implementation was done with a sensorReadDryRun() method., which also used a similar timeout based check. This was actually originally ported from the wholeBodyDynamics device.

The relevant change in IRobotControl was introduced in https://github.com/dic-iit/bipedal-locomotion-framework/pull/118 with the commit https://github.com/dic-iit/bipedal-locomotion-framework/commit/8fc2bef8a813d078c64852ec13ca00d3a6e099c3.

I think this may be a very good point.


bug(Purpur): NPE on updater#setChannel

I guess there's no updater available for Purpur servers :)
https://github.com/lenis0012/LoginSecurity/blob/b003ca6ab632a7ddd30cf9bea3afb6deef401244/src/main/java/com/lenis0012/bukkit/loginsecurity/modules/general/GeneralModule.java#L66-L71

You need to pick one when compiling using mvn package -Pspigot or mvn package -Pbukkit (spigot should be used in most cases)

I am planning to add a no-op updater as fallback probably in v3.3


Improve IMC Segmentation Pipeline panel support

Allow duplicated metal tags (combine targets with separator to form channel name) and targets shared among different metal tags (add metal tag as suffix to channel name)

Hmm, why do you want to combine targets that have different metal tags? I'd say to keep the metal tag as main id, not caring what the target is.

Not planning on combining targets with different metal tags

All good now


Update flake

And fix lint errors. Seems like .cargo/config now lives in .cargo/config.toml

The way the kernel images are fetched is quite kludgy, we need to rework this, and this is blocked until we use the derivation paths rather than the hardcoded hashes

cc @gmarler I've made some small changes to the CLI arguments. To run the kernel tests nix run .#vmtest


[IDEA] Add Borderless Mining

Describe your idea in depth.
Borderless Mining is essential for multi-monitor setups. It prevents Minecraft from minimizing when focus is lost (Clicking on another application). Someone with a two monitor setup might want to have Minecraft open on their main monitor and use their second monitor to chat on Discord, but in vanilla, Minecraft would be minimized to the taskbar every time.
The official mod page explains it far better than I can.
On a single monitor setup the mod's behaviour could be undesirable, so the mod could be turned off by default.

I'm very well into that mod, had it in any modpack back then.
We can achieve this but i have to remove the config every time when we update.
Otherwise this mod is kinda necessary.
We will most likely add this mod in future updates.
Thank you for the ideas !

Added in 2.1.0


Handling a self-defined error leads to the failure of codon

We define a attributeError in the following code. Then we raise and catch it. The expected behavior is that the compiler can handle it well and print "hi", while codon fails. CPython can work well with this case.
test.py
class B:
     def __bool__(self):
         raise AttributeError("don't do that!")

b = B()
try:
   if b:
        pass
except AttributeError:
   print("HI")

Reproduce:
codon/codon-linux-x86_64/codon-deploy/bin/codon' run -release test.py
Crash message:
Trunc only operates on integer
  %238 = trunc {} %220 to i1, !dbg !2405
Assert failed:	module broken
Expression:	!broken
Source:		/github/workspace/codon/cir/llvm/optimize.cpp:601
Aborted (core dumped)

Behavior on CPython 3.10.8:
work well
Environment:
codon: v0.15.5 on Feb 6
Ubuntu 18.04

The following code works as expected:
class B:
     def __bool__(self) -> bool:
         raise AttributeError("don't do that!")

b = B()
try:
   if b:
        pass
except AttributeError:
   print("HI")

Thanks for the report — it seems there’s a check missing in the type checker to ensure __bool__ actually returns a boolean. We’ll fix it in the next release.
We plan to put out v0.16 in the next couple weeks. We’re a small team currently so appreciate your patience.

Thanks for your confirmation.  I hope these bugs are helpful for the development of codon.


[Backport 2.x] Use Lucene provided Persian stem

Lucene provided Persian stem apparently isn't hooked yet and this change is doing that based on what is done for Arabic stem support.
Following https://github.com/opensearch-project/OpenSearch/pull/14847#issuecomment-2243960516

@ebraminio If you really, really want this in 2.16, backport manually please to that branch that was cut yesterday.


Check for null in bootstrap.workflowParameters

It is defined with @CheckForNull

Yes, it was one of the topics in #26 .

Wasn't this solved by https://github.com/jenkinsci/jenkinsfile-runner/pull/26/files#diff-ee2e34830e8899b2776e794c3a90a194R145 ?

there's nothing that forces calling postConstruct so you can end with NPE anyway


[improve][io] KCA: flag to force optional primitive schemas

Motivation
Kafka's schema has "Optional" flag that used there to validate data/allow nulls.
Pulsar's schema does not have such info which makes conversion to kafka schema lossy.
Modifications
Added a config parameter that lets one force primitive schemas into optional ones.
KV schema is always optional.
Default is false, to match existing behavior.
Verifying this change

[ ] Make sure that the change passes the CI checks.

This change updated tests.
Does this pull request potentially affect one of the following parts:

If the box was checked, please highlight the changes

[ ] Dependencies (add or upgrade a dependency)
[ ] The public API
[ ] The schema
[ ] The default values of configurations
[ ] The threading model
[ ] The binary protocol
[ ] The REST endpoints
[ ] The admin CLI options
[ ] The metrics
[ ] Anything that affects deployment

Documentation

[ ] doc
[ ] doc-required
[x] doc-not-needed
[ ] doc-complete

Matching PR in forked repository
PR in forked repository: https://github.com/dlg99/pulsar/pull/12

Codecov Report

Merging #19951 (c688a22) into master (7a99e74) will increase coverage by 40.91%.
The diff coverage is 79.37%.

@@              Coverage Diff              @@
##             master   #19951       +/-   ##
=============================================
+ Coverage     31.88%   72.79%   +40.91%
- Complexity     6421    31540    +25119
=============================================
  Files          1682     1859      +177
  Lines        127354   137175     +9821
  Branches      13892    15109     +1217
=============================================
+ Hits          40601    99857    +59256
+ Misses        80714    29357    -51357
- Partials       6039     7961     +1922

Flag
Coverage Δ

inttests
24.41% <1.13%> (-0.11%)
:arrow_down:

systests
25.02% <1.61%> (-0.07%)
:arrow_down:

unittests
72.08% <79.37%> (+54.80%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

.../loadbalance/extensions/data/BrokerLookupData.java
88.88% <0.00%> (+88.88%)
:arrow_up:

...r/loadbalance/extensions/models/UnloadCounter.java
93.84% <ø> (+93.84%)
:arrow_up:

...adbalance/extensions/scheduler/SplitScheduler.java
75.00% <20.00%> (+75.00%)
:arrow_up:

...ensions/strategy/LeastResourceUsageWithWeight.java
81.66% <25.00%> (+81.66%)
:arrow_up:

...dbalance/extensions/ExtensibleLoadManagerImpl.java
76.07% <36.11%> (+73.37%)
:arrow_up:

...sar/common/policies/data/stats/TopicStatsImpl.java
93.87% <50.00%> (+59.39%)
:arrow_up:

...ache/pulsar/broker/namespace/NamespaceService.java
70.05% <62.50%> (+33.68%)
:arrow_up:

...xtensions/channel/ServiceUnitStateChannelImpl.java
80.92% <73.52%> (+80.39%)
:arrow_up:

...r/delayed/bucket/BucketDelayedDeliveryTracker.java
82.12% <76.74%> (+82.12%)
:arrow_up:

...afka/connect/schema/PulsarSchemaToKafkaSchema.java
79.46% <77.41%> (ø)

... and 17 more

... and 1443 files with indirect coverage changes


Typo in FindMbedTLS.cmake

There is a small typo at cmake/FindMbedTLS.cmake:13
"Failed to find sphinx-build executable"

Thanks for letting me know :).


Enable overwriting output directory

As of now, the tool aborts with an error message if the output directory already exists.
Instead of aborting we can ask the user if it is okay to overwrite the directory and then delete the directory if the user says yes.
We can also add a --overwrite flag for the user to explicitly tell that overwriting the output directory is okay.

Added in this commit.


Fix typos in OAuth example

The s/oauth_verified/oauth_verifier/ swap had me confused for a while ;)

Can't believe I hadn't noticed this before, nice catch :smile:

Published as v1.2.1
Thanks again!


Fix pilot status has too many logs

Please provide a description of this PR:
Fix https://github.com/istio/istio/issues/42612
After https://github.com/istio/istio/pull/40561 disabled the PILOT_ENABLE_CONFIG_DISTRIBUTION_TRACKING env, pilot status controller keeps logging the error in a very small time interval:
2023-02-09T05:52:04.663205Z     error   status  Encountered error retrieving version 732d02fd-79e of key gateway.networking.k8s.io/v1beta1/gatewayclasses//istio/1 from Store: distribution tracking is disabled
2023-02-09T05:52:04.663207Z     error   status  Encountered error retrieving version 5d0e9369-e17 of key gateway.networking.k8s.io/v1beta1/gatewayclasses//istio/1 from Store: distribution tracking is disabled
2023-02-09T05:52:04.663209Z     error   status  Encountered error retrieving version 18491e2d-ef2 of key gateway.networking.k8s.io/v1beta1/gatewayclasses//istio/1 from Store: distribution tracking is disabled
2023-02-09T05:52:04.663211Z     error   status  Encountered error retrieving version d9e2b3b9-0f7 of key gateway.networking.k8s.io/v1beta1/gatewayclasses//istio/1 from Store: distribution tracking is disabled
2023-02-09T05:52:04.663213Z     error   status  Encountered error retrieving version 5f7ed4b8-66d of key gateway.networking.k8s.io/v1beta1/gatewayclasses//istio/1 from Store: distribution tracking is disabled
2023-02-09T05:52:04.663215Z     error   status  Encountered error retrieving version a090282d-2af of key gateway.networking.k8s.io/v1beta1/gatewayclasses//istio/1 from Store: distribution tracking is disabled

Since the feature works when the env is enabled, we should not start the controller if it is disabled.

@hzxuzhonghu PTAL

Thanks, lgtm

In response to a cherrypick label: new pull request created: #43286

In response to a cherrypick label: new pull request created: #43287


incorrect names for network "castable" devices

As requested, I am re-posting this issue here. Thanks for a fantastic product BTW!
The original now closed post is located at:
https://github.com/MarshallOfSound/Google-Play-Music-Desktop-Player-UNOFFICIAL-/issues/1523#event-765990058

OS:
Windows 10 (v1607)
Issue Descriptions:
List of "castable" devices is wrong. Here is a listing of the devices on my network (as seen by the chrome browse I am using to write this):

However, in the app, when I attempt to cast - this is what appears:

First it appears that the "." in the name of the device is causing the device name to truncate. In addition there is an incorrect number of devices listed - no idea were that's coming from. Interestingly, when select the correct "a" from the list, casting works.
Steps to Reproduce:
Every time I go to cast it shows up. Maybe it's my naming convention (which differentiates video from audio casting devices) but this is the only place I have seen this naming disconnect.

Probably fixed in f4185d47d96074540e73e51065734843a4c08ae5


⚠ ETF has degraded performance

In 5898d4c, ETF (https://markets.hankyung.com/equity-product/etf) experienced degraded performance:

HTTP code: 200
Response time: 6504 ms

Resolved: 한경주요지수-코스피 performance has improved in 00420e6.


Does this project come from Microsoft?

Why build a community? Or under Microsoft org account?

@Ginger-Soda this project is not connected to Microsoft.


Add Solana Explorer extension

Description
Look up transactions and accounts on the various Solana clusters.
Type of change

New extension

Screencast

Checklist

[x] I read the extension guidelines
[x] I read the documentation about publishing
[x] I ran npm run build and tested this distribution build in Raycast

Hi @pernielsentikaer
This extension should help other devs to quickly open transaction and see some useful information in Solana Blockchain. I will take.
Thank for your review. I have changed all your requests :D


Convert projects to gradle. (WIP)

Let me know if there is anything else that needs to be added or changed. I also committed a fix for license loading.

Thanks!

No problem!


syzkaller require a config file to run,is there a sample config?

syzkaller can be run using command like this in Linux:
./bin/syz-manager -config=my.cfg -debug -vv 10
The config file may be different with linux case,so a sample config will be very usefull.

Please refer to generateConfig. The only difference is the config of VM as follows:
"type": "vmware",
"vm": {
      "vmxpath": getConfigKey("vmpath"),
      "address": [
          getConfigKey("ip")
      ]
}

Also, to enable coverage feedback, you need to provide another two flags -bpcov and -kcov, where -kcov requires the path to the file containing the addresses of all basic blocks (see README for more details).
Note that the latest syzkaller adds new support for VMware, which works better. I'm currently working on rebasing the project on the latest version. Stay tuned!


Upgrade to Asciidoctor.js 1.5.4

Resolves #111

Hey @Mogztter, is there any reason not to publish this update?

Hi @oncletom, version 1.5.4 "final" is not released yet. AFAIK Asciidoctor.js 1.5.4-rc.1 is working fine so I'll probably publish a final release soon and update this pull request accordingly.
Basically I'm waiting for myself to release a final version :wink:


Add functions to convert from met to ET and UTC

Change Summary
Overview
Adds functions for converting from Mission Elapsed Time (MET) to ET and UTC
Updated Files

imap_processing/cdf/utils.py

Definition of J2000_EPOCH moved into the spice.time.py module
TODO added to address discovered error in converting epoch to date string for file naming. Ticket created: #1208

imap_processing/spice/time.py

Definition of J2000_EPOCH moved into the spice.time.py module
Extracted met_to_sclkticks function for reuse
Added met_to_utc function
Added met_to_datetime64 function with SPICE backed implementation.

imap_processing/tests/spice/test_time.py

Add test coverage for 3 new spice/time.py functions.
Don't import spiceypy as spice because it is confusing.

Closes: #1183

Will the fix to the 5 second just be replacing this constant J2000_EPOCH with a spice call?

No, actually, it is a bit more subtle. That epoch definition is correct in that it is the number of nanoseconds elapsed since the Unix epoch (00:00:00 UTC on 1 January 1970). The problem is that np.datetime64 does not take leap-seconds into account so when an offset is added to this epoch and then converted to a string, if the offset passed any leap-seconds, the string will be incorrect by the number of leap-seconds passed by adding the offset.


Different release version and binary

Hello when I download the 1.0.4 APK from the release section my phone tell me I'm installing the 1.0.3

Hey @delta-whiplash, this issue was fixed in the last release. Thanks!


update packages

:x: Build TheIdServer 6.3.1-fix-dependencies1-0176 failed (commit https://github.com/Aguafrommars/TheIdServer/commit/2fac305b7b by @)

:x: Build TheIdServer 1.0.2663 failed (commit https://github.com/Aguafrommars/TheIdServer/commit/608b4d5a35 by @)

:x: Build TheIdServer 6.3.1-fix-dependencies1-0180 failed (commit https://github.com/Aguafrommars/TheIdServer/commit/06ba156a2c by @)

:x: Build TheIdServer 6.3.1-fix-dependencies1-0181 failed (commit https://github.com/Aguafrommars/TheIdServer/commit/8f44238d3a by @)

:x: Build TheIdServer 6.3.1-fix-dependencies1-0182 failed (commit https://github.com/Aguafrommars/TheIdServer/commit/517ac99a85 by @)

:x: Build TheIdServer 1.0.2667 failed (commit https://github.com/Aguafrommars/TheIdServer/commit/cbd1d5cdd4 by @)

:x: Build TheIdServer 1.0.2668 failed (commit https://github.com/Aguafrommars/TheIdServer/commit/c850351daf by @)

:x: Build TheIdServer 6.3.1-fix-dependencies1-0185 failed (commit https://github.com/Aguafrommars/TheIdServer/commit/f85aeacae8 by @)

:x: Build TheIdServer 1.0.2670 failed (commit https://github.com/Aguafrommars/TheIdServer/commit/27e2499c62 by @)

:x: Build TheIdServer 1.0.2671 failed (commit https://github.com/Aguafrommars/TheIdServer/commit/00b70013d4 by @)

:x: Build TheIdServer 1.0.2672 failed (commit https://github.com/Aguafrommars/TheIdServer/commit/1562e55560 by @)

:x: Build TheIdServer 1.0.2673 failed (commit https://github.com/Aguafrommars/TheIdServer/commit/bac991907e by @)

:x: Build TheIdServer 6.3.1-fix-dependencies1-0190 failed (commit https://github.com/Aguafrommars/TheIdServer/commit/54152f1df6 by @)

:x: Build TheIdServer 6.3.1-fix-dependencies.1+190.build.2675 failed (commit https://github.com/Aguafrommars/TheIdServer/commit/54152f1df6 by @)


Set up CodeQL on Ansys Actions

Now that CodeQL is avaialble - and following @da1910's suggestion - we should activate it and configure it in this repo.

Dedicated CodeQL config file should be the approach - not just default config (i.e. no file)


Allow all gateways for certain backends

Is there easy way to allow all gateways to passthrough to certain hosts/backends ?

At this moment, there is not. If I remember correctly, it starts the UDP sockets on start of the multiplexer service thus in the current architecture it needs to know the Gateway IDs from the start.

Hi @brocaar,
Thank you for your quick response sorry to hear that its currently not possible any idea if this will be implemented in the future ?

@remydejongjr,


FAQ appears to be outdated

This solution accelerator was migrated from Bing to Azure Maps, this FAQ still talks about Bing Maps.

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

ID: 82161f24-b35f-e054-606e-cd7829a5435d
Version Independent ID: 7c4570a5-fe6e-2f9e-b791-08d41a423dd5
Content: Connected Factory solution FAQ - Azure
Content Source: articles/iot-accelerators/iot-accelerators-faq-cf.md
Service: iot-accelerators
GitHub Login: @dominicbetts
Microsoft Alias: dobett

Thanks for the feedback! We are currently investigating and will update you shortly.

Thanks for the feedback! I have assigned the issue to the content author to evaluate and update as appropriate.

@MicahMcKittrick-MSFT - thanks for pointing this out. The FAQ is being updated in this PR: https://github.com/MicrosoftDocs/azure-docs-pr/pull/55276
The changes should be live later today.

#please-close


[Issue] Query Button Width than Screen

In GitLab by @cuiaq123 on Jul 6, 2018, 16:59
If you are reporting a problem, please make sure the following information are provided:

Version of board (last git commit number) , docker engine and docker-compose.
Config files of board, you can get them by packaging "board.cfg" and files in the same directory, including subdirectory.
Log files, you can get them by package the /var/log/board/.
Other necessery information.

In GitLab by @liyanq528 on Nov 8, 2019, 07:54
fixed by pull request #1059

In GitLab by @yhua123 on Nov 8, 2019, 07:54
wrong PR number

In GitLab by @liyanq528 on Nov 8, 2019, 07:54
fixed by pull request #1537

In GitLab by @yhua123 on Nov 8, 2019, 07:54
LGTM

In GitLab by @sokril on Nov 8, 2019, 08:24
closed

In GitLab by @sokril on Nov 8, 2019, 08:24
assigned to @yhua123


Unsafe usage of pointers

I noticed that there are several instances where pointers obtained from unsafe_convert are used without preserving the underlying object from garbage collection.
E.g. in the uhd_usrp_create_stream function.
I’m pretty new to Julia myself, but my understanding is that this can lead to bugs when the garbage collector removes an object before the pointer is used.

Thanks for the feedback,
This is true than unsafe_load can lead to un-protected memory but AFAIK it is prevented by the use of the Ref{} in the structure as it stores the result of the unsafe_load. So It should not lead to seg fault that way (even the approach  here is unsafe :)).
Did you encounter any problem of GC-ed variables with UHDBindings ?

I have not experienced any actual issues.
However, the nature of memory safety issues is that they often only manifest themselves in rare circumstances.
Most of the time (or possibly always until someone changes the implementation) the garbage collector does not get in the way.
But unless it’s guaranteed that it won’t happen, it’s still an issue.
I’m still new to Julia and may therefore be misunderstanding the guarantees that are provided by the language,
but the way I see it, if the garbage collector was triggered on line 126 of Rx.jl, it would be allowed to collect cpu_format, otw_format, args, and channels, all of which need to still be alive for the call to uhd_usrp_get_rx_stream on line 130.
The fact that the variables are still in scope does not help, as the compiler can determine that they are not used (directly) anymore.


Aggregate fuzzer breaks on max min

Description
Aggregate fuzzer needs an override for max min (as it requires the second argument to be constant).
Error Reproduction
Repro files here : https://github.com/facebookincubator/velox/actions/runs/6307545783
Relevant logs
2023-09-26T03:55:21.9001849Z I0926 03:55:21.899912 20141 AggregationFuzzer.cpp:802] Executing query plan:
2023-09-26T03:55:21.9002523Z -- Aggregation[FINAL [g0, g1, g2, g3] a0 := max("a0")] -> g0:BIGINT, g1:TIMESTAMP, g2:TIMESTAMP, g3:SMALLINT, a0:ARRAY<INTEGER>
2023-09-26T03:55:21.9003166Z   -- Aggregation[INTERMEDIATE [g0, g1, g2, g3] a0 := max("a0")] -> g0:BIGINT, g1:TIMESTAMP, g2:TIMESTAMP, g3:SMALLINT, a0:ROW<"":BIGINT,"":ARRAY<INTEGER>>
2023-09-26T03:55:21.9003667Z     -- LocalPartition[REPARTITION HASH(g0, g1, g2, g3)] -> g0:BIGINT, g1:TIMESTAMP, g2:TIMESTAMP, g3:SMALLINT, a0:ROW<"":BIGINT,"":ARRAY<INTEGER>>
2023-09-26T03:55:21.9004182Z       -- Aggregation[PARTIAL [g0, g1, g2, g3] a0 := max(ROW["c0"],ROW["c1"])] -> g0:BIGINT, g1:TIMESTAMP, g2:TIMESTAMP, g3:SMALLINT, a0:ROW<"":BIGINT,"":ARRAY<INTEGER>>
2023-09-26T03:55:21.9004628Z         -- TableScan[table: hive_table] -> c0:INTEGER, c1:BIGINT, g0:BIGINT, g1:TIMESTAMP, g2:TIMESTAMP, g3:SMALLINT
2023-09-26T03:55:21.9123572Z I0926 03:55:21.912218 38535 Task.cpp:978] All drivers (4) finished for task test_cursor 7930 after running for 12 ms.
2023-09-26T03:55:21.9124203Z I0926 03:55:21.912232 38535 Task.cpp:1660] Terminating task test_cursor 7930 with state Finished after running for 12 ms.
2023-09-26T03:55:21.9131179Z I0926 03:55:21.912967 20141 AggregationFuzzer.cpp:830] [ROW ROW<g0:BIGINT,g1:TIMESTAMP,g2:TIMESTAMP,g3:SMALLINT,a0:ARRAY<INTEGER>>: 999 elements, no nulls]
2023-09-26T03:55:21.9131669Z E0926 03:55:21.913056 20141 FuzzerToolkit.cpp:95] Only common path threw exception:
2023-09-26T03:55:21.9245295Z I0926 03:55:21.924432 20141 AggregationFuzzer.cpp:567] Persisted aggregation plans to /tmp/aggregate_fuzzer_repro/velox_aggregationVerifier_FcTpyF/plan_nodes
2023-09-26T03:55:21.9258581Z terminate called after throwing an instance of 'facebook::velox::VeloxUserError'
2023-09-26T03:55:21.9258873Z   what():  Exception: VeloxUserError
2023-09-26T03:55:21.9259053Z Error Source: USER
2023-09-26T03:55:21.9259217Z Error Code: INVALID_ARGUMENT
2023-09-26T03:55:21.9259480Z Reason:<PHONE_NUMBER>357094156 vs.<PHONE_NUMBER>868180639) second argument of max/min must be a constant for all rows in a group
2023-09-26T03:55:21.9259741Z Retriable: False
2023-09-26T03:55:21.9259917Z Expression: newN == n
2023-09-26T03:55:21.9260092Z Function: checkAndSetN
2023-09-26T03:55:21.9260323Z File: ../../velox/functions/prestosql/aggregates/MinMaxAggregates.cpp
2023-09-26T03:55:21.9260529Z Line: 548
2023-09-26T03:55:21.9260675Z Stack trace:
2023-09-26T03:55:21.9260983Z Stack trace has been disabled.Use --velox_exception_user_stacktrace=true to enable it.
2023-09-26T03:55:21.9261165Z
2023-09-26T03:55:21.9261343Z *** Aborted at<PHONE_NUMBER> (Unix time, try 'date -d @1695700521') ***
2023-09-26T03:55:21.9261830Z *** Signal 6 (SIGABRT) (0x3e800004ead) received by PID 20141 (pthread TID 0x7f0374f74400) (linux TID 20141) (maybe from PID 20141, UID 1000) (code: -6), stack trace: ***
2023-09-26T03:55:21.9276003Z _build/debug/velox/exec/tests/velox_aggregation_fuzzer_test(_ZN5folly10symbolizer17getStackTraceSafeEPmm+0x83)[0x5584bf61a1d2]
2023-09-26T03:55:21.9294107Z _build/debug/velox/exec/tests/velox_aggregation_fuzzer_test(_ZN5folly10symbolizer21SafeStackTracePrinter15printStackTraceEb+0x6a)[0x5584bf61af32]
2023-09-26T03:55:21.9311807Z _build/debug/velox/exec/tests/velox_aggregation_fuzzer_test(+0xf09473a)[0x5584bf61873a]
2023-09-26T03:55:21.9329572Z _build/debug/velox/exec/tests/velox_aggregation_fuzzer_test(+0xf094820)[0x5584bf618820]

@kgpai I recently touched these two aggregates(although the issue seems not relevant), can you give an example about how to provide an override, I will see if I can fix it.

@kagamiori  shall we add to skiplist?

how is this mitgated?

handled in  PR #6934


set nvcc --generate-line-info when compilation_mode=fastbuild

this makes the debug info for both host and device code the same
(i.e. --generate-line-info does for device code what -g1 does for
host code).
This is an intuitive result IMO.

@garymm Please update the testcase in https://github.com/bazel-contrib/rules_cuda/blob/main/tests/flag/BUILD.bazel to reflect the change.

@cloudhan done


Add --output and --in-place options

--output/-o allow the user to specify an output file for the results of refmt.
--in-place sets the output the file to the input file. Fixes #886
This is currently a pretty gross solution. Looking into fixing that now.

@yunxing I think this is ready.

Looks good. Could you also help fix the conflicts?

Sure. I can try rebasing master locally

Fixed!

Thanks! Let's wait for CI and we can push.

How has CI not started 8 hours later?

@tekknolagi It has been an issue for us -- all projects in FB share the same worker pool.


Feature Request: Update batch ?

Hi Thomas,
First off - Great package!
While I used your package I saw that it uses many http requests to update a single item (product/debtor). I see you use a lot of switch cases to do so.
Would you be interested in create more effiecient methods to keep the all the network requests to a mimimum?
Economics has endpoints for this purpose, e.g. Debtor_UpdateFromData and Debtor_CreateFromData etc.
 $debitor_handle = $this->client->Debtor_UpdateFromData([
		'data' => (object) [
			'Handle' => $debitor,
			'Number' => $debitor->Number,
			'VatZone' => $vat_zone,
			'IsAccessible' => true,
			'Name' => $params['company'],
			'Email' => $params['email'],
			'CINumber' => $params['vat'],
			'Address' => $params['address'],
			'PostalCode' => $params['postalcode'],
			'City' => $params['city'],
			'Country' => $params['country'],
			'DebtorGroupHandle' => $groupHandles,
			'CurrencyHandle' => $currencyHandle,
			'TermOfPaymentHandle' => $termHandle,
			'LayoutHandle' => $templatecollectionHandle,
			'AttentionHandle' => $contact_handle
		],
 ])->Debtor_UpdateFromDataResult;

It would make the package much more complete.
ref: https://api.e-conomic.com/secure/api1/EconomicWebService.asmx?op=Debtor_UpdateFromData

Yep, I'm aware of this "issue", and there could definitely be done something about the number of http request in both create and update methods. I'll might take a look at it, otherwise, you're more than welcome to throw a PR ;) :+1:

@tkjaergaard sweet. That could be cool.
We are also working on supporting multiple currencies on product prices atm.

@tkjaergaard Hey there, i'm totally intruding on this conversation <3
Here is a pull request that serves as a good base for a bulk update method:
https://github.com/tkjaergaard/Economic-PHP-SDK/pull/17


add bsd48.txt

Official website here: https://www.beaverton.k12.or.us/

Could you please provide some proof, that the mentioned domain also belongs to the school? Thanks for your help!

What kind of proof are you looking for? The only kind of proof I can think of is this picture of the BSD logo on the left with the domain on the right
https://i.imgur.com/Cpssz4D.png

works fine, thanks for the screenshot - i'm adding the domain


Navigator has no active routes to replace.

════════ Exception caught by scheduler library ═════════════════════════════════
The following assertion was thrown during a scheduler callback:
Navigator has no active routes to replace.
'package:flutter/src/widgets/navigator.dart':
navigator.dart:1
Failed assertion: line 4647 pos 12: '_history.any(_RouteEntry.isPresentPredicate)'

Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.

**In either case, please report this assertion by filing a bug on GitHub:**
  https://github.com/flutter/flutter/issues/new?template=2_bug.md

 When the exception was thrown, this was the stack
#2      NavigatorState._pushReplacementEntry
navigator.dart:4647
#3      NavigatorState.pushReplacement
navigator.dart:4603
#4      NavigatorState.pushReplacementNamed
navigator.dart:4267
#5      Navigator.pushReplacementNamed
navigator.dart:1799
#6      _MyWidgetState.onWidgetBuilt
app_router.dart:226
#7      _MyWidgetState.didChangeDependencies.<anonymous closure>

class _MyWidgetState  extends State<MyWidget> {

  void onWidgetBuilt() {
    Navigator.pushReplacementNamed(context, '/some-route-name');
  }

  @override
  void didChangeDependencies() {
      SchedulerBinding.instance.addPostFrameCallback((duration) {
        onWidgetBuilt();
    });
  }
}

Hi @niksen75,
Please provide your flutter doctor -v and a minimal complete reproducible code sample along with steps to reproduce so that we can investigate this issue.
Thank you

I'm listening to firebaseAuth.userChanges().listen((onData) {...}) and updating a ChangeNotiferProvider based on the currrentUser, which in return will notifyListeners() including a Widget, and in effect will auto-navigate whenever "something" happens to the firebaseAuth User?.
However, turns out, that events from the Stream<FirebaseUser?>, arrived when there was nothing to pop, hence the err.
Long story short, I believe I fixed it, by adding a canPop() before actually pop'ing the route.
Only reason for reporting this, was the " In either case, please report this assertion by filing a bug on GitHub: "
Should be good be OK to close the ticket.


RestElement should accept Array/ObjectPattern

Constructions of form (...[a, b]) => {} currently fail when converting array to a pattern list, but they should be allowed.

Apparently we made incorrect decision merging #335 (cc @nzakas) and constructs like function x(...[ a, b ]){} are perfectly correct...

Ohhh no, this was just changed in ES7 to allow anything :(

Hopefully got it right this time...


Dropped useless bigdata member in the functions example

It served no purpose (copy was not slow there, only a sleep made it slow) and was discovered (the hard way) to make windows users having very strange segfaults. Simply because it was too large to be on the stack in such context and was screwing memory !

Haha, AFAIK Visual C++ on Windows uses a default stack size of 1MiB. I am surprised we never ran into this.
However, now it's less obvious that SlowToCopy is slow because it's "big". Would it work if you just reduce the size of the data member? Maybe just to int bigdata[10'000];.