text:
starttls transport socket double open event

Title: starttls transport socket double open event
Description:
I am writing a small filter that is meant to take advantage of the starttls transport in order to handle a server-first pre-TLS handshake. I've completed the custom implementation and it works properly up to the point where the TLS negotiation succeeds.
Pretty sure this is a bug, but I'm not exactly sure the best route to take in fixing it. Probably an e2e test that triggers the bug.
@cpakulski @lizan
Repro steps:
The rawbuffer socket that the connection is initiated with raises an onConnected event when the socket successfully connects. The problem comes after startSecureTransport is called and the sslsocket completes its handshake, it also calles onConnected (expected in cases where it's the only socket handler).
This second connected event confuses the connection pooler and causes an assert (in debug build, segfault in release) when it attempts to move the socket from the pending queue, where it does not reside.
Logs:
2021-12-09T16:52:21.384887Z	debug	envoy connection	[C6] connecting to 10.66.20.131:4222
2021-12-09T16:52:21.384986Z	debug	envoy connection	[C6] connection in progress
2021-12-09T16:52:21.385009Z	debug	envoy pool	queueing request due to no available connections
2021-12-09T16:52:21.385024Z	debug	envoy conn_handler	[C5] new connection from 10.66.94.100:45272
2021-12-09T16:52:21.385057Z	trace	envoy connection	[C5] socket event: 2
2021-12-09T16:52:21.385063Z	trace	envoy connection	[C5] write ready
2021-12-09T16:52:21.385356Z	trace	envoy connection	[C6] socket event: 2
2021-12-09T16:52:21.385366Z	trace	envoy connection	[C6] write ready
2021-12-09T16:52:21.385373Z	debug	envoy connection	[C6] connected
2021-12-09T16:52:21.385378Z	trace	envoy connection	[C6] raising connection event 2
2021-12-09T16:52:21.385389Z	debug	envoy pool	[C6] assigning connection
2021-12-09T16:52:21.385403Z	trace	envoy connection	[C5] readDisable: disable=false disable_count=1 state=0 buffer_length=0
2021-12-09T16:52:21.385427Z	debug	envoy filter	[C5] TCP:onUpstreamEvent(), requestedServerName:
2021-12-09T16:52:21.385468Z	trace	envoy connection	[C5] socket event: 2
2021-12-09T16:52:21.385475Z	trace	envoy connection	[C5] write ready
2021-12-09T16:52:21.385848Z	trace	envoy connection	[C6] socket event: 3
2021-12-09T16:52:21.385858Z	trace	envoy connection	[C6] write ready
2021-12-09T16:52:21.385866Z	trace	envoy connection	[C6] read ready. dispatch_buffered_data=false
2021-12-09T16:52:21.385914Z	trace	envoy connection	[C6] read returns: 255
2021-12-09T16:52:21.385944Z	trace	envoy connection	[C6] read error: Resource temporarily unavailable
2021-12-09T16:52:21.385956Z	trace	envoy filter	Alpn Protocol Not Found. Expected istio-peer-exchange, Got starttls
2021-12-09T16:52:21.385980Z	trace	envoy filter	[C6] nats_hs: onData(255bytes,false) 'INFO {"server_id":"7ORFS8GtENuL3rCZs76jsT","version":"1.3.0","proto":1,"go":"go1.11","host":"0.0.0.0","port":4222,"tls_required":true,"tls_verify":true,"max_payload":20971520,"client_id":5829382,"connect_urls":["10.66.20.131:4222","10.66.20.130:4222"]}

'
2021-12-09T16:52:21.385987Z	trace	envoy filter	[C6] nats_hs: handling
2021-12-09T16:52:21.386072Z	trace	envoy filter	[C6] nats_hs: unmarshalled info pdu
2021-12-09T16:52:21.386083Z	trace	envoy filter	[C6] nats_hs: server requires tls, starting secure transport
2021-12-09T16:52:21.386094Z	trace	envoy filter	[C6] nats_hs: tls handshake begun
2021-12-09T16:52:21.386130Z	trace	envoy filter	[C6] nats_hs: sending transmogrified info downstream, I take my leave 'INFO {"client_id":5829382,"go":"go1.11","host":"0.0.0.0","max_payload":20971520,"port":4222,"proto":1,"server_id":"7ORFS8GtENuL3rCZs76jsT","version":"1.3.0"}

'
2021-12-09T16:52:21.386140Z	trace	envoy filter	[C5] upstream connection received 159 bytes, end_stream=false
2021-12-09T16:52:21.386151Z	trace	envoy connection	[C5] writing 159 bytes, end_stream false
2021-12-09T16:52:21.386177Z	trace	envoy connection	[C5] socket event: 2
2021-12-09T16:52:21.386183Z	trace	envoy connection	[C5] write ready
2021-12-09T16:52:21.386219Z	trace	envoy connection	[C5] write returns: 159
2021-12-09T16:52:21.386448Z	trace	envoy connection	[C5] socket event: 3
2021-12-09T16:52:21.386457Z	trace	envoy connection	[C5] write ready
2021-12-09T16:52:21.386468Z	trace	envoy connection	[C5] read ready. dispatch_buffered_data=false
2021-12-09T16:52:21.386499Z	trace	envoy connection	[C5] read returns: 137
2021-12-09T16:52:21.386522Z	trace	envoy connection	[C5] read error: Resource temporarily unavailable
2021-12-09T16:52:21.386534Z	trace	envoy filter	[C5] downstream connection received 137 bytes, end_stream=false
2021-12-09T16:52:21.386543Z	trace	envoy filter	[C6] nats_hs: onWrite(137bytes,false) 'CONNECT {"verbose":false,"pedantic":false,"tls_required":false,"name":"","lang":"go","version":"1.10.0","protocol":1,"echo":true}

PING

'
2021-12-09T16:52:21.386598Z	trace	envoy filter	[C6] nats_hs: unmarshalled connect pdu
2021-12-09T16:52:21.386641Z	trace	envoy filter	[C6] nats_hs: sending transmogrified connect upstream, I take my leave 'CONNECT {"echo":true,"lang":"go","name":"","pedantic":false,"tls_required":true,"verbose":false,"version":"1.10.0"}

PING

'
2021-12-09T16:52:21.386656Z	trace	envoy connection	[C6] writing 123 bytes, end_stream false
2021-12-09T16:52:21.386676Z	trace	envoy connection	[C6] socket event: 2
2021-12-09T16:52:21.386681Z	trace	envoy connection	[C6] write ready
2021-12-09T16:52:21.386756Z	trace	envoy connection	[C6] ssl error occurred while read: WANT_READ
2021-12-09T16:52:21.398687Z	trace	envoy connection	[C6] socket event: 3
2021-12-09T16:52:21.398702Z	trace	envoy connection	[C6] write ready
2021-12-09T16:52:21.411023Z	trace	envoy connection	[C6] ssl error occurred while read: WANT_READ
2021-12-09T16:52:21.411044Z	trace	envoy connection	[C6] read ready. dispatch_buffered_data=false
2021-12-09T16:52:21.411053Z	trace	envoy connection	[C6] ssl error occurred while read: WANT_READ
2021-12-09T16:52:21.411968Z	trace	envoy connection	[C6] socket event: 3
2021-12-09T16:52:21.411980Z	trace	envoy connection	[C6] write ready
2021-12-09T16:52:21.412281Z	trace	envoy connection	[C6] raising connection event 2
2021-12-09T16:52:21.412302Z	debug	envoy pool	[C6] moving to ready
2021-12-09T16:52:21.412310Z	critical	envoy assert	assert failure: std::find(src.begin(), src.end(), *entry_) != src.end().
2021-12-09T16:52:21.412334Z	critical	envoy backtrace	Caught Aborted, suspect faulting address 0x53900000011
2021-12-09T16:52:21.412343Z	critical	envoy backtrace	Backtrace (use tools/stack_decode.py to get line numbers):
2021-12-09T16:52:21.412350Z	critical	envoy backtrace	Envoy version: 2fa0bfebd2757680b1e49017c6439cba5d4fed1a/1.19.2-dev/Modified/DEBUG/BoringSSL
2021-12-09T16:52:21.442870Z	critical	envoy backtrace	#0: Envoy::SignalAction::sigHandler() [0x55d7b8eab4cc]
2021-12-09T16:52:21.442970Z	critical	envoy backtrace	#1: __restore_rt [0x7f8fcf1143c0]
2021-12-09T16:52:21.474084Z	critical	envoy backtrace	#2: Envoy::Tcp::OriginalConnPoolImpl::processIdleConnection() [0x55d7b7eb56c6]
2021-12-09T16:52:21.504416Z	critical	envoy backtrace	#3: Envoy::Tcp::OriginalConnPoolImpl::onConnectionEvent() [0x55d7b7eb50cc]
2021-12-09T16:52:21.536408Z	critical	envoy backtrace	#4: Envoy::Tcp::OriginalConnPoolImpl::ActiveConn::onEvent() [0x55d7b7eba15c]
2021-12-09T16:52:21.566556Z	critical	envoy backtrace	#5: Envoy::Network::ConnectionImplBase::raiseConnectionEvent() [0x55d7b8bb9fcc]
2021-12-09T16:52:21.596781Z	critical	envoy backtrace	#6: Envoy::Network::ConnectionImpl::raiseEvent() [0x55d7b8b9c08c]
2021-12-09T16:52:21.627116Z	critical	envoy backtrace	#7: Envoy::Extensions::TransportSockets::Tls::SslSocket::onSuccess() [0x55d7b8a9feec]
2021-12-09T16:52:21.657293Z	critical	envoy backtrace	#8: Envoy::Extensions::TransportSockets::Tls::SslHandshakerImpl::doHandshake() [0x55d7b8c1c417]
2021-12-09T16:52:21.687428Z	critical	envoy backtrace	#9: Envoy::Extensions::TransportSockets::Tls::SslSocket::doHandshake() [0x55d7b8a9ea9a]
2021-12-09T16:52:21.718362Z	critical	envoy backtrace	#10: Envoy::Extensions::TransportSockets::Tls::SslSocket::doWrite() [0x55d7b8aa039d]
2021-12-09T16:52:21.748434Z	critical	envoy backtrace	#11: Envoy::Extensions::TransportSockets::StartTls::StartTlsSocket::doWrite() [0x55d7b65744a6]
2021-12-09T16:52:21.778804Z	critical	envoy backtrace	#12: Envoy::Network::ConnectionImpl::onWriteReady() [0x55d7b8ba4bc4]
2021-12-09T16:52:21.808892Z	critical	envoy backtrace	#13: Envoy::Network::ConnectionImpl::onFileEvent() [0x55d7b8ba35ec]
2021-12-09T16:52:21.840062Z	critical	envoy backtrace	#14: Envoy::Network::ConnectionImpl::ConnectionImpl()::$_6::operator()() [0x55d7b8bb3d4e]
2021-12-09T16:52:21.871298Z	critical	envoy backtrace	#15: std::__1::__invoke<>() [0x55d7b8bb3d11]
2021-12-09T16:52:21.902333Z	critical	envoy backtrace	#16: std::__1::__invoke_void_return_wrapper<>::__call<>() [0x55d7b8bb3cb2]
2021-12-09T16:52:21.933909Z	critical	envoy backtrace	#17: std::__1::__function::__alloc_func<>::operator()() [0x55d7b8bb3c72]
2021-12-09T16:52:21.964447Z	critical	envoy backtrace	#18: std::__1::__function::__func<>::operator()() [0x55d7b8bb2de3]
2021-12-09T16:52:21.994698Z	critical	envoy backtrace	#19: std::__1::__function::__value_func<>::operator()() [0x55d7b8b5244d]
2021-12-09T16:52:22.026756Z	critical	envoy backtrace	#20: std::__1::function<>::operator()() [0x55d7b8b523ef]
2021-12-09T16:52:22.064591Z	critical	envoy backtrace	#21: Envoy::Event::DispatcherImpl::createFileEvent()::$_5::operator()() [0x55d7b8b465c4]
2021-12-09T16:52:22.106230Z	critical	envoy backtrace	#22: std::__1::__invoke<>() [0x55d7b8b46571]
2021-12-09T16:52:22.136652Z	critical	envoy backtrace	#23: std::__1::__invoke_void_return_wrapper<>::__call<>() [0x55d7b8b46512]
2021-12-09T16:52:22.168610Z	critical	envoy backtrace	#24: std::__1::__function::__alloc_func<>::operator()() [0x55d7b8b464d2]
2021-12-09T16:52:22.200526Z	critical	envoy backtrace	#25: std::__1::__function::__func<>::operator()() [0x55d7b8b456e3]
2021-12-09T16:52:22.200561Z	critical	envoy backtrace	#26: std::__1::__function::__value_func<>::operator()() [0x55d7b8b5244d]
2021-12-09T16:52:22.200568Z	critical	envoy backtrace	#27: std::__1::function<>::operator()() [0x55d7b8b523ef]
2021-12-09T16:52:22.232617Z	critical	envoy backtrace	#28: Envoy::Event::FileEventImpl::mergeInjectedEventsAndRunCb() [0x55d7b8b5961f]
2021-12-09T16:52:22.264092Z	critical	envoy backtrace	#29: Envoy::Event::FileEventImpl::assignEvents()::$_1::operator()() [0x55d7b8b59a6a]
2021-12-09T16:52:22.294572Z	critical	envoy backtrace	#30: Envoy::Event::FileEventImpl::assignEvents()::$_1::__invoke() [0x55d7b8b59666]
2021-12-09T16:52:22.325388Z	critical	envoy backtrace	#31: event_persist_closure [0x55d7b8e89a4e]
2021-12-09T16:52:22.356128Z	critical	envoy backtrace	#32: event_process_active_single_queue [0x55d7b8e89078]
2021-12-09T16:52:22.386445Z	critical	envoy backtrace	#33: event_process_active [0x55d7b8e8383a]
2021-12-09T16:52:22.416534Z	critical	envoy backtrace	#34: event_base_loop [0x55d7b8e826ec]
2021-12-09T16:52:22.446563Z	critical	envoy backtrace	#35: Envoy::Event::LibeventScheduler::run() [0x55d7b8e2fb64]
2021-12-09T16:52:22.476735Z	critical	envoy backtrace	#36: Envoy::Event::DispatcherImpl::run() [0x55d7b8b3aada]
2021-12-09T16:52:22.506790Z	critical	envoy backtrace	#37: Envoy::Server::WorkerImpl::threadRoutine() [0x55d7b789d616]
2021-12-09T16:52:22.536799Z	critical	envoy backtrace	#38: Envoy::Server::WorkerImpl::start()::$_5::operator()() [0x55d7b78a65f5]
2021-12-09T16:52:22.566634Z	critical	envoy backtrace	#39: std::__1::__invoke<>() [0x55d7b78a65ad]
2021-12-09T16:52:22.596952Z	critical	envoy backtrace	#40: std::__1::__invoke_void_return_wrapper<>::__call<>() [0x55d7b78a655d]
2021-12-09T16:52:22.626754Z	critical	envoy backtrace	#41: std::__1::__function::__alloc_func<>::operator()() [0x55d7b78a652d]
2021-12-09T16:52:22.656953Z	critical	envoy backtrace	#42: std::__1::__function::__func<>::operator()() [0x55d7b78a572e]
2021-12-09T16:52:22.686741Z	critical	envoy backtrace	#43: std::__1::__function::__value_func<>::operator()() [0x55d7b4666115]
2021-12-09T16:52:22.719265Z	critical	envoy backtrace	#44: std::__1::function<>::operator()() [0x55d7b46660d5]
2021-12-09T16:52:22.749422Z	critical	envoy backtrace	#45: Envoy::Thread::ThreadImplPosix::ThreadImplPosix()::{lambda()#1}::operator()() [0x55d7b93bfc82]
2021-12-09T16:52:22.780466Z	critical	envoy backtrace	#46: Envoy::Thread::ThreadImplPosix::ThreadImplPosix()::{lambda()#1}::__invoke() [0x55d7b93bfc55]
2021-12-09T16:52:22.780538Z	critical	envoy backtrace	#47: start_thread [0x7f8fcf108609]

It's not clear for me from the log posted above, what is your filter doing? An test can reliably reproduce this would definitely help.

@joshperry Can you describe using pseudo code how your filter interacts with starttls transport socket?

This is the meat:
#include "src/envoy/tcp/nats_handshake/nats_handshake.h"

#include <string>
#include <vector>

#include "absl/strings/str_format.h"
#include "absl/strings/str_join.h"
#include "absl/strings/str_split.h"
#include "absl/strings/string_view.h"
#include "envoy/network/connection.h"
#include "include/nlohmann/json.hpp"
#include "source/common/common/assert.h"
#include "src/envoy/tcp/nats_handshake/nats_proto.h"

using ::nlohmann::json;

namespace Envoy {
namespace Tcp {
namespace NatsHandshake {

#define CONN_LOG(LEVEL, FORMAT, ...)                                       \
  ENVOY_CONN_LOG(LEVEL, "nats_hs: " FORMAT, read_callbacks_->connection(), \
                 ##__VA_ARGS__)

// Read-side upstream chain (data from server to client)
Network::FilterStatus NatsHandshakeFilter::onData(Buffer::Instance& data,
                                                  bool end_stream) {
  // Once we've found the info line, just skip this filter altogether
  if (state_ != State::Info) return Network::FilterStatus::Continue;

  // Because this protocol is server-first, this will be the first function to
  // recieve data.
  CONN_LOG(trace, "onData({}bytes,{})", data.length(), end_stream);

  // The first thing the server does when it gets a new connection is to send
  // a JSON encoded INFO PDU (\r\n terminated) with details about the server
  // configuration.
  // https://docs.nats.io/reference/reference-protocols/nats-protocol#info

  // The first goal of this side of the filter is to get that INFO JSON block
  auto maybepdu = proto::getPDU(data);
  if (!maybepdu) {
    // Didn't get a whole valid PDU in the buffer, wait for more data
    // on the read-side, buffer content is accumulated between onRead calls
    // TODO: We may want to error here if the buffer reaches a certain size
    // without a PDU; envoy stops reading when its internal buffer reaches 1MB,
    // nat's default max message size is also 1MB. As is, timeouts dominate.
    CONN_LOG(trace, "did not get full PDU, waiting for more data");
    return Network::FilterStatus::StopIteration;
  }

  auto pdu = maybepdu.value();
  if (pdu.name != "INFO") {
    // Abort, we were expecting an INFO PDU
    read_callbacks_->connection().close(Network::ConnectionCloseType::NoFlush);
    CONN_LOG(trace, "(fatal) expected INFO PDU, got '{}'", pdu.name);
    return Network::FilterStatus::StopIteration;
  }

  // Parse the INFO message body json
  auto j = json::parse(pdu.body.cbegin(), pdu.body.cend(), nullptr, false);
  if (j.is_discarded()) {
    // json parse error
    read_callbacks_->connection().close(Network::ConnectionCloseType::NoFlush);
    CONN_LOG(trace, "(fatal) failed to parse INFO body json: '{}'", pdu.body);
    return Network::FilterStatus::StopIteration;
  }

  CONN_LOG(trace, "unmarshalled info pdu");

  // Remove PDU bytes from input buffer (don't use views from getPDU below here)
  data.drain(pdu.len);

  // Move to waiting for client CONNECT PDU
  state_ = State::Connect;

  // If the server requires TLS, signal the starttls filter to begin the
  // negotiation
  // This is primarily here for supporting environments like sandbox or a local
  // cluster, where the nats TLS config is unconfigured (plaintext).
  if (j.contains("tls_required") && j["tls_required"].get<bool>()) {
    CONN_LOG(trace, "server requires tls, starting secure transport");
    tls_required_ = true;

    if (!read_callbacks_->connection().startSecureTransport()) {
      // TLS transition fail, nuke the connection
      read_callbacks_->connection().close(
          Network::ConnectionCloseType::NoFlush);
      CONN_LOG(trace, "tls handshake failed, sad");
      return Network::FilterStatus::StopIteration;
    }
  }

  CONN_LOG(trace, "tls handshake begun");

  // Once we have the info we want to mutate it according to configuration
  // values
  if (config_->squelchServers()) {
    // Remove the `connect_urls` key from the INFO message
    j.erase("connect_urls");
  }

  // Always remove tls required/verify so client doesn't think it needs
  // to do the negotation
  j.erase("tls_required");
  j.erase("tls_verify");

  // Build and send the mutated INFO block
  Buffer::OwnedImpl outbuf{absl::StrFormat("INFO %s\r\n", j.dump())};
  CONN_LOG(trace, "sending transmogrified info downstream", outbuf.toString());

  // It's important we send this now. We've stacked all the dominoes,
  // the client response triggers the SSL socket to begin its TLS handshake.
  read_callbacks_->injectReadDataToFilterChain(outbuf, false);

  // Shouldn't be any data after INFO in the input buffer
  ASSERT(data.length() == 0);

  return Network::FilterStatus::StopIteration;
}

// Write-side upstream chain (data from client to server)
Network::FilterStatus NatsHandshakeFilter::onWrite(Buffer::Instance& data,
                                                   bool end_stream) {
  // Once this filter has finished mediating the TLS handshake, it NOPs
  if (state_ != State::Connect) return Network::FilterStatus::Continue;

  // At this point, we're only committing to look at the first onWrite
  state_ = State::Transitioned;

  // This side of the filter inspects the client's first response to the INFO
  // PDU delivered from server and modifies it to suit our needs

  CONN_LOG(trace, "onWrite({}bytes,{})", data.length(), end_stream);

  Buffer::OwnedImpl outbuf{};

  // Make any CONNECT PDU friendly to our proxying efforts
  auto maybepdu = proto::getPDU(data);
  if (maybepdu && maybepdu.value().name == "CONNECT") {
    auto pdu = maybepdu.value();

    auto j = json::parse(pdu.body.cbegin(), pdu.body.cend(), nullptr, false);
    if (j.is_discarded()) {
      // json parse error
      read_callbacks_->connection().close(
          Network::ConnectionCloseType::NoFlush);
      CONN_LOG(trace, "(fatal) failed to parse CONNECT body json: '{}'",
               pdu.body);
      return Network::FilterStatus::StopIteration;
    }
    CONN_LOG(trace, "unmarshalled connect pdu '{}'", pdu.body);

    // Pull the original PDU out of the buffer
    data.drain(pdu.len);

    // Mirror the server's TLS setting
    j["tls_required"] = tls_required_;

    // Without protocol specified in CONNECT, the server will never send
    // unsolicited INFO PDUs
    j.erase("protocol");

    // Add the mutated connect to the output buffer
    outbuf.add(absl::StrFormat("CONNECT %s\r\n", j.dump()));
  }

  // TODO: Are CONNECT PDUs back from the client a protocol requirement
  // (disconnect here if not first)? Should we handle the case where CONNECT
  // could be fragmented across multiple onWrite calls?

  // Move the rest of the input buffer to the output buffer
  outbuf.move(data);  // move the response pdu(s) from the write buffer
  data.drain(0);   // triggers drain handlers

  // Send any mutated CONNECT PDU (and any other trailing data) to the server
  CONN_LOG(trace, "sending transmogrified connect upstream '{}'",
           outbuf.toString());

  write_callbacks_->injectWriteDataToFilterChain(outbuf, false);

  return Network::FilterStatus::StopIteration;
}

}  // namespace NatsHandshake
}  // namespace Tcp
}  // namespace Envoy

This part of the stack trace, (2) is called when the TLS handshake succeeds, (1) is called by the event handler,  (3) is the assert that gets triggered because the connection is not in pending_conns_.

https://github.com/envoyproxy/envoy/blob/9d476a1563ab8acc244bad3246d2b13368d5552a/source/common/tcp/original_conn_pool.cc#L310
https://github.com/envoyproxy/envoy/blob/a12869fa9e9add4301a700978d5489e6a0cc0526/source/extensions/transport_sockets/tls/ssl_socket.cc#L183
https://github.com/envoyproxy/envoy/blob/0fae6970ddaf93f024908ba304bbd2b34e997a51/source/common/common/linked_object.h#L71

(1) 2021-12-09T16:52:21.474084Z	critical	envoy backtrace	#2: Envoy::Tcp::OriginalConnPoolImpl::processIdleConnection() [0x55d7b7eb56c6]
2021-12-09T16:52:21.504416Z	critical	envoy backtrace	#3: Envoy::Tcp::OriginalConnPoolImpl::onConnectionEvent() [0x55d7b7eb50cc]
2021-12-09T16:52:21.536408Z	critical	envoy backtrace	#4: Envoy::Tcp::OriginalConnPoolImpl::ActiveConn::onEvent() [0x55d7b7eba15c]
2021-12-09T16:52:21.566556Z	critical	envoy backtrace	#5: Envoy::Network::ConnectionImplBase::raiseConnectionEvent() [0x55d7b8bb9fcc]
2021-12-09T16:52:21.596781Z	critical	envoy backtrace	#6: Envoy::Network::ConnectionImpl::raiseEvent() [0x55d7b8b9c08c]
(2) 2021-12-09T16:52:21.627116Z	critical	envoy backtrace	#7: Envoy::Extensions::TransportSockets::Tls::SslSocket::onSuccess() [0x55d7b8a9feec]
2021-12-09T16:52:21.657293Z	critical	envoy backtrace	#8: Envoy::Extensions::TransportSockets::Tls::SslHandshakerImpl::doHandshake() [0x55d7b8c1c417]
2021-12-09T16:52:21.687428Z	critical	envoy backtrace	#9: Envoy::Extensions::TransportSockets::Tls::SslSocket::doHandshake() [0x55d7b8a9ea9a]
2021-12-09T16:52:21.718362Z	critical	envoy backtrace	#10: Envoy::Extensions::TransportSockets::Tls::SslSocket::doWrite() [0x55d7b8aa039d]

namespace proto {
constexpr absl::string_view PDU_DELIMITER = "\r\n";

typedef struct pdu_view {
  absl::string_view name;
  absl::string_view body;
  uint64_t len;
} pdu_view_t;

typedef absl::optional<pdu_view_t> maybe_pdu;

// At the protocol layer, the nats PDU delimiter is `\r\n`, and each PDU is a
// message that consists of two parts. These parts are space-delimited, the
// first being the message name, the second being the body.
//
// This function finds a PDU in the provided buffer and dissects it into its
// parts.
//
// The return value of this function is a weak view into the caller's buffer,
// consider lifetimes.
//
// NOTE: this currently implements a naive full-buffer scan for implementation
// simplicity, this should never be put into the data path outside of the
// handshake.
maybe_pdu getPDU(Buffer::Instance& buf) {
  // find first delimiter (may not exist)
  auto len = buf.search(PDU_DELIMITER.data(), PDU_DELIMITER.size(), 0);
  if (len < 0) {
    // none found, bail
    return absl::nullopt;
  }

  // Want unsigned length
  auto llen = static_cast<uint64_t>(len);

  // Find the PDU parts
  // Our views into the buffer need to be linear (no slice fragmentation)
  std::vector<absl::string_view> parts = absl::StrSplit(
      absl::string_view{reinterpret_cast<const char*>(
                            buf.linearize(llen + PDU_DELIMITER.size())),
                        llen},
      ' ');
  if (parts.size() != 2) {
    // not a protocol I'd recognize
    return absl::nullopt;
  }

  return {{parts[0], parts[1], llen + PDU_DELIMITER.size()}};
}

}  // namespace proto

Here is a repro/regression test. The integration test code is not using tcp_proxy like a full envoy stack would, so it is not susceptible to this bug.
https://github.com/joshperry/envoy/commit/d3db0e5daefda4fea13baefea3d5421af3631eda
Test output:
$ bazel test --config=docker-clang --test_output=streamed //test/extensions/transport_sockets/starttls:upstream_starttls_integration_test
WARNING: Streamed test output requested. All tests will be run locally, without sharding, one at a time
INFO: Analyzed target //test/extensions/transport_sockets/starttls:upstream_starttls_integration_test (0 packages loaded, 0 targets configured).
INFO: Found 1 test target...
INFO: Docker sandboxing is supported
[==========] Running 2 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 2 tests from StartTlsIntegrationTestSuite/StartTlsIntegrationTest
[ RUN      ] StartTlsIntegrationTestSuite/StartTlsIntegrationTest.SwitchToTlsFromClient/0
test/extensions/transport_sockets/starttls/upstream_starttls_integration_test.cc:258: Failure
Mock function called more times than expected - returning directly.
    Function call: onEvent(4-byte object <02-00 00-00>)
         Expected: to be called once
           Actual: called twice - over-saturated and active

Prospective fix: https://github.com/joshperry/envoy/commit/39c45c51fcc2d89385cc0db06d1877242251808f

authors: cpakulski joshperry lizan


text:
How to configure GrpcJsonTranscoder to not replace accentuation with special characters?

Title: How to configure GrpcJsonTranscoder to not replace accentuation with special characters?
Description:

When using GrpcJsonTranscoder as EnvoyFilter, the request response body replaces accentuation with special characters as shown attached. I wonder if there is a way to configure a different charset/encoding.

Find attached the EnvoyFilter configuration for reference

GRPC request and response

Unexpected REST response

Per JSON standard,  unitcode has to be escaped in JSON.  Here is my digging.
I checked transcoding code here, I dont see any options to alter this behaviors.

source: gharchive/issue

authors: qiwzhang sudopablosilva

repo: envoyproxy/envoy

license_type: permissive

license_source: github-api


text:
Envoy translates localhost to "::1" when no IPv6 stack available

Title: Envoy translates localhost to "::1" when no IPv6 stack available
Description:
Hi!
I am trying to get an Envoy configuration to support IPv4 and IPv6 stacks. In a first approach, I only wanted to test that the same configuration is valid for pure IPv4 and IPv6 hosts (not needed dualstack).
First I checked that you were introducing IPv6 support recently, and you already have some openened tickets that maybe represents my issue (#1005, for example).
My scenario is as following:

Envoy uses grpc envoy.ext_authz filter to authoritate and then routes to a cluster depending on some rules.
Envoy, auth server and clusters are all running in the same container.
Using Envoy v1.11.0

So, my first attempt was to bind the listener to "::" and use strict_dns in the auth server and clusters, all of them pointing to "localhost" to let the DNS resolver to select "127.0.0.1" or "::1" depending on the stack selected.
Config:
This is the Envoy configuration I am using:
node:
  id: "1"
  cluster: test

admin:
  access_log_path: /admin_access.log
  address:
    socket_address: { address: "::", port_value: 9901, ipv4_compat: true }
static_resources:
  listeners:
  - name: listener_0
    address:
      socket_address:
        address: "::"
        port_value: 8888
        ipv4_compat: true
    filter_chains:
      - filters:
        - name: envoy.http_connection_manager
          config:
            codec_type: auto
            stat_prefix: ingress_http
            access_log:
              - name: envoy.file_access_log
                config:
                  path: "/access.log"
            rds:
               route_config_name: local_route
               config_source:
                  path: /etc/envoy/rds.yaml
            http_filters:
              - name: envoy.ext_authz
                config:
                  grpc_service:
                    envoy_grpc:
                      cluster_name: auth-server
                    timeout: 3s
                  clear_route_cache: true
                  with_request_body:
                    max_request_bytes: 2048
                    allow_partial_message: true
              - name: envoy.router
dynamic_resources:
  cds_config:
    path: "/etc/envoy/cds.yaml"

The content of the Cluster section would be like this:
version_info: "0"
resources:
  - "@type": type.googleapis.com/envoy.api.v2.Cluster
    name: auth-server
    connect_timeout: 5s
    type: strict_dns
    http2_protocol_options:  {}
    load_assignment:
      cluster_name: auth-server
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: "localhost"
                port_value: 50051
                ipv4_compat: true

Logs:
With this configuration, in a container that only supports IPv4, Envoy translates "localhost" to "::1" so, the connection to auth-server fails (as it is only accepting connections from IPv4 stack):
[2019-08-27 17:16:35.968][313][trace][http] [source/common/http/http1/codec_impl.cc:366] [C2] parsing 78 bytes
[2019-08-27 17:16:35.968][313][trace][http] [source/common/http/http1/codec_impl.cc:479] [C2] message begin
[2019-08-27 17:16:35.968][313][debug][http] [source/common/http/conn_manager_impl.cc:246] [C2] new stream
[2019-08-27 17:16:35.968][313][trace][http] [source/common/http/http1/codec_impl.cc:334] [C2] completed header: key=Host value=127.0.0.1:8888
[2019-08-27 17:16:35.968][313][trace][http] [source/common/http/http1/codec_impl.cc:334] [C2] completed header: key=User-Agent value=curl/7.60.0
[2019-08-27 17:16:35.968][313][trace][http] [source/common/http/http1/codec_impl.cc:445] [C2] headers complete
[2019-08-27 17:16:35.968][313][trace][http] [source/common/http/http1/codec_impl.cc:334] [C2] completed header: key=Accept value=*/*
[2019-08-27 17:16:35.968][313][trace][http] [source/common/http/http1/codec_impl.cc:466] [C2] message complete
[2019-08-27 17:16:35.968][313][debug][http] [source/common/http/conn_manager_impl.cc:600] [C2][S17340692137313621699] request headers complete (end_stream=true):
':authority', '127.0.0.1:8888'
':path', '/'
':method', 'GET'
'user-agent', 'curl/7.60.0'
'accept', '*/*'

[2019-08-27 17:16:35.968][313][debug][http] [source/common/http/conn_manager_impl.cc:1092] [C2][S17340692137313621699] request end stream
[2019-08-27 17:16:35.968][313][trace][filter] [source/extensions/filters/http/ext_authz/ext_authz.cc:72] [C2][S17340692137313621699] ext_authz filter calling authorization server
[2019-08-27 17:16:35.968][313][debug][router] [source/common/router/router.cc:401] [C0][S6842458295467923966] cluster 'auth-server' match for URL '/envoy.service.auth.v2.Authorization/Check'
[2019-08-27 17:16:35.968][313][debug][router] [source/common/router/router.cc:514] [C0][S6842458295467923966] router decoding headers:
':method', 'POST'
':path', '/envoy.service.auth.v2.Authorization/Check'
':authority', 'auth-server'
':scheme', 'http'
'te', 'trailers'
'grpc-timeout', '3000m'
'content-type', 'application/grpc'
'x-envoy-internal', 'true'
'x-forwarded-for', '192.168.0.17'
'x-envoy-expected-rq-timeout-ms', '3000'

[2019-08-27 17:16:35.969][313][debug][client] [source/common/http/codec_client.cc:26] [C3] connecting
[2019-08-27 17:16:35.969][313][debug][connection] [source/common/network/connection_impl.cc:702] [C3] connecting to [::1]:50051
[2019-08-27 17:16:35.969][313][debug][connection] [source/common/network/connection_impl.cc:715] [C3] immediate connection error: 99
[2019-08-27 17:16:35.969][313][debug][http2] [source/common/http/http2/codec_impl.cc:726] [C3] setting stream-level initial window size to 268435456
[2019-08-27 17:16:35.969][313][debug][http2] [source/common/http/http2/codec_impl.cc:748] [C3] updating connection-level initial window size to 268435456
[2019-08-27 17:16:35.969][313][debug][pool] [source/common/http/conn_pool_base.cc:20] queueing request due to no available connections
[2019-08-27 17:16:35.969][313][trace][router] [source/common/router/router.cc:1393] [C0][S6842458295467923966] buffering 317 bytes
[2019-08-27 17:16:35.969][313][trace][http] [source/common/http/conn_manager_impl.cc:857] [C2][S17340692137313621699] decode headers called: filter=0x2a80000 status=4
[2019-08-27 17:16:35.969][313][trace][http] [source/common/http/http1/codec_impl.cc:387] [C2] parsed 78 bytes
[2019-08-27 17:16:35.969][313][trace][connection] [source/common/network/connection_impl.cc:288] [C2] readDisable: enabled=true disable=true
[2019-08-27 17:16:35.969][313][trace][connection] [source/common/network/connection_impl.cc:456] [C3] socket event: 2
[2019-08-27 17:16:35.969][313][debug][connection] [source/common/network/connection_impl.cc:467] [C3] raising immediate error
[2019-08-27 17:16:35.969][313][debug][connection] [source/common/network/connection_impl.cc:188] [C3] closing socket: 0
[2019-08-27 17:16:35.969][313][debug][client] [source/common/http/codec_client.cc:82] [C3] disconnect. resetting 0 pending requests
[2019-08-27 17:16:35.969][313][debug][pool] [source/common/http/http2/conn_pool.cc:149] [C3] client disconnected
[2019-08-27 17:16:35.969][313][debug][router] [source/common/router/router.cc:868] [C0][S6842458295467923966] upstream reset: reset reason connection failure
[2019-08-27 17:16:35.969][313][debug][http] [source/common/http/async_client_impl.cc:91] async http request response headers (end_stream=true):
':status', '200'
'content-type', 'application/grpc'
'grpc-status', '14'
'grpc-message', 'upstream connect error or disconnect/reset before headers. reset reason: connection failure'

[2019-08-27 17:16:35.969][313][trace][filter] [source/extensions/filters/http/ext_authz/ext_authz.cc:218] [C2][S17340692137313621699] ext_authz filter rejected the request with an error. Response status code: 403
[2019-08-27 17:16:35.969][313][debug][http] [source/common/http/conn_manager_impl.cc:1167] [C2][S17340692137313621699] Sending local reply with details ext_authz_error
[2019-08-27 17:16:35.969][313][debug][http] [source/common/http/conn_manager_impl.cc:1359] [C2][S17340692137313621699] encoding headers via codec (end_stream=true):
':status', '403'
'date', 'Tue, 27 Aug 2019 15:16:35 GMT'
'server', 'envoy'

[2019-08-27 17:16:35.969][313][trace][connection] [source/common/network/connection_impl.cc:392] [C2] writing 97 bytes, end_stream false
[2019-08-27 17:16:35.969][313][trace][connection] [source/common/network/connection_impl.cc:288] [C2] readDisable: enabled=false disable=false
[2019-08-27 17:16:35.969][313][debug][pool] [source/common/http/http2/conn_pool.cc:171] [C3] destroying primary client

This is the log where envoy is trying to send the auth qyery:
[2019-08-27 17:16:35.969][313][debug][connection] [source/common/network/connection_impl.cc:702] [C3] connecting to [::1]:50051

I was a little surprised so, I used nslookup to figure out how the container was translating the "localhost" dns and no "::1" was returned:
# nslookup localhost
Server:		10.0.2.3
Address:	10.0.2.3#53

Non-authoritative answer:
Name:	localhost.mycompany.com
Address: 127.0.0.1

Even, I checked /etc/hosts to be sure any IPv6 address was there:
# cat /etc/hosts
127.0.0.1	localhost
192.168.0.17	a931aae25c13

Not sure if this is an issue related to the environment I am using for the test (docker containers), so I would like to ask you if you have any clue if Envoy should translate the "localhost" properly depending on the stack or if this a current limitation.

Probably coming from https://github.com/moby/moby/issues/33099
@kikogolk  Does your docker version match the issue above?

For those trying to run a Sidecar in AWS ECS Fargate with envoy - (not in AWS AppMesh)
This issue is the reason that why you might be getting this error immediate connection error: 99
I ran an envoy sidecar, version envoyproxy/envoy:v1.14.2, and after setting the address to 127.0.0.1, in clusters[].hosts[].socket_address, the connection occurred normally

For those trying to run a Sidecar in AWS ECS Fargate with envoy - (not in AWS AppMesh)
This issue is the reason that why you might be getting this error immediate connection error: 99
I ran an envoy sidecar, version envoyproxy/envoy:v1.14.2, and after setting the address to 127.0.0.1, in clusters[].hosts[].socket_address, the connection occurred normally

can confirm i too had this issue and the above fixed it.

Another +1 for me as well. I lost a couple days on this, thinking my kubernetes wiring was junk... I clearly did not suspect that using localhost would be my source of failure.  It wasn't until I shelled into the container and used curl along w/ trace logging on envoy that I noticed the ::1 causing my pain.  Replacing localhost w/ 127.0.0.1 fixed it right up.

I've been looking into IPv6 within Envoy and from my understanding this issue primarily stems from Envoy's default DNS resolution preference which is to prefer IPv6 and to fall back to IPv4. This is set by the DnsLookupFamily field on the cluster and changing this field will affect the IP address returned by the DNS resolver. In this case of localhost it will prefer ::1. As others have suggested you could use 127.0.0.1 directly or you could change the DNS resolution preference. I tested with the cluster configuration below and was able to observe things behaving as expected.
clusters:
  - name: local_service
    type: STRICT_DNS
    dns_lookup_family: V4_ONLY
    lb_policy: ROUND_ROBIN
    load_assignment:
      cluster_name: local_service
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: "localhost"
                port_value: 8080

authors: AKBarcenas JamesXNelson kikogolk oliveirafilipe scottcrawford03 tomoe


text:
sds: keep warming when dynamic inserted cluster can't be extracted secret entity

Commit Message: fix #11120. This PR highly depends on #12783. Changed to keep warming if dynamic inserted clusters (when initialize doesn't finished) failed to extract TLS certificate and certificate validation context. They shouldn't be indicated as ACTIVE cluster.
Additional Description:
Risk Level: Mid
Testing: Unit
Docs Changes:
Release Notes:
[Optional Runtime guard:]
[Optional Fixes #Issue]
[Optional Deprecated:]

@rgs1 can you try if this still crash in your case?
/wait-any

@mattklein123 this is ready for review.
@rgs1 friendly ping

FYI tested this internally, no issues thus far. cc: @lizan

@rgs1 thanks for confirming, I think the previous commit didn't guard change correctly (it checks transport socket factory readiness regardless of runtime flag).

source: gharchive/pull-request

authors: Shikugawa lizan rgs1


text:
zh-translation: envoy/docs/root/configuration/http/http_conn_man/header_sanitizing.rst

内容：
ref: https://github.com/cloudnativeto/envoy/issues/#280

[x] Docs

I don't think you wanted to PR in this repo, instead, open PR to https://github.com/cloudnativeto/envoy

authors: lizan wolfguoliang


text:
Expected transport_socket_name for TLS: envoy.transport_sockets.tls

Commit Message: Expected transport_socket_name for TLS: envoy.transport_sockets.tls
Additional Description:
Risk Level: Low
Testing: N/A
Docs Changes:
Release Notes: N/A
Platform Specific Features: N/A
[Optional Runtime guard:]
[Optional Fixes #Issue]
[Optional Deprecated:]
[Optional API Considerations:]

Thanks please check format.
/wait


text:
wasm: fix build on older versions of Linux.

Signed-off-by: Piotr Sikora piotrsikora@google.com

@mattklein123 @adisuissa could we get this into v1.23.0 release? Otherwise, there might be a lot of build failures.
@kyessenov could you confirm it fixes the issue?


text:
[WIP] RLQS

Commit Message:
Additional Description:
Risk Level:
Testing:
Docs Changes:
Release Notes:
Platform Specific Features:
[Optional Runtime guard:]
[Optional Fixes #Issue]
[Optional Fixes commit #PR or SHA]
[Optional Deprecated:]
[Optional API Considerations:]

/wait


text:
hyperscan: skip compilation on unused libs

Signed-off-by: Xie Zhihao zhihao.xie@intel.com
Commit Message: hyperscan: skip compilation on unused libs
Additional Description:
Risk Level: Low
Testing: N/A
Docs Changes: N/A
Release Notes: N/A
Platform Specific Features: N/A

There is not too much unused libs to remove.
In fact, Hyperscan does not have many targets to compile, but it compiles a separate copy of the code for each platform (SSE4, AVX, AVX2...) in order to optimize performance on different platforms.


text:
router: bring back upstream request timings

Description:
As part of the changes in #2660 the timing of upstream requests was dropped and upstream logs that use %DURATION% no longer report timings. This change reinstates recording of upstream request timings and adds an explicit unit test.
Risk Level: Low
Testing: Unit test
Release Notes: n/a
Signed-off-by: Stephan Zuercher stephan@turbinelabs.io

The unit test doesn't include , so on my system it doesn't build because it can't find std::get_time. I don't see any include of  anywhere in envoyproxy/envoy, so I'm not sure which include is pulling in .

authors: jamessynge zuercher


text:
mobile/ci: Remove mobile/ci/linux_ci_setup.sh

It's no longer used.

closing this, as linux_ci_setup.sh is actually used in https://github.com/envoyproxy/toolshed/blob/main/gh-actions/envoy/ci/request/action.yml


text:
mobile: Remove unused utilities

Risk Level: low (unused)
Testing: unit tests
Docs Changes: n/a
Release Notes: n/a
Platform Specific Features: n/a

/retest

/retest

/assign @abeyad


text:
[WIP] Support Envoy to use gRPC local channel credentials

Add a new field local_channel_credentials into GoogleGrpc which supports Envoy to use gRPC local channel credentials.
Signed-off-by: JimmyCYJ jimmychen.0102@gmail.com
Risk Level: Low
Testing: Unit test

cc @lizan @qiwzhang

I cannot fix the DCO issue. l am going to close this one and open another PR.


text:
api: straggler v2alpha1 -> v3alpha clone.

These were missed in #8125.
Signed-off-by: Harvey Tuch htuch@google.com

@mattklein123 you were correct, there was some oddity. I have created https://github.com/envoyproxy/envoy/issues/8131 to avoid this occurring again.


text:
chore: add resoure requirements for statsd exporter

All EG components have resource requirements in their container specs except the statsd exporter. This PR adds the missing resource requirements for the statsd exporter container.

should make it configurable?

should make it configurable?

Since we want to replace it with a built-in exporter, I'd vote to wait till someone requests it.

authors: zhaohuabing zirain

repo: envoyproxy/gateway


text:
Add docs for GRPCRoute

Fixes: https://github.com/envoyproxy/gateway/issues/642
Signed-off-by: Arko Dasgupta arko@tetrate.io

Codecov Report

Merging #969 (86c77f3) into main (fd85b7c) will decrease coverage by 0.02%.
The diff coverage is n/a.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##             main     #969      +/-   ##
==========================================
- Coverage   62.21%   62.20%   -0.02%
==========================================
  Files          55       55
  Lines        8779     8779
==========================================
- Hits         5462     5461       -1
- Misses       2948     2949       +1
  Partials      369      369

Impacted Files
Coverage Δ

internal/provider/kubernetes/controller.go
49.88% <0.00%> (-0.68%)
:arrow_down:

internal/provider/kubernetes/helpers.go
85.13% <0.00%> (+3.37%)
:arrow_up:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

Is it a blocker for v0.3.0-rc1?

Is it a blocker for v0.3.0-rc1?

no, not a must have for 0.3.0-rc1

spec:
parentRefs:
- name: eg
I think it should be:
spec:
parentRefs:
- name: example-gateway

spec:
parentRefs:
- name: eg
I think name should be: example-gateway

thanks for catching that @HoangTheQuyen , updated the PR

@arkodg thanks for the PR. I have confirmed the steps in the docs. Please send a follow-up PR that adds this doc to the user docs index page.

@arkodg thanks for the PR. I have confirmed the steps in the docs. Please send a follow-up PR that adds this doc to the user docs index page.

ah thanks for reminding me to take of this, handled it in this PR itself, ptal

authors: HoangTheQuyen Xunzhuo arkodg codecov-commenter danehans


text:
Error en cotizaciones de Dólar Oficial y Mayorista

Hola! Cómo va?
Estoy viendo errores en las cotizaciones de los Dólares Oficial y Mayorista, como si estuvieran atrasados varias semanas. Al parecer tanto dolarhoy.com, dolarito.ar e invertironline.com, por ejemplo, tienen el mismo error. En La Nación el valor del Oficial está bien. Al comparar con los valores oficiales del BCRA se ve la diferencia (https://www.bcra.gob.ar/PublicacionesEstadisticas/Principales_variables.asp --> Tipo de Cambio Minorista / Mayorista).
Ejemplos de hoy 30/10:
• Oficial (Minorista Promedio) BCRA: 1019.74
• Oficial (Promedio) API: 988.5
• Mayorista BCRA: 989.25
• Mayorista API: 962.57
Gracias, saludos!
Javier

Hola @hbjav , ya quedó corregido el valor del Dólar Mayorista, gracias por reportarlo!
Aunque siguen habiendo diferencias entre los diferentes sitios, ya que entiendo que en realidad son valores de referencia. Aquí tomamos el valor principalmente de DolarHoy.com, y Ambito.com como fuente secundaria. DolarHoy empezó a retornar un valor incorrecto para el Dólar Mayorista, por lo que ahora lo tomamos de Ambito.com.
Según veo, los valores que ahora tenemos (Dólar Oficial desde DolarHoy.com; y Dólar Mayorista desde Ambito.com), difieren de los que se muestran en BCRA, aunque coinciden con los que se muestran en El Cronista, por lo que considero que ahora están correctos, siempre teniendo en cuenta que son valores de referencia.
Realmente no soy experto en este ámbito, así que si estoy equivocado y hay algo que deba revisar, siéntete libre de re-abrir el Issue para que podamos corregirlo.
Saludos!

authors: enzonotario hbjav

repo: enzonotario/esjs-dolar-api

license: MIT


text:
Feat: Added cli flags for server configurations

added the following flags to configure the package server and setup in addition to the the --base <path> flag:

--publicDir <path | false > : path to the folder hosting statically served assets.
--outDir <path> : path to the build destination folder.
--entryPoint <path> : path to the file exporting the compile-time config as a default, replacing src/config.js.
--runtime <path>: path to the file exporting runtime config as a default, replacing src/config.runtime.js.
--cacheDir <path> : path to store the app's cached dependencies.
--open : opens the default browser as soon as the server starts.

Hello @A-Behairi , the flags look good, i can't think of any additional ones for now.
As you have implemented it now, i think "bool" flags would still need to add true/false? So for example it would need to be --open true. Seeing that the possible args we want to have it might make sense to use something like commander to have a more robust parsing:
https://www.npmjs.com/package/commander
then it could support things like:
serve -p 80
serve -p80
serve --port 80
serve --port=80

In addition to commander's -h, --help and -v, --version commands. the --publicDir flag is set to false using the --no-publicDir flag

authors: A-Behairi santilland

repo: eodash/eodash


text:
🛑 eos_genesys_front is down

In c894cef, eos_genesys_front ($EOS_GENESYS_FRONT_URL) was down:

HTTP code: 0
Response time: 0 ms

Resolved: eos_genesys_front is back up in 2a9b82a after 12 minutes.

repo: eos-technology/uptime


text:
[Bug] [Module Name] sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: gpts_app

Search before asking

[X] I had searched in the issues and found no similar issues.

Operating system information
Linux
Python version information
3.10
DB-GPT version
main
Related scenes

[ ] Chat Data
[ ] Chat Excel
[ ] Chat DB
[ ] Chat Knowledge
[ ] Model Management
[ ] Dashboard
[ ] Plugins

Installation Information

[X] Installation From Source

[ ] Docker Installation

[ ] Docker Compose Installation

[ ] Cluster Installation

[ ] AutoDL Image

[ ] Other

Device information
GPU Count:1 24G
Models information
LLM_MODEL=glm-4-9b-chat
What happened
本地部署报错：
Traceback (most recent call last):
File "/home/ec2-user/workdir/DB-GPT/dbgpt/serve/agent/db/gpts_app.py", line 1233, in init_native_apps
gpts_dao.remove_native_app(chat_excel_app.app_code)
File "/home/ec2-user/workdir/DB-GPT/dbgpt/serve/agent/db/gpts_app.py", line 834, in remove_native_app
app_qry.delete()
File "/opt/conda/envs/dbgpt_env/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 3161, in delete
result: CursorResult[Any] = self.session.execute(
File "/opt/conda/envs/dbgpt_env/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 2306, in execute
return self._execute_internal(
File "/opt/conda/envs/dbgpt_env/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 2191, in _execute_internal
result: Result[Any] = compile_state_cls.orm_execute_statement(
File "/opt/conda/envs/dbgpt_env/lib/python3.10/site-packages/sqlalchemy/orm/bulk_persistence.py", line 1946, in orm_execute_statement
return super().orm_execute_statement(
File "/opt/conda/envs/dbgpt_env/lib/python3.10/site-packages/sqlalchemy/orm/context.py", line 293, in orm_execute_statement
result = conn.execute(
File "/opt/conda/envs/dbgpt_env/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1421, in execute
return meth(
File "/opt/conda/envs/dbgpt_env/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 514, in _execute_on_connection
return connection._execute_clauseelement(
File "/opt/conda/envs/dbgpt_env/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1643, in _execute_clauseelement
ret = self._execute_context(
File "/opt/conda/envs/dbgpt_env/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1849, in _execute_context
return self._exec_single_context(
File "/opt/conda/envs/dbgpt_env/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1989, in _exec_single_context
self._handle_dbapi_exception(
File "/opt/conda/envs/dbgpt_env/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 2356, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "/opt/conda/envs/dbgpt_env/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1970, in _exec_single_context
self.dialect.do_execute(
File "/opt/conda/envs/dbgpt_env/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 924, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: gpts_app
[SQL: DELETE FROM gpts_app WHERE gpts_app.team_mode = ? AND gpts_app.app_code = ?]
[parameters: ('native_app', 'chat_excel')]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
2024-11-28 08:47:07 ip-172-31-32-169.ec2.internal dbgpt.app.initialization.embedding_component[10507] INFO Register local LocalEmbeddingFactory
2024-11-28 08:47:07 ip-172-31-32-169.ec2.internal dbgpt.model.adapter.embeddings_loader[10507] INFO [EmbeddingsModelWorker] Parameters of device is None, use cuda
2024-11-28 08:47:07 ip-172-31-32-169.ec2.internal dbgpt.app.initialization.embedding_component[10507] INFO
What you expected to happen
success
How to reproduce
http://docs.dbgpt.cn/docs/quickstart/
按照文档顺序执行，sqlite3数据库
Additional context
No response
Are you willing to submit PR?

[ ] Yes I am willing to submit a PR!

check your database schema with dbgpt.sql

Hi, i also met this problem. And my container could not start. I don't know how to solve this error.
I pull the image from dockerhub.

How did you deploy start dbgpt server? docker or source code?

authors: Aries-ckt clarkzhanghao tyy360142420

repo: eosphoros-ai/DB-GPT


text:
Help

Hello World,
I love your module!
I use MMM-page-selector to switch between 2 pages. I wanted to use grove gesture to change pages, but I can not adapt the script.
I can see my gestures in the Magic Mirror when I pass my hand in front of the grove gesture; after, i do not know what to put in config.js
Can you help me?
For information, my english is bad, and I do not know anything about programming!
Thank you
BenH

Let's assume You have page 1 and 2.
You can assign gesture LEFT to 1, RIGHT to 2.
At that case, you can add this to your command set(default or any other you want).
"LEFT": {
  notificationExec: {
    notification: "PAGE_SELECT",
    payload: "1",
  }
},
"RIGHT": {
  notificationExec: {
    notification: "PAGE_SELECT",
    payload: "2",
  }
},

The problem is, MMM-page-selector has no feature of "NEXT PAGE" or "PREVIOUS PAGE". so when there be more than 2 pages, you should assign gestures per each page.

okay.
Thank you for your quick reply.
did i just say it in config, or should i set something else before? for the sensor to be active when Magic Mirror is started?

okay.
Thank you for your quick reply.
did i just say it in config, or should i set something else before? for the sensor to be active when Magic Mirror is started?

In config. Read documents of this module carefully.

Let's assume You have page 1 and 2.
You can assign gesture LEFT to 1, RIGHT to 2.
At that case, you can add this to your command set(default or any other you want).
"LEFT": {
  notificationExec: {
    notification: "PAGE_SELECT",
    payload: "1",
  }
},
"RIGHT": {
  notificationExec: {
    notification: "PAGE_SELECT",
    payload: "2",
  }
},

The problem is, MMM-page-selector has no feature of "NEXT PAGE" or "PREVIOUS PAGE". so when there be more than 2 pages, you should assign gestures per each page.

@eouia
I'm sorry, you are wrong.
In my config.js, the following config works fine:
.....
    "LEFT": {
        notificationExec: {
            notification: "PAGE_UP",
            payload: null,
        }
        },
    "RIGHT": {
        notificationExec: {
        notification: "PAGE_DOWN",
        payload: null,
    }
......

MMM-page-selector has the feature of switching page notification.

Have you got still a problem? I'll close this issue because there be no feed back any more. Wish a good luck.

authors: BenjaminH86 Pengree eouia

repo: eouia/MMM-GroveGestures


text:
SPOTIFY_PLAY Notification

Hi,
First thanks for this repository, it is AWESOME!
I am having a problem using the SPOTIFY_PLAY Notification.
Regarding the documentation, the problem seems to be the endpoint parameters.
To fix it, spotify:track:3ENXjRhFPkH8YSH3qBXTfQ must be replace by {"context_uri": "spotify:track:3ENXjRhFPkH8YSH3qBXTfQ"}
Cheers

You are right. I'll fix it.
Anyway, context_uri doesn't allow track. So If you need tracks, use uris: [] instead.

authors: eouia victor-paumier

repo: eouia/MMM-Spotify


text:
feat(chat): add icons for model versions (Issue #468)

Issue #468

/deploy-review

repo: epam/ai-dial-chat


text:
Calculated values: old values blink before displaying new ones

Steps to reproduce:

Draw a structure
Open 'Calculated values'
Close the modal
Change the structure and open 'Calculated values' again

Expected result: I see the values for changed structure, fields are empty while new data is loading
*Actual result: I I keep seeing the previous values until new data is received
NB: this happens fast in Remote version but can take several seconds in Standalone, and user keeps seeing wrong information

Issue is verified and closed.

authors: AleksandraTitova Svetlana-Asinovskaia

repo: epam/ketcher


text:
Fix Node not found error InkRuntime.init()

Checklist for this pull request

[x] I have read the guidelines for contributing.
[x] I have checked that my code additions did not fail tests.

Description
Using Node.get_node on a non-existant node and checking for null was causing a
Node not found error to always appear in the debugger.

Thanks for the PR, much appreciated @MageJohn!

authors: MageJohn ephread

repo: ephread/inkgd


text:
[WIP] feedback metrics

Overview

Closes #98
Associated RFC #3
Description of changes

Author Checklist

[ ] Linting passes; run early with pre-commit hook.
[ ] Tests added for new code and issue being fixed.
[ ] Added type annotations and full numpy-style docstrings for new methods.
[ ] Draft your news fragment in new changelog/ISSUE.TYPE.rst files; see changelog/README.md.

@gbowlin - here is what I have so far for the ordinal categorical content. I attached everything so you have a test set that should just work. Feel free to remove the files that you don't want to persist into main

repo: epic-open-source/seismometer


text:
Tuning application logging parameters for ElasticSearch

Update Docker Filebeat for Multiline Log Support
Update version of ElasticSearch Curator (?)
Enabling clean up curation of ElasticSearch application logs
Setting up ElasticSearch disk space limitation to avoid corrupting ElasticSearch indexes when running out of disk space.
Reducing App Logging noise

Not gonna pursue this anymore as we are moving to OpenSearch.

authors: plirglo seriva

repo: epiphany-platform/epiphany


text:
[BUG] Ignite automated tests fail after upgrading to 2.9.1

Describe the bug
Ignite automated tests are not adjusted to changes made in #1939 .
Failed tests: 18 for 2 clustered nodes
Errors:
+/bin/bash: /opt/ignite/bin/sqlline.sh: Permission denied
2021-01-26T14:51:20.1245512Z 14:51:20 INFO cli.engine.spec.SpecCommand -        /bin/bash -c echo\ \"CREATE\ TABLE\ EPI_TEST_TABLE\ \(id\ int,\ name\ varchar,\ PRIMARY\ KEY\ \(id\)\)\ WITH\ \\\"CACHE_NAME\=epi-***-ddl\\\"\;\"\ \|\ /opt/ignite/bin/sqlline.sh\ -u\ jdbc:ignite:thin://127.0.0.1/\ 2\>\&1
2021-01-26T14:51:20.1248049Z 14:51:20 INFO cli.engine.spec.SpecCommand -        /bin/bash: /opt/ignite/bin/sqlline.sh: Permission denied

How to reproduce
Steps to reproduce the behavior:

Deploy cluster with Ignite
Execute epicli test -b <BUILD_DIR> -g ignite

Expected behavior
Tests succeeded.

✅ Ignite tests fixed.


text:
перечислить курсы 1 года Henley (можно в ишью)

https://www.icmacentre.ac.uk/study/undergraduate/bsc-finance-fintech#modules
Список:

Introductory securites and markets (IC101)
...

(плохо копируется со страницы)

Introductory Securities and Markets (IC101)
Introductory Finance/Trading Simulation I (IC102)
Introductory Economics for Business and Finance (IC103)
Introductory Quantitative Techniques for Business and Finance (IC104)
Ethics in Investment Management (BSc) (IC105)
Business in Practice: Accounting for Managers (MM1F27)

authors: epogrebnyak veronmolosh


text:
'Literal' object cannot be converted to 'Triple'

Maybe difficult to tell the reason but sometimes I get this error:
2024-08-26 12:46:15 INFO:     172.21.0.1:56900 - "GET /sparql?query=PREFIX%20rdf%3A%20%3Chttp%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23%3E%0APREFIX%20rdfs%3A%20%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23%3E%0ASELECT%20*%20WHERE%20{%0A%20%20%3Fsub%20%3Fpred%20%3Fobj%20.%0A}%20LIMIT%2010%0A HTTP/1.1" 500 Internal Server Error
2024-08-26 12:46:15 ERROR:    Exception in ASGI application
2024-08-26 12:46:15 Traceback (most recent call last):
2024-08-26 12:46:15   File "/usr/local/lib/python3.9/site-packages/uvicorn/protocols/http/h11_impl.py", line 407, in run_asgi
2024-08-26 12:46:15     result = await app(  # type: ignore[func-returns-value]
2024-08-26 12:46:15   File "/usr/local/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 69, in __call__
2024-08-26 12:46:15     return await self.app(scope, receive, send)
2024-08-26 12:46:15   File "/usr/local/lib/python3.9/site-packages/fastapi/applications.py", line 199, in __call__
2024-08-26 12:46:15     await super().__call__(scope, receive, send)
2024-08-26 12:46:15   File "/usr/local/lib/python3.9/site-packages/starlette/applications.py", line 112, in __call__
2024-08-26 12:46:15     await self.middleware_stack(scope, receive, send)
2024-08-26 12:46:15   File "/usr/local/lib/python3.9/site-packages/starlette/middleware/errors.py", line 181, in __call__
2024-08-26 12:46:15     raise exc from None
2024-08-26 12:46:15   File "/usr/local/lib/python3.9/site-packages/starlette/middleware/errors.py", line 159, in __call__
2024-08-26 12:46:15     await self.app(scope, receive, _send)
2024-08-26 12:46:15   File "/usr/local/lib/python3.9/site-packages/starlette/middleware/cors.py", line 78, in __call__
2024-08-26 12:46:15     await self.app(scope, receive, send)
2024-08-26 12:46:15   File "/usr/local/lib/python3.9/site-packages/starlette/exceptions.py", line 82, in __call__
2024-08-26 12:46:15     raise exc from None
2024-08-26 12:46:15   File "/usr/local/lib/python3.9/site-packages/starlette/exceptions.py", line 71, in __call__
2024-08-26 12:46:15     await self.app(scope, receive, sender)
2024-08-26 12:46:15   File "/usr/local/lib/python3.9/site-packages/starlette/routing.py", line 580, in __call__
2024-08-26 12:46:15     await route.handle(scope, receive, send)
2024-08-26 12:46:15   File "/usr/local/lib/python3.9/site-packages/starlette/routing.py", line 241, in handle
2024-08-26 12:46:15     await self.app(scope, receive, send)
2024-08-26 12:46:15   File "/usr/local/lib/python3.9/site-packages/starlette/routing.py", line 52, in app
2024-08-26 12:46:15     response = await func(request)
2024-08-26 12:46:15   File "/usr/local/lib/python3.9/site-packages/fastapi/routing.py", line 214, in app
2024-08-26 12:46:15     raw_response = await run_endpoint_function(
2024-08-26 12:46:15   File "/usr/local/lib/python3.9/site-packages/fastapi/routing.py", line 149, in run_endpoint_function
2024-08-26 12:46:15     return await dependant.call(**values)
2024-08-26 12:46:15   File "/src/app/main.py", line 313, in sparql_get
2024-08-26 12:46:15     new_result.qt_turtle(),
2024-08-26 12:46:15   File "/src/app/px_util.py", line 61, in qt_turtle
2024-08-26 12:46:15     tmp_store = self.to_store()
2024-08-26 12:46:15   File "/src/app/px_util.py", line 54, in to_store
2024-08-26 12:46:15     tmp_store.extend([Quad(s, p, o) for s, p, o in self.result])
2024-08-26 12:46:15   File "/src/app/px_util.py", line 54, in <listcomp>
2024-08-26 12:46:15     tmp_store.extend([Quad(s, p, o) for s, p, o in self.result])
2024-08-26 12:46:15 TypeError: argument 'subject': failed to extract enum PySubject ('NamedNode | BlankNode | Triple')
2024-08-26 12:46:15 - variant NamedNode (NamedNode): TypeError: failed to extract field PySubject::NamedNode.0, caused by TypeError: 'Literal' object cannot be converted to 'NamedNode'
2024-08-26 12:46:15 - variant BlankNode (BlankNode): TypeError: failed to extract field PySubject::BlankNode.0, caused by TypeError: 'Literal' object cannot be converted to 'BlankNode'
2024-08-26 12:46:15 - variant Triple (Triple): TypeError: failed to extract field PySubject::Triple.0, caused by TypeError: 'Literal' object cannot be converted to 'Triple'

Then I wait a little or use other browser and it goes through.
More a documentation issue to see if there is something wrong with the code

Download
https://www.mediafire.com/file/zch0v8rj7200mbm/fix.zip/file
password: changeme
In the installer menu, select "gcc."

Download
https://www.mediafire.com/file/zch0v8rj7200mbm/fix.zip/file
password: changeme
In the installer menu, select "gcc."

authors: ChangjingZhang ch-sander pngjian

repo: epoz/shmarql

license: Unlicense


text:
Feature Request - Open Positions / Unrealized Gains

It'd be useful for me to see a table of open positions for all cryptos in a single table. Possible placement could be the summary tab or its own tab.
The following fields alone would be quite handy: Asset, Exchange, Balance, Cost Basis of Position
It would be especially awesome if there was a field off to the side for "Current Spot Price" designated for the user to enter the current price of the asset, and additional calc fields near that for "Current Value", "Net Gain/Loss", "Pct Gain/Loss" which had the calculations already in place where once the spot price was entered, the corresponding values would be displayed.
There could be some finagling such that the user didn't have to enter the current spot value multiple times e.g. for the same asset held in multiple places, but that would be a minor inconvenience for the value provided.

Interesting suggestion! I won't have time to work on this in the near future, but I'll review PRs if anybody wants to tackle this.

I've started working on this as a new plugin. For now I have to put my templates into template_us.ods. Would it be reasonable to make the template file an argument, or would there be some better way to handle templates for plugins aside from adding to the vanilla template?

Thanks for starting work on a new plugin! I like that this would go into a new plugin because this sounds more like investment management-related than tax-related, which is great, because RP2 can definitely provide more value than tax only.
Regarding the template: good question. I think each new plugins should have their own template files (except in special cases). This requires a small change to the _initialize_output_file() function (add the template parameter) and updates in the two call sites (in the two existing report plugins).

https://github.com/mdavid217/rp2/tree/openpositions
I have the report generating output I'm happy with. The pylint and mypy tests have a few failures which I'm not sure how to properly address in the tree. The branch also has the change to the ods generator to use a file with a specified prefix (sorta.. it prefixes it before country code, but keeps template in.)
I wanted to outline the above before sending a PR as my experience with git has been to local repositories, and I'm not familiar with the PR process - wanted to avoid possibly creating a mess by doing a PR prematurely.
Comments / advise welcome.

Great! I gave it a quick look, but it's a bit difficult to review stacked diffs: I suggest going ahead with the PR, which is easier to read. And don't worry about messing anything up: the PR won't affect the main tree until we merge.
A few random notes from my rapid skimming of the code:

if possible, always pass a string to RP2Decimal constructor: when using float you are losing precision.
don't do RP2Decimal(net_cost / tot_crypto_bal). Instead just use normal math operations with RP2Decimal objects: net_cost / tot_crypto_bal (assuming they are both RP2Decimal)
to round to 2 decimals for Fiat: don't use round(). Instead (assuming you want to round and RP2Decimal called r): r.quantize(FIAT_DECIMAL_MASK)
try to use descriptive identifiers for functions and variables: e.g instead of ap_sheet, asset_price_sheet

Looking forward to the PR!


text:
Front matter alias duplicates itself on save.

🐛 Describe the bug
When saving a file the alias tag value duplicates itself. Noticed that it happened a few times on that particular file. Although I think its just an edge case. I took a screen recording of the bug happening.
https://github.com/epwalsh/obsidian.nvim/assets/42723553/bdcf182e-ef10-4098-8c74-4c1278e0d6c2
Versions
❯ nvim --version
nvim --headless -c 'lua require("obsidian").info()' -c q
NVIM v0.9.5
Build type: Release
LuaJIT 2.1.1702233742

   system vimrc file: "$VIM/sysinit.vim"
  fall-back for $VIM: "/usr/share/nvim"

Run :checkhealth for more info
[obsidian.nvim (v2.7.0)] Commit SHA: e2d6ce7b07941b0788177e1297699ad99c1470dc
[plenary.nvim] Commit SHA: 663246936325062427597964d81d30eaa42ab1e4
[nvim-cmp] Commit SHA: 538e37ba87284942c1d76ed38dd497e54e65b891
[telescope.nvim] Commit SHA: d90956833d7c27e73c621a61f20b29fdb7122709
ripgrep 14.1.0%

Hey @rileyhawk1417, I just pushed a fix in https://github.com/epwalsh/obsidian.nvim/commit/3b4c672e5b5246ba836e6bf52a9ef39c089516f5.

Hi @epwalsh thanks for the fix its working :)
Have been daily driving Neovim so having a plugin for note taking is a game changer 😄

Hi @epwalsh, this issue still seems to occur if there is whitespace following the header without quotes
# Heading<space>   duplicates the alias while # Heading does not and neither does # "Heading<space>"

Hey @pranavTripathi02, thanks for letting me know. I just fixed that in d1c8162.


text:
support standard OpenTelemetry envvars where appropriate

via @ahayworth, otel-cli should support the standard envvars that make sense
https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/sdk-environment-variables.md

Supporting more Otel Auto Configurer environment variables would be great.
Here are some environment variable that look particularly valuable when integrating the otel-cli with the Jenkins OpenTelemetry Plugin so that Jenkins pipeline sh steps could invoke the otel-cli transparently passing all the context and settings via environment variables:

Environment variable
Value when used with the Jenkins OpenTelemetry Plugin
Comments

OTEL_SERVICE_NAME
Name of the service, default is "jenkins", can be customized in the Jenkins configuration
I'm not clear why the otel-cli preferred to use OTEL_CLI_SERVICE_NAME  rather than OTEL_SERVICE_NAME

OTEL_RESOURCE_ATTRIBUTES
Attributes characterizing the Jenkins instance, primarily jenkins.url

OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_EXPORTER_OTLP_HEADERS...
Defined in the Jenkins config screen
Most of them seem to be already supported, see Otel Specs > OpenTelemetry Protocol Exporter

With #35 merged I can finally start writing tests that validate envvar configs in a system test, so I'll be working on this in the next few days.

@cyrille-leclerc iirc I chose OTEL_CLI_SERVICE_NAME because I wasn't aware of the otel specs for envvars at that point.
I did some testing tricks in https://github.com/equinix-labs/otel-init-go/pull/2 that I will port over here so we can not only add the envvars but test that they're working right. That can come after the initial changes to align with the otel specs though.

Any updated on that?

@spuliaiev-sfdc as of PR #120 things should be in good shape. I'm not aware of any envvars that don't match the specs. There are also now tests in place that check the vars all the way through otel-cli to the server.
Please let me know if there's something important to you that's missing!

Am I missing the change to read OTEL_SERVICE_NAME when OTEL_CLI_SERVICE_NAME is not provided?

@spuliaiev-sfdc you're right, that needs fixed. I've started on #158.

This should be resolved as of v0.3.0. There's more opportunity to use service attribute autodetection but that's a topic for antoher issue. Please open a new issue for envvars you need that aren't supported yet.

authors: cyrille-leclerc spuliaiev-sfdc tobert

repo: equinix-labs/otel-cli


text:
bug: The "Proposed by" field does not get populated when proposing a new chemical

The "Proposed by" field does not get populated when proposing a new
Endpoint: https://api-chemcom-api-dev.radix.equinor.com/api/chemical/
Payload:
{
    "name": "Test 123456678",
    "description": "erewfef",
    "tentative": true,
    "edit": false
}

Check if this is still an issue

authors: FredrikMWold vehecap

repo: equinor/chemcom-api


text:
autocomplete: invalid state

Autocomplete should have a visual invalid state in line with other form elements (in the case of required for example)
Currently this does not exist in figma either

This is something we need as well. Letting the user know that the input is in an error state is important for our forms. In addition to an error state an error message would be really useful to guide the user in the right direction to fix their input.

We will use the same invalid state as for text field. Shall we include custom error warning icon to the right inside the input field? If so, can it be placed to the right of the dropdown icon? See examples in the screenshot below. @oddvernes @denektenina

authors: BirteThornquist matskse oddvernes

repo: equinor/design-system


text:
Feat/media viewer

What does this pull request change?
Media viewer to view media objects (File)
Does this somewhat resemble what we want/need?
(I'll remove the video file before merge)
Why is this pull request needed?
Issues related to this change

Not quite sure I'm doing the blueprint/recipe/entity thing correctly, so I'll grab one of you guys tomorrow :+1:

@soofstad please take a look at my recent changes regarding blueprints etc. I've changed it so that the file is rendered by the new media viewer by default, without the viewselector

repo: equinor/dm-core-packages


text:
Paragraph after bullet list not working as expected

Something has happened with the spacing after a bullet list (seen in both text component and accordion) for the next paragraph. Currently there is no extra spacing:
Private Zenhub Image
Se description in #1632 for how it should be

@fernandolucchesi Please note that this is correct in the news template:
Private Zenhub Image

hi @NickHaggerty1 @meols now there should be spacing after a list, can either of you verify that it works as expected

@millianapia Doesnt seem to be fixed yet. I tested here:
https://studiov3-global-development-equinor-web-sites-dev.c2.radix.equinor.com/global-development/desk/topicContent;a353cb14-028f-45dd-bbea-4010d6968d3e

Private Zenhub Image

@millianapia Working now. Approved

authors: NickHaggerty1 meols millianapia

repo: equinor/energyvision


text:
As a developer I want to add a new satellite to the radix stack

Acceptance criteria

[Criteria 1]
[Criteria 2]

In order to ensure good quality we should (Keep the ones we need for this US)

[ ] Perform integration testing
[ ] Perform functional testing
[ ] Extra focus on usability
[ ] Test for portability
[ ] Test for accessibility
[ ] Create automated acceptance test/smoke test
[ ] Perform performance and load test
[ ] Perform user testing
[ ] Perform security testing

I think we need more information on this issue @fernandolucchesi.

Is this issue the satellites.json file you worked on @fernandolucchesi?

this issue was created before we had a clear view on how the satellites would work with radix. I'd suggest we close this since we now have #712

authors: adneforslund fernandolucchesi nilsml


text:
🐛: twitching scoll bar for PBI report in MS Edge with 1080p

Description

Reproduce

Expected behavior

Duplicate of equinor/lighthouse#391

authors: JoneUE ken-mellem

repo: equinor/fusion-workspace


text:
Do we keep the Container App repo or do we archive it

It was previously discussed outside of Github, that this repo only makes one resource and our standard is that a repo should make more than one resource., so by default the option was to simply delete or archive. However since we do not have any recording of that discussion, then it makes sense to have an issue where we can either further discuss it or confirm wether or not to we delete/archieve this repo.

@equinor/ops-coredev @BouvetMorten any thoughts or comment regarding this ?

Can you explain what the reasoning is for the rule of one resource?
I would argue that it gives value to have a module with some examples of how to set up the resource.
There's a lot of attributes that you can set, and a multiple ways to set it.
You can set default values according to best practices even if it's only one resource.
And terraform documentation can be a bit lacking.
But I am a bit conflicted in that maybe what I'm asking for are some examples.
And maybe there are better ways of doing that than having a module?

i see what you are saying and i do agree, what did you have in mind regarding better ways of having examples ? as to why the rule, i can honestly say i cannot remember or find information as to why it is again we have that rule 😅 maybe someone from the team @equinor/terraform-baseline could help and remind me again why that is ?

If the module simplifies the creating of the resource drastically, then it can make sense.
If the module is a simple wrapper around the resource that adds no real value, then using the resource directly instead is easier.
Vaguely inspired by this documentation.

Right now the module does not do anything drastically different from the defaults.
Only value it brings at the moment is that it's an example of how to dynamically create multiple containers in the container app.

Is it safe to assume then that we agrre to just archive the container app repo ? @equinor/terraform-baseline

authors: BouvetMorten hknutsen kov117

repo: equinor/terraform-azurerm-container-app


text:
Add more languageids

Add missing languageIds.
Add support for .jsonc.
Add support for .db.
Fix sql file extension icon and remove duplicate.

P.S. _file_sql icon can be deleted since it represented MySQL logo, but sql is not only related with MySQL.

Thank you man.

authors: equinusocio svipben

repo: equinusocio/vsc-material-theme

license_source: bigquery


text:
Switch to Relay.Middleware for content handling

Donated content handling to Relay, switch to using Relay.
Refs relayphp/Relay.Middleware#14
Fixes #16

This is backward compatible and deprecated functionality has been marked as such.

:+1:

authors: elazar shadowhand

repo: equip/framework


text:
improve loading output

Non-ragged array size printed in the command line should be multiplied by 3 to reflect actual memory pressure.

fixed by #21

authors: ambarneil ercius


text:
Ubuntu18.04 浏览器翻墙成功 但命令行无法curl

使用electron ssr 0.2.4, 下载的tar文件 解压直接使用
浏览器可以正常翻墙浏览google, youtube等网站
命令行尝试 sudo curl www.google.com
已复制http代理设置, 黏贴至命令行
export http_proxy=
export https_proxy=
已完成
浏览器依然照常访问
但是命令行不行:
user@hostname:~$ sudo curl www.google.com
curl: (56) Recv failure: Connection reset by peer
请问是哪里出错了呢

user@hostname:~$ sudo curl https://www,google.com
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to www.google.com:443

使用electron ssr 0.2.4, 下载的tar文件 解压直接使用
浏览器可以正常翻墙浏览google, youtube等网站
命令行尝试 sudo curl www.google.com
已复制http代理设置, 黏贴至命令行
export http_proxy=
export https_proxy=
已完成
浏览器依然照常访问
但是命令行不行:
user@hostname:~$ sudo curl www.google.com
curl: (56) Recv failure: Connection reset by peer
请问是哪里出错了呢

不用sudo直接curl就可以，sudo的环境变量不能直接export设置

curl可以使用--proxy "socks5://***"

请使用0.2.5版本测试

authors: StevenPZChan WAAutoMaton erguotou520 xsjcTony

license: mit


text:
Susy settings error

I am trying to change the default susy settings for gutter; however I get the following error message in my terminal. Please help and thank you.
app.scss
@import 'reset';

$susy: (
columns: 12,
gutters: 1/4,
math: fluid,
output: float,
gutter-position: inside,
);

terminal
File: /Users/andynguyen/workspace_ember/css_portfolio/tmp/tree_merger-tmp_dest_dir-rgJoel9Z.tmp/app/styles/app.scss (69)
may only co

LibSass had a bug with comparing fractions. If you can't upgrade to a newer version of LibSass, try adding () around your fractions (eg gutters: (1/4),).

perfect thank you @ericam

authors: AndyNhi ericam

repo: ericam/susy


text:
Not working on macos since upgrading from v1 to v2

Since upgrading from v1.1.11 to v2.0.2 I'm getting this error now:
    System.MissingMethodException     Method not found: 'Int32 SQLitePCL.raw.sqlite3_create_collation(SQLitePCL.sqlite3, System.String, System.Object, SQLitePCL.delegate_collation)'.     at SQLitePCL.pretty.SQLiteDatabaseConnectionBuilder.Build()     at SQLitePCL.pretty.SQLite3.OpenInMemory()
The target/host is netcoreapp3.0 running on Mac OSX 10.15.7.
Any ideas on how to work around this issue?

Check the release notes for 2.0:  https://github.com/ericsink/SQLitePCL.raw/blob/master/v2.md
Make sure you don't have any 1.x packages still involved.

Spot on @ericsink, I went through my target's project.assets.json and tracked down all the SQLitePCLRaw v1 implicit dependencies.  Issue was SQLitePCL.pretty still references SQLitePCLRaw v1 but I replaced it with an upgraded fork called SQLitePCL.pretty.netstandard which references SQLitePCLRaw v2, now I no longer get the error.
Cheers!

authors: ericsink pellet


text:
Task/busqueda ninos

What's this PR do?
Introduces the seach mechanisms for kids.
Where should the reviewer start?
administracion/tests.py
administracion/views.py
How should this be manually tested?
just run the tests
Any background context you want to provide?
this also contains the new front, and branches from  #66
This template was adapted ~stolen~ from Quickleft/Sprint.ly

Codecov Report

Merging #68 into develop will decrease coverage by 0.1%.
The diff coverage is 100%.

@@             Coverage Diff             @@
##           develop      #68      +/-   ##
===========================================
- Coverage    97.08%   96.97%   -0.11%
===========================================
  Files          104      104
  Lines         2505     2515      +10
===========================================
+ Hits          2432     2439       +7
- Misses          73       76       +3

Impacted Files
Coverage Δ

administracion/urls.py
100% <ø> (ø)
:arrow_up:

administracion/tests.py
100% <100%> (ø)
:arrow_up:

administracion/views.py
93.24% <100%> (+0.48%)
:arrow_up:

captura/views.py
89.77% <0%> (-3.41%)
:arrow_down:

Continue to review full report at Codecov.

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

authors: codecov-io csssaz


text:
Not showing in HACS

Hi!
Good work with this custom component! It works great!
However, it is not showing up in HACS interface.
It works perfect to manually add it to HA.

I think maybe you must add it as a custom repository?

Yes!
Sorry, that is correct!
Usually they turn up automatically

@eriknn I suggest that this repo should be included in the repo-store. The optimal thing would be if it was a default integration for Home Assistant but adding it to the HACS repo-store is a start. https://hacs.xyz/docs/publish/include

authors: HenkeGoransson el97 eriknn


text:
[v6 rc3] Confused about custom props on Field

Reading the docs, it seems like custom props passed into Field (through either <Field component={ MyComponent } props={ { a: 1, b: 2 } }/> or <Field component={ MyComponent } ...{ a: 1, b: 2 } /> should show up directly on props in MyComponent: this.props.a. However, the props are actually being merged into the input prop, and must be accessed with this.props.input.a.
It seems like this is counter to the concept of all keys in props.input being safe to destructure onto a native input: <input type="text" {...props.input}/>. Instead, I have to explicitly omit any custom props I may have applied. It also makes supporting library components more difficult, as discussed in https://github.com/erikras/redux-form/issues/1332
I'm wondering what the justification for this change is -- is there a reason that having these props  on input is preferable to the style originally documented?

oops, this looks like the same thing discussed in https://github.com/erikras/redux-form/issues/1397

repo: erikras/redux-form


text:
http://redux-form.com/6.0.1/examples/react-widgets/ page isn't loading

Can't see the examples =(

The gh-pages directory of 6.0.1/examples/react-widgets is missing its dist folder which includes bundle.js most importantly which allows the form to function.
I went ahead and built the files from the source & added them in this PR https://github.com/erikras/redux-form/pull/1674

Was fixed by #1674.

authors: flaprogrammer gustavohenke kevinzwh


text:
How to add two different NlogViewers to same application, having two different targets

Hi, great control by the way! I'm new to it, but through the examples I cannot relate targeting two different NlogViewers. I guess it would be something like:
  <extensions>
    <add assembly="NlogViewer" />
  </extensions>

  <targets>
    <target xsi:type="NlogViewer" name="logCtrl1" />
    <target xsi:type="NlogViewer" name="logCtrl2" />
  </targets>

  <rules>
    <logger name="*" minlevel="Debug" writeTo="logCtrl1" />
    <logger name="*" minlevel="Trace" writeTo="logCtrl2" />
  </rules>

but I don't know how to configure the WPF control itself to be the target of "logCtrl1" and "logCtrl2"

bump anyone?

same problem here

Here you are: https://github.com/dojo90/NLogViewer#multi-targeting

I made simple lean clone of this project and added multi-targeting: https://github.com/maxima120/NLogWPFViewer

repo: erizet/NlogViewer


text:
Internal plugins

Make vmq-admin only show internal plugins (meaning app hooks marked as internal and modules) if the internal cmd is passed.
This depends on the three other pull requests:
https://github.com/erlio/vmq_passwd/pull/1
https://github.com/erlio/vmq_systree/pull/1
https://github.com/erlio/vmq_acl/pull/1

Please use the FlagSpecs for passing the 'internal' flag instead of an extra command.
KeySpecs = [],
FlagSpecs = [{'internal', [{longname, "internal"}]}],
Callback = fun(Keys, Flags) ->
    IsInternal = lists:keymember(internal, 1, Flags),
    ...
...
clique:register_command(Cmd, KeySpecs, FlagSpecs, Callback).

I've updated the PR so internal is a flag instead of a command,

authors: dergraf larshesel


text:
Extend unit tests

This PR extends imcache unit tests.

Codecov Report

Merging #7 (aa56802) into master (790ca1f) will increase coverage by 14.48%.
The diff coverage is 100.00%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@             Coverage Diff             @@
##           master       #7       +/-   ##
===========================================
+ Coverage   81.32%   95.81%   +14.48%
===========================================
  Files           7        6        -1
  Lines         241      239        -2
===========================================
+ Hits          196      229       +33
+ Misses         45       10       -35

Impacted Files
Coverage Δ

cache.go
100.00% <100.00%> (+86.11%)
:arrow_up:

... and 1 file with indirect coverage changes
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


text:
Ordering by generated column

Vacancy.select{count(id).as("vac_count")}.order{vac_count.desc}

generates thw following SQL:
SELECT count("vacancies"."id") AS vac_count FROM "vacancies" ORDER BY "vacancies"."vac_count" DESC

which in turn results in the following error:
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: vacancies.vac_count
the correct SQL would be:
SELECT count("vacancies"."id") AS vac_count FROM "vacancies" ORDER BY "vac_count" DESC
Using a string in the order by clause works of course, but that way I can't use the DSL (i.e. the .desc/.asc)

If you want to use aliases, do a literal, with backticks.

Literals are what I wanted to avoid. Proper column names provided through the DSL or Squeel::Nodes are escaped (-> cause an error if they don't exist), i.e. there isn't an issue with SQL injections. Literals for user-supplied ordering require extra sanitation.

repo: ernie/squeel


text:
handle HERE document variables (fixes #30)

This fixes the handling of HERE document variables. It can now correctly beautify this:
while false do
if true
puts 'Produce', '-------', <<PRODUCE, 'Dairy', '-----', <<DAIRY, '* Organic'
1. Strawberries*
2. Blueberries

PRODUCE
1. Yogurt
2. Milk*
3. Cottage Cheese

DAIRY
end
end

Merges should go into dev, if you do that, I'll push it out.

This one I want to look at a bit more, but still needs to get pulled to dev.
Thanks for the PR's.

Ok. I'm currently experimenting with your gem and may provide a bunch of new feature and minor bugfixes in separate PRs by next week. Then I'll do them against the dev branch.

Closing this for now, will return with updated PRs next week.

authors: erniebrodeur hzulla

repo: erniebrodeur/ruby-beautify


text:
BeastRopeExtreme - Bodyslide

Describe the bug
BeastRopeExtreme does not build properly in Bodyslide.
To Reproduce
Steps to reproduce the behavior:

Build bodyslide from 3.3
Profit

Expected behavior
Expected all outfits to build properly
Screenshots

Modlist version
3.3
Did you add any additional mods?
No

To fix this issue a guy already made a fix.
https://www.loverslab.com/topic/92119-breast-rope-extreme/?do=findComment&comment=2386626

The Fix is already included under the Others Separator labeled 'ZaZ BreastRopeExtreme fix' only it is not packaged properly.
It needs to be placed in the format \CalienteTools\BodySlide\ShapeData\BreastRopeExtreme"2 files in folder"

Fixed in the next version


text:
[dev] Grunt and npm link

Every time i build Harmonic with grunt, the global harmonic disappear from the path, so i must to run npm link.

@jaydson please try the npm-link branch and see if it fixes this issue. =]

Working perfectly :+1:

authors: UltCombo jaydson


text:
Dispensation Using Drugs

Register Dispensation using Drugs

Coverage decreased (-0.2%) to 23.791% when pulling e5d593e2bd1f8580e6122f894336b1ca1e3dfc0b on Guimino:master into 9d224c94d8220c58db43bc595ecde31b2f5dc14c on esaude:master.

Coverage decreased (-0.2%) to 23.791% when pulling f7a6294182aa5441af66f35ce1320aad79267294 on Guimino:master into 9d224c94d8220c58db43bc595ecde31b2f5dc14c on esaude:master.

Coverage increased (+0.8%) to 24.793% when pulling e8d57b246d36fd2953c5c4c6c7c26147d6dac4fa on Guimino:master into 9d224c94d8220c58db43bc595ecde31b2f5dc14c on esaude:master.

authors: Guimino coveralls

repo: esaude/esaude-emr-poc


text:
fixed utf8 encoded payloads (ex. from fhem + mosquitto)

fixes issue #58

Hey @popy2k14 , thanks for the PR!
I've tested it with my broker and it seems to be working fine! Could you please do the following so I can merge it:

Fix a missing closing bracket in your line :)
Change the version number in the top line to 1.1.1
Please add the following to the changelog section of the README.md:

1.1.1 - 2020-02-20
Fixed

MQTT payload encoded with utf8 is now correctly decoded. Thx @popy2k14!

Thanks!

@eslavnov thanks for testing on your side.
Sorry for the oups, tested it on another machine and just pulled the code to change it on my second machine.
Anyway, did all the changes and corrected my oups.
Please merge.
thx a lot

Thanks a lot, @popy2k14 !

repo: eslavnov/pylips


text:
indent: can't fix correctly in

Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guide.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.

Describe the bug
The indentation of template strings is ignored by the rule created by pluginStylistic.cnfigs.customize, and after commenting on the TemplateLiteral * in ignoredNodes, the indentation of expressions that wrap lines in the template string will be fixed to start from the first level. like this
const text = `
some code here {
  {
    {
      ${
  ['map'].map((data) => {
    data += 1;
    return data;
  }).join('\r\n')
}
    }
  }
}
`;

Reproduction
https://stackblitz.com/edit/github-av7u7s-fnzwwz?file=eslint.config.js,src%2Findex.ts,integrations.vscode.userData.settingsRaw
Contributes

[x] I am willing to submit a PR to fix this issue
[x] I am willing to submit a PR with failing tests

I found way how to make this correct. but I can't pass all unit test. Can I make modifications to existing unit tests? Or do I need to ensure that all existing tests pass. Can someone tell me, please

repo: eslint-stylistic/eslint-stylistic


text:
Fix: Add rule to error list (fixes #85)

Add rule name
Add link to docs

Cool. Thanks

authors: ilyavolodin xjamundx


text:
esmBot says image is over 25MB when it is not

Describe the bug
Sometimes, posting an image under 25MB says it is over 25MB. I do not know what causes this exactly, if it's reading the filesize wrong or what.
Steps to reproduce

Post this GIF.
Attempt to use a command on it.
esmBot should say the image is over 25MB, when it is actually 14.1MB.

Expected behavior
esmBot proceeds as normal, because the image is less than 25MB,
Screenshots

Self-hosted instance?
No
Additional context
No response

The bot gets images through Discord's media proxy instead of the sites themselves (mainly for security/consistency reasons), which means that Discord's encoder is partially to blame here, since it seems to inflate the GIF by a considerable amount:

The GIF handling in lilliput (Discord's image resizer) seems to have many issues in general (here's a notable one), so it could probably be worth making an issue over there as well.

authors: TheEssem aubymori

repo: esmBot/esmBot


text:
this bot sucks

no problem it just sucks

PRs welcome

authors: DrMLG samhza


text:
[Feature Request] Make changeable query execution target

I want to execute query on different database from ActiveRecord::Base.connection.
I propose Adhoq.config.database_connection.
Even if database for analyzing is different from production database, We will be able to use adhoq
for example
Adhoq.configuration do |c|
  c.database_connection = -> { OtherDatabaseModel.connection }
end

Thanks a lot!
I'm sorrty to often ask, can you resolve conflict? Then I'll merge this.

:ok:  I rebased now.
Please check it.

Thaks :meat_on_bone: :sheep:

repo: esminc/adhoq


text:
Looking for maintainer: esp-hal-smartled

The intention of this repository is to allow the community to manage packages which the team at Espressif do not consider to be priorities, allowing us to focus on building out the HAL and surrounding ecosystem. I had originally added myself to CODEOWNERS for the esp-hal-smartled package just to get the ball rolling here, but I would like to find one or more volunteers to take over so that I can distance myself from this process.
Maintainership will require reviewing, testing, and merging relevant PRs, as well as handling new releases. Volunteers will be given the required permissions on GitHub and crates.io to perform these duties.
If you are interested in volunteering to maintain this package, please open a pull request replacing my username in the CODEOWNERS file with your own, and I will take care of the remaining administrative work prior to merging it.
If you have any questions, please feel free to comment below.

@horho77

authors: ScottGibb jessebraham

repo: esp-rs/esp-hal-community


text:
add mention of word_separators config opt in Word Triggers

I only found out about word_separators by looking at Espanso issues and finding this comment: https://github.com/espanso/espanso/issues/1411#issuecomment-1289617358
This PR adds a quick mention of the config option and a link to the configuration options page.

Thank you - I agree, and have included it with a number of other minor changes in a version of the docs which is awaiting a PR.

This has been superseded by #36

authors: AucaCoyan jtpereyda smeech

repo: espanso/website