Cluster pub/sub does not work

Jest test code
import Redis from 'ioredis';

test('cluster:pub/sub', async (done) => {
  const options = [{ host: '<IP_ADDRESS>', port: 7000 }];
  const sub = new Redis.Cluster(options);

  // @ts-ignore - TS2339: Property 'subscribe' does not exist on type 'Cluster'.
  sub.subscribe('test', function() {
    console.log('subscribe successfully');
  });

  sub.on('message', function(channel, message) {
    console.log(channel, message);
    done();
  });

  const pub = new Redis.Cluster(options);
  // @ts-ignore - TS2339: Property 'publish' does not exist on type 'Cluster'.
  pub.publish('test', 'updated');
});

I cannot receive any message from Redis in the code.

@luin

It looks like pub.publish is missing await so the message is never published.

I'm not sure what caused it, the single node mode works.

I have same issue here.
When I read the Redis official doc

Every node of a Redis cluster generates events about its own subset of the keyspace as described above. However, unlike regular Pub/Sub communication in a cluster, events' notifications are not broadcasted to all nodes. Put differently, keyspace events are node-specific. This means that to receive all keyspace events of a cluster, clients need to subscribe to each of the nodes.

Which is different to ioredis doc at Cluster > Pub/Sub paragraph

Pub/Sub in cluster mode works exactly as the same as in standalone mode. Internally, when a node of the cluster receives a message, it will broadcast the message to the other nodes. ioredis makes sure that each message will only be received once by strictly subscribing one node at the same time.

My situation is sometimes I could get the subscription message sometimes I couldn't.
Maybe it is because ioredis subscribe to the wrong node ?

@nodece I have tried your code locally and it works for me.
Maybe you could open the debug to see the connection information
$ DEBUG=ioredis:* ts-node test.js

The following is ioredis log:
ioredis:cluster status: [empty] -> connecting +0ms
  ioredis:cluster status: [empty] -> connecting +3ms
  ioredis:cluster:connectionPool Reset with [
  ioredis:cluster:connectionPool   { host: '<IP_ADDRESS>', port: 7000 },
  ioredis:cluster:connectionPool   { host: '<IP_ADDRESS>', port: 7001 }
  ioredis:cluster:connectionPool ] +0ms
  ioredis:cluster:connectionPool Connecting to <IP_ADDRESS>:7000 as master +2ms
  ioredis:redis status[<IP_ADDRESS>:7000]: [empty] -> wait +0ms
  ioredis:cluster:connectionPool Connecting to <IP_ADDRESS>:7001 as master +1ms
  ioredis:redis status[<IP_ADDRESS>:7001]: [empty] -> wait +1ms
  ioredis:cluster getting slot cache from <IP_ADDRESS>:7001 +5ms
  ioredis:redis status[<IP_ADDRESS>:7001 (ioredisClusterRefresher)]: [empty] -> wait +0ms
  ioredis:redis status[<IP_ADDRESS>:7001 (ioredisClusterRefresher)]: wait -> connecting +2ms
  ioredis:redis queue command[<IP_ADDRESS>:7001 (ioredisClusterRefresher)]: 0 -> cluster([ 'slots' ]) +1ms
  ioredis:cluster:subscriber selected a subscriber <IP_ADDRESS>:7000 +0ms
  ioredis:redis status[<IP_ADDRESS>:7000 (ioredisClusterSubscriber)]: [empty] -> wait +0ms
  ioredis:cluster:subscriber started +0ms
  ioredis:cluster:connectionPool Reset with [
  ioredis:cluster:connectionPool   { host: '<IP_ADDRESS>', port: 7000 },
  ioredis:cluster:connectionPool   { host: '<IP_ADDRESS>', port: 7001 }
  ioredis:cluster:connectionPool ] +4ms
  ioredis:cluster:connectionPool Connecting to <IP_ADDRESS>:7000 as master +1ms
  ioredis:redis status[<IP_ADDRESS>:7000]: [empty] -> wait +1ms
  ioredis:cluster:connectionPool Connecting to <IP_ADDRESS>:7001 as master +0ms
  ioredis:redis status[<IP_ADDRESS>:7001]: [empty] -> wait +0ms
  ioredis:cluster getting slot cache from <IP_ADDRESS>:7001 +4ms
  ioredis:redis status[<IP_ADDRESS>:7001 (ioredisClusterRefresher)]: [empty] -> wait +0ms
  ioredis:redis status[<IP_ADDRESS>:7001 (ioredisClusterRefresher)]: wait -> connecting +0ms
  ioredis:redis queue command[<IP_ADDRESS>:7001 (ioredisClusterRefresher)]: 0 -> cluster([ 'slots' ]) +1ms
  ioredis:cluster:subscriber selected a subscriber <IP_ADDRESS>:7000 +2ms
  ioredis:redis status[<IP_ADDRESS>:7000 (ioredisClusterSubscriber)]: [empty] -> wait +0ms
  ioredis:cluster:subscriber started +0ms
  ioredis:redis status[<IP_ADDRESS>:7001 (ioredisClusterRefresher)]: connecting -> connect +9ms
  ioredis:redis status[<IP_ADDRESS>:7001 (ioredisClusterRefresher)]: connect -> ready +0ms
  ioredis:connection set the connection name [ioredisClusterRefresher] +0ms
  ioredis:redis write command[<IP_ADDRESS>:7001 (ioredisClusterRefresher)]: 0 -> client([ 'setname', 'ioredisClusterRefresher' ]) +0ms
  ioredis:connection send 1 commands in offline queue +1ms
  ioredis:redis write command[<IP_ADDRESS>:7001 (ioredisClusterRefresher)]: 0 -> cluster([ 'slots' ]) +1ms
  ioredis:redis status[<IP_ADDRESS>:7001 (ioredisClusterRefresher)]: connecting -> connect +1ms
  ioredis:redis status[<IP_ADDRESS>:7001 (ioredisClusterRefresher)]: connect -> ready +0ms
  ioredis:connection set the connection name [ioredisClusterRefresher] +77ms
  ioredis:redis write command[<IP_ADDRESS>:7001 (ioredisClusterRefresher)]: 0 -> client([ 'setname', 'ioredisClusterRefresher' ]) +76ms
  ioredis:connection send 1 commands in offline queue +0ms
  ioredis:redis write command[<IP_ADDRESS>:7001 (ioredisClusterRefresher)]: 0 -> cluster([ 'slots' ]) +0ms
  ioredis:cluster cluster slots result count: 3 +91ms
  ioredis:cluster cluster slots result [0]: slots 10923~16383 served by [ '<IP_ADDRESS>:7002', '<IP_ADDRESS>:7005' ] +0ms
  ioredis:cluster cluster slots result [1]: slots 0~5460 served by [ '<IP_ADDRESS>:7000', '<IP_ADDRESS>:7003' ] +1ms
  ioredis:cluster cluster slots result [2]: slots 5461~10922 served by [ '<IP_ADDRESS>:7001', '<IP_ADDRESS>:7004' ] +0ms
  ioredis:cluster:connectionPool Reset with [
  ioredis:cluster:connectionPool   { host: '<IP_ADDRESS>', port: 7002, readOnly: false },
  ioredis:cluster:connectionPool   { host: '<IP_ADDRESS>', port: 7005, readOnly: true },
  ioredis:cluster:connectionPool   { host: '<IP_ADDRESS>', port: 7000, readOnly: false },
  ioredis:cluster:connectionPool   { host: '<IP_ADDRESS>', port: 7003, readOnly: true },
  ioredis:cluster:connectionPool   { host: '<IP_ADDRESS>', port: 7001, readOnly: false },
  ioredis:cluster:connectionPool   { host: '<IP_ADDRESS>', port: 7004, readOnly: true }
  ioredis:cluster:connectionPool ] +92ms
  ioredis:cluster:connectionPool Disconnect <IP_ADDRESS>:7000 because the node does not hold any slot +1ms
  ioredis:redis status[<IP_ADDRESS>:7000]: wait -> close +5ms
  ioredis:connection skip reconnecting since the connection is manually closed. +5ms
  ioredis:redis status[<IP_ADDRESS>:7000]: close -> end +0ms
  ioredis:cluster:connectionPool Remove <IP_ADDRESS>:7000 from the pool +0ms
  ioredis:cluster:connectionPool Disconnect <IP_ADDRESS>:7001 because the node does not hold any slot +0ms
  ioredis:redis status[<IP_ADDRESS>:7001]: wait -> close +0ms
  ioredis:connection skip reconnecting since the connection is manually closed. +0ms
  ioredis:redis status[<IP_ADDRESS>:7001]: close -> end +0ms
  ioredis:cluster:connectionPool Remove <IP_ADDRESS>:7001 from the pool +0ms
  ioredis:cluster:connectionPool Connecting to <IP_ADDRESS>:7002 as master +0ms
  ioredis:redis status[<IP_ADDRESS>:7002]: [empty] -> wait +0ms
  ioredis:cluster:connectionPool Connecting to <IP_ADDRESS>:7005 as slave +0ms
  ioredis:redis status[<IP_ADDRESS>:7005]: [empty] -> wait +1ms
  ioredis:cluster:connectionPool Connecting to <IP_ADDRESS>:7000 as master +1ms
  ioredis:redis status[<IP_ADDRESS>:7000]: [empty] -> wait +0ms
  ioredis:cluster:connectionPool Connecting to <IP_ADDRESS>:7003 as slave +0ms
  ioredis:redis status[<IP_ADDRESS>:7003]: [empty] -> wait +0ms
  ioredis:cluster:connectionPool Connecting to <IP_ADDRESS>:7001 as master +0ms
  ioredis:redis status[<IP_ADDRESS>:7001]: [empty] -> wait +0ms
  ioredis:cluster:connectionPool Connecting to <IP_ADDRESS>:7004 as slave +0ms
  ioredis:redis status[<IP_ADDRESS>:7004]: [empty] -> wait +3ms
  ioredis:cluster status: connecting -> connect +5ms
  ioredis:redis status[<IP_ADDRESS>:7000]: wait -> connecting +0ms
  ioredis:redis queue command[<IP_ADDRESS>:7000]: 0 -> cluster([ 'info' ]) +0ms
  ioredis:cluster:subscriber subscriber has left, selecting a new one... +96ms
  ioredis:redis status[<IP_ADDRESS>:7000 (ioredisClusterSubscriber)]: wait -> close +0ms
  ioredis:connection skip reconnecting since the connection is manually closed. +4ms
  ioredis:redis status[<IP_ADDRESS>:7000 (ioredisClusterSubscriber)]: close -> end +0ms
  ioredis:cluster:subscriber selected a subscriber <IP_ADDRESS>:7004 +0ms
  ioredis:redis status[<IP_ADDRESS>:7004 (ioredisClusterSubscriber)]: [empty] -> wait +1ms
  ioredis:cluster cluster slots result count: 3 +3ms
  ioredis:cluster cluster slots result [0]: slots 10923~16383 served by [ '<IP_ADDRESS>:7002', '<IP_ADDRESS>:7005' ] +0ms
  ioredis:cluster cluster slots result [1]: slots 0~5460 served by [ '<IP_ADDRESS>:7000', '<IP_ADDRESS>:7003' ] +1ms
  ioredis:cluster cluster slots result [2]: slots 5461~10922 served by [ '<IP_ADDRESS>:7001', '<IP_ADDRESS>:7004' ] +0ms
  ioredis:cluster:connectionPool Reset with [
  ioredis:cluster:connectionPool   { host: '<IP_ADDRESS>', port: 7002, readOnly: false },
  ioredis:cluster:connectionPool   { host: '<IP_ADDRESS>', port: 7005, readOnly: true },
  ioredis:cluster:connectionPool   { host: '<IP_ADDRESS>', port: 7000, readOnly: false },
  ioredis:cluster:connectionPool   { host: '<IP_ADDRESS>', port: 7003, readOnly: true },
  ioredis:cluster:connectionPool   { host: '<IP_ADDRESS>', port: 7001, readOnly: false },
  ioredis:cluster:connectionPool   { host: '<IP_ADDRESS>', port: 7004, readOnly: true }
  ioredis:cluster:connectionPool ] +7ms
  ioredis:cluster:connectionPool Disconnect <IP_ADDRESS>:7000 because the node does not hold any slot +0ms
  ioredis:redis status[<IP_ADDRESS>:7000]: wait -> close +4ms
  ioredis:connection skip reconnecting since the connection is manually closed. +5ms
  ioredis:redis status[<IP_ADDRESS>:7000]: close -> end +0ms
  ioredis:cluster:connectionPool Remove <IP_ADDRESS>:7000 from the pool +1ms
  ioredis:cluster:connectionPool Disconnect <IP_ADDRESS>:7001 because the node does not hold any slot +0ms
  ioredis:redis status[<IP_ADDRESS>:7001]: wait -> close +0ms
  ioredis:connection skip reconnecting since the connection is manually closed. +0ms
  ioredis:redis status[<IP_ADDRESS>:7001]: close -> end +0ms
  ioredis:cluster:connectionPool Remove <IP_ADDRESS>:7001 from the pool +0ms
  ioredis:cluster:connectionPool Connecting to <IP_ADDRESS>:7002 as master +0ms
  ioredis:redis status[<IP_ADDRESS>:7002]: [empty] -> wait +18ms
  ioredis:cluster:connectionPool Connecting to <IP_ADDRESS>:7005 as slave +18ms
  ioredis:redis status[<IP_ADDRESS>:7005]: [empty] -> wait +0ms
  ioredis:cluster:connectionPool Connecting to <IP_ADDRESS>:7000 as master +0ms
  ioredis:redis status[<IP_ADDRESS>:7000]: [empty] -> wait +0ms
  ioredis:cluster:connectionPool Connecting to <IP_ADDRESS>:7003 as slave +0ms
  ioredis:redis status[<IP_ADDRESS>:7003]: [empty] -> wait +0ms
  ioredis:cluster:connectionPool Connecting to <IP_ADDRESS>:7001 as master +0ms
  ioredis:redis status[<IP_ADDRESS>:7001]: [empty] -> wait +0ms
  ioredis:cluster:connectionPool Connecting to <IP_ADDRESS>:7004 as slave +0ms
  ioredis:redis status[<IP_ADDRESS>:7004]: [empty] -> wait +14ms
  ioredis:cluster status: connecting -> connect +33ms
  ioredis:redis status[<IP_ADDRESS>:7002]: wait -> connecting +0ms
  ioredis:redis queue command[<IP_ADDRESS>:7002]: 0 -> cluster([ 'info' ]) +0ms
  ioredis:cluster:subscriber subscriber has left, selecting a new one... +38ms
  ioredis:redis status[<IP_ADDRESS>:7000 (ioredisClusterSubscriber)]: wait -> close +1ms
  ioredis:connection skip reconnecting since the connection is manually closed. +33ms
  ioredis:redis status[<IP_ADDRESS>:7000 (ioredisClusterSubscriber)]: close -> end +0ms
  ioredis:cluster:subscriber selected a subscriber <IP_ADDRESS>:7005 +0ms
  ioredis:redis status[<IP_ADDRESS>:7005 (ioredisClusterSubscriber)]: [empty] -> wait +0ms
  ioredis:redis status[<IP_ADDRESS>:7001 (ioredisClusterRefresher)]: ready -> close +3ms
  ioredis:connection skip reconnecting since the connection is manually closed. +4ms
  ioredis:redis status[<IP_ADDRESS>:7001 (ioredisClusterRefresher)]: close -> end +1ms
  ioredis:redis status[<IP_ADDRESS>:7001 (ioredisClusterRefresher)]: ready -> close +0ms
  ioredis:connection skip reconnecting since the connection is manually closed. +0ms
  ioredis:redis status[<IP_ADDRESS>:7001 (ioredisClusterRefresher)]: close -> end +0ms

I have encountered the same problem.  Here is something wrong
ioredis:cluster:connectionPool Reset with [
  ioredis:cluster:connectionPool   { host: '<IP_ADDRESS>', port: 7002, readOnly: false },
  ioredis:cluster:connectionPool   { host: '<IP_ADDRESS>', port: 7005, readOnly: true },
  ioredis:cluster:connectionPool   { host: '<IP_ADDRESS>', port: 7000, readOnly: false },
  ioredis:cluster:connectionPool   { host: '<IP_ADDRESS>', port: 7003, readOnly: true },
  ioredis:cluster:connectionPool   { host: '<IP_ADDRESS>', port: 7001, readOnly: false },
  ioredis:cluster:connectionPool   { host: '<IP_ADDRESS>', port: 7004, readOnly: true }
  ioredis:cluster:connectionPool ] +92ms
  ioredis:cluster:connectionPool Disconnect <IP_ADDRESS>:7000 because the node does not hold any slot +1ms
  ioredis:redis status[<IP_ADDRESS>:7000]: wait -> close +5ms
  ioredis:connection skip reconnecting since the connection is manually closed. +5ms
  ioredis:redis status[<IP_ADDRESS>:7000]: close -> end +0ms

did you run your redis cluster by docker ?
The ioredis would update the slot mapping by calling slot command.
You can see the log is return <IP_ADDRESS> instead of <IP_ADDRESS>, so the connection is closed. ( If I misunderstand anything, please correct me. 🙏
You could try to replace the host ip address by <IP_ADDRESS>.
It should work then.

@yuanchieh-cheng @sj82516 Thanks for your pointing! This is my wrong. It works for me now.
Problem
I'm using Docker for MacOS. The problem with Docker for MacOS is that I can't ping or access a container interface directly. The problem has now been solved.
Docker for MacOS solution: https://github.com/wojas/docker-mac-network


make ESP_IDF compatible

@shaneapowell
I merged your code and made some additional edits

all bools ==> boolean  (better imho than the #define)
fix tan(90) error
renamed internal variables and tables for readability
minor edits
bumped version to 0.2.0

If you have time could you give it a try? (if not just let me know)

There are some red flags in the build :(

mmm, seems I broke a lot....

@shaneapowell

Reverted bool - boolean
added stdbool.h an stdint.h to fix build, also local ESP32 in Arduino IDE

Can you verify develop branch works for you ?
Thanks

I tried to pull your develop branch this morning to see if it works on my project.
However, I'm not able to see your develop branch.
I assume it must be protected or something?
Cheers
Shane
------------------------------ Objects in mirror are losing.

From: Rob Tillaart @.>
Sent: Friday, December 2, 2022 4:30 AM
To: RobTillaart/FastTrig @.>
Cc: Shane Powell @.>; Mention @.>
Subject: Re: [RobTillaart/FastTrig] make ESP_IDF compatible (PR #17)
@shaneapowellhttps://github.com/shaneapowell

Reverted bool - boolean
added stdbool.h an stdint.h to fix build, also local ESP32 in Arduino IDE

Can you verify develop branch works for you ?
Thanks
—
Reply to this email directly, view it on GitHubhttps://github.com/RobTillaart/FastTrig/pull/17#issuecomment-1335047254, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AC4NNVDQFTLXQSNZHMEGSLTWLHFTLANCNFSM6AAAAAASRVYVKY.
You are receiving this because you were mentioned.Message ID: @.***>

The table is accurate enough for my purposes so far.
I'm building a POV clock (my 3rd generation). I'm using your quick trig functions to do simple Cartesian to Polar back and forth calculations based on the angle of the led arm.    I was originally just using a hard-coded 90x32 lookup matrix that I generated.  But, my new POV clock is using more than 32 leds, so that old matrix is no go any more.  Hence, your Trig code is saving me re-generating that matrix, and only costing me few of extra microseconds (according to my oscillosope).

I'm building a POV clock (my 3rd generation).

When it works a picture would be great!

Cartesian to Polar

Does that include degrees2radians or vice versa?
I might be interesting to investigate a sin() lookup that would be in radians, think of
value = rsin(radians);

Are you using atan2() for the cartesian to polar?
Today I derived some code that is accurate to 0.001
UNO atan2() = 196 us
UNO atan2A() = 116 us
ESP atan2() = 76 us
ESP atan2A = 17 us
It will be added to this library somewhere this week.
(It will also include atanA() which is used by atan2A() - is also faster but I forgot to write down the numbers :)

@RobTillaart
As a matter of fact, yes. I am using atan2().  (and aslo sqrt()).
I'm using the one included within the espidf framework. It's included in the <math.h> file.
I didn't measure any real difference in performance between using the built in atan2() , and a "lookup" table that I tried as a performance test.    If you include an atan2 into your code, I'll happily give it a try, and attempt to measure any performance difference.
The only other thing that is quite different from my use of your functions, and your code is that I use all uint32_t values.
To avoid any float based math (multiply, divide, etc) I have all my values converted into fixed-floating-point values (long ints).  It's only a minor inconfience that I have to "cast" my values into a float when I call your functions.    It'd be "handy" if you happened to have uint32 and int32 variations of your functions. But.. honestly, not a big deal to cast to float too.

There is a typo in the code, will be fixed in >2hrs

@shaneapowell
Merged the ATAN2 code ==> version 0.2.1

@shaneapowell

It'd be "handy" if you happened to have uint32 and int32 variations of your functions. But.. honestly, not a big deal to cast to float too.

Can you give a minimal example how you see this?
 sin(uint32_t val) ?  where is the decimal point?

That's just it. My use case is not using any decimal values. All while numbers. I'm casting uint32 values into a float, and passing that into your code. Then, I cast the response back to an int. I don't even know if there is any sort of performance gain to be had with your library having an int only mode.  The part in my code that uses sin and cos is not in the led output anyway, it's all in the 10fps pre rendering side.
Eg if how I'm calling your code.
int i = (int)icos((float)r);

int i = (int)icos((float)r);
ok, so your input are whole degrees.   The explicit casting  (float)r will be done automatically, so is not needed.
However casting the output of icos() will always return -1, 0 or 1 . See test
#include "Arduino.h"
#include "FastTrig.h"

void setup()
{
  Serial.begin(115200);
  while (!Serial);
  Serial.println(__FILE__);
  delay(10);

  for (int r = 0; r < 10000; r++)
  {
    int x = (int)icos((float)r);
    Serial.println(x);
  }
}

void loop()
{
}

well.. yep.. you're 100% correct.  Been a long time since I've done Trig.
I looked in my code to figure out why it was working perfectly, despite the obvious fact that cos() must return a float.
It's because I'm running a multiplication on the output right before the final forced cast.   The math runs on the float operation correctly, then casts to the final int.  Hence, it works perfectly.
uin32_t cx = pixel * icos((float)step);
I'd say you can safely ignore my (uint32_t) request.  :)

uin32_t cx = pixel * icos((float)step);

I expected something like that.  👍
As you are working with whole degrees one could create a icos256() that does the lookup and modulo math without any float. icos256() would return -256..256 so the code would be (pixel * icos256(step) ) >> 8;
Could be faster
I will give it a try as it is interesting to know.
(I'll be back)

add .h
///////////////////////////////////////////////////////
//
// GONIO INT EXPERIMENTAL
//
int isin256(uint32_t v);
int icos256(uint32_t v);

add .cpp
///////////////////////////////////////////////////////
//
// GONIO INT EXPERIMENTAL
//
int isin256(uint32_t v)
{
  bool negative = false;

  long whole = v;

  if (whole >= 360) whole %= 360;

  int y = whole;  //  16 bit math is faster than 32 bit

  if (y >= 180)
  {
    y -= 180;
    negative = true;
  }

  if (y >= 90)
  {
    y = 180 - y;
  }

  //  float value  improves ~4% on avg error  for ~60 bytes.
  uint16_t value = sinTable16[y];

  uint16_t g = value >> 8;
  if (negative) return -g;
  return g;
}

int icos256(uint32_t v)
{
  return isin256(v + 90);
}

Test sketch
//    FILE: test_experiments.ino
//  AUTHOR: Rob Tillaart
//    DATE: 2022-12-09
// PURPOSE: R&D

#include "Arduino.h"
#include "FastTrig.h"

uint32_t start, stop;
volatile float x;
volatile int y;

void setup()
{
  Serial.begin(115200);
  while (!Serial);
  Serial.println(__FILE__);
  delay(10);

  start = micros();
  for (uint32_t r = 0; r < 1000; r++)
  {
    x = (100 * cos(r));
  }
  stop = micros();
  Serial.print("COS: \t\t");
  Serial.println(stop - start);
  delay(10);

  start = micros();
  for (uint32_t r = 0; r < 1000; r++)
  {
    x = (100 * icos(r));
  }
  stop = micros();
  Serial.print("ICOS: \t\t");
  Serial.println(stop - start);
  delay(10);

  start = micros();
  for (uint32_t r = 0; r < 1000; r++)
  {
    y = (100 * icos256(r)) >> 8;
  }
  stop = micros();
  Serial.print("ICOS256: \t");
  Serial.println(stop - start);
  delay(10);

  for (uint32_t r = 0; r < 1440; r++)
  {
    x = (100 * icos(r));
    y = (100 * icos256(r)) >> 8;
    Serial.print(r);
    Serial.print('\t');
    Serial.print(x);
    Serial.print('\t');
    Serial.print(float(y));
    Serial.println();
  }
}

void loop()
{
}
// -- END OF FILE --

Output
COS: 		131012
ICOS: 		74928
ICOS256: 	31704

so substantial faster but lost accuracy  - diff > 1

Printing only the ones with diff > 1 comparing with cos().  => 19 out of 360
0	100.00	99.00
8	99.03	98.00
14	97.03	96.00
18	95.11	94.00
23	92.05	91.00
47	68.20	67.00
70	34.20	33.00
73	29.24	28.00
76	24.19	23.00
79	19.08	18.00
281	19.08	18.00
284	24.19	23.00
287	29.24	28.00
290	34.20	33.00
313	68.20	67.00
337	92.05	91.00
342	95.11	94.00
346	97.03	96.00
352	99.03	98.00
360	100.00	99.00

ICOS: 		74928
ICOS256: 	31704
so factor ~2.3 faster seems to be feasible.
Note: probably the tables can be optimized a bit to reduce the errors

Interesting!!  Let me see if I can roll your idea in, and see if I can measure the speed difference.

Here's the results of trying your icos256 and isin256 compared to your standard icos and isin in my code.
The "render" phase of the graphics output, draws each pixel to a buffer, and for each step in the rotation.
On my smaller clock, I have 25 pixels, and 300 rotation steps.  7500 entries to calculate.  Each of those entries will use icos and isin once.  It took an average of 222ms to render a full page each frame.  When switching to your 256 variants, it took an average of 208ms per frame.  A savings of about  14ms per frame.  Not an enormous savings, but every clock tick counts when I ramp up the RPMs to 1000.
That was all at 550rpm.
When I cranked it up to 1000rpm. The render phase with the old icos/isin took an average of 230ms.  This likely due to the fact that the render and ouput threads are all pinned to the same 2nd cpu on my esp32.  Meaning, the render phase (which has a lower priority) has to wait for the output phase more often.  With your icos256/isin256 code @1000rpm, the render phase took an average of 213ms. A savings of about 17ms.
IMO.. worth it.  The less I have to convert to and from float, and the less 'float` math I have to do, the better.  The esp32 does have a basic FPU on it, but it's not really powerful.
These timings were measured on my oscilloscope with an output pin and it's Period function.

Thanks for this feedback.
You might gain another us when you use the 8 bit table in isin256() instead of the 16 bit. It would remove the shift 8.
Questions
Do you call the isin() with the same parameter multiple times in a row? If so caching the last value can be interesting.
Do you only use 0..360 degrees?
If so the modulo test can be removed.
Do you call isin and icos with the same angle?
If so merging the calls might be interesting.

@shaneapowell
merged the lookup, for if you need both sin() and cos()
.cpp
void isincos256(uint32_t v, int &si, int &co)
{
  bool sneg = false;
  bool cneg = false;

  long whole = v;

  if (whole >= 360)
  {
    whole %= 360;
  }

  int y = whole;  //  16 bit math is faster than 32 bit

  if (y >= 180)
  {
    y -= 180;
    sneg = !sneg;
    cneg = !cneg;
  }

  if (y >= 90)
  {
    y = 180 - y;
    cneg = !cneg;
  }

  si = sinTable16[y] >> 8;
  co = sinTable16[90-y] >> 8;
  if (sneg) si = -si;
  if (cneg) co = -co;
}

.h
//  calculate both in one call.
void isincos256(uint32_t v, int &si, int &co);

On my ESP32 and UNO  there was a serious improvement when you need both
These functions will definitely be in a next release.
Now I'm going to try to roll it into the float isin(float) which will give some interpolation "challenges"

how to call
    int p, q;
    isincos256(r, p, q);
    sum += p + q;

float version
void isincos(float f, float &si, float &co)
{
  bool sneg = (f < 0);
  bool cneg = false;
  if (sneg)
  {
    f = -f;
  }

  long whole = f;
  uint8_t remain = (f - whole) * 256;

  if (whole >= 360)
  {
    whole %= 360;
    //  possible faster for 360-720
    //  if (whole >= 720) whole %= 360;
    //  else whole -= 360;
  }

  int y = whole;  //  16 bit math is faster than 32 bit

  if (y >= 180)
  {
    y -= 180;
    sneg = !sneg;
    cneg = !cneg;
  }

  if (y >= 90)
  {
    y = 180 - y;
    if (remain != 0)
    {
      remain = 255 - remain;
      y--;
    }
    cneg = !cneg;
  }

  //  float value  improves ~4% on avg error  for ~60 bytes.
  uint16_t value = sinTable16[y];

  //  interpolate if needed
  if (remain > 0)
  {
    value = value + ((sinTable16[y + 1] - value) / 8 * remain) / 32;   //  == * remain / 256
  }
  si = value * 0.0000152590219;  //  = / 65535.0
  if (sneg) si = -si;

  value = sinTable16[90-y];
  if (remain > 0)
  {
    remain = 256 - remain;
    value = value + ((sinTable16[y - 1] - value) / 8 * remain) / 32;   //  == * remain / 256
  }
  co = value * 0.0000152590219;  //  = / 65535.0
  if (cneg) co = -co;
}

think there is a bit room for optimizing the remainder part.

version 2 with correct remainder handling
void isincos(float f, float &si, float &co)
{
  bool sneg = (f < 0);
  bool cneg = false;
  if (sneg)
  {
    f = -f;
  }

  long whole = f;
  uint8_t remain = (f - whole) * 256;

  if (whole >= 360)
  {
    whole %= 360;
    //  possible faster for 360-720
    //  if (whole >= 720) whole %= 360;
    //  else whole -= 360;
  }

  int y = whole;  //  16 bit math is faster than 32 bit

  if (y >= 180)
  {
    y -= 180;
    sneg = !sneg;
    cneg = !cneg;
  }

  if (y >= 90)
  {
    y = 180 - y;
    if (remain != 0)
    {
      remain = 255 - remain;
      y--;
    }
    cneg = !cneg;
  }

  //  float value  improves ~4% on avg error  for ~60 bytes.
  //  SIN
  uint16_t value = sinTable16[y];
  //  interpolate if needed
  if (remain > 0)
  {
    value = value + ((sinTable16[y + 1] - value) / 8 * remain) / 32;  //  == * remain / 256
  }
  si = value * 0.0000152590219;  //  = / 65535.0
  if (sneg) si = -si;

  //  COS
  value = sinTable16[90-y];
  if (remain > 0)
  {
    value = sinTable16[89-y];
    remain = 256 - remain;
    value = value + ((sinTable16[90-y] - value) / 8 * remain) / 32;  //  == * remain / 256
  }
  co = value * 0.0000152590219;  //  = / 65535.0
  if (cneg) co = -co;
}

The value for cos just differs a bit compared to calling icos() due to rounding I assume but it is in the 4th decimal
Will investigate that further.
Think I can start working on a PR today.

Questions Do you call the isin() with the same parameter multiple times in a row? If so caching the last value can beinteresting.

Ok.. yeah. that's a smart idea. I'm, doing a loop starting with the pixels, instead of the angle.  so, I'm re-calcing the same angle many times. That's an easy optimization I'll do. Thanks for that.

Do you only use 0..360 degrees? If so the modulo test can be removed.
I'm currently doing only 0-90 actually, as I'm breaking up the image into it's quadrants and doing a pixel rotation. But, in the future, I can see me doing 0-360.  That said, in my code, I'll never pass a negative, nor over 360. But.. your call on what to do with your modulo check.

Do you call isin and icos with the same angle? If so merging the calls might be interesting.
Another smart optimization.  I am in fact calling isin and icos right after each other.  A single call to get them both at the same time would be another speed improvement for my code.

Cheers

I'm re-calcing the same angle many times. That's an easy optimization I'll do. Thanks for that.

As always interested in the gain you make.

Found a minor bug in the rounding of the isin() function.
It is rather small and therefore hard to find.
Will be fixed in the upcoming PR which will be version 0.3.0 as there is a lot of new functionality.

@shaneapowell
Created develop branch and a PR, see https://github.com/RobTillaart/FastTrig/pull/23
Merging will be later coming week, although it looks pretty stable I want to investigate the details.

@shaneapowell
Merged the integer sin /cos and sincos so they are regular now.
I'm still not happy with the performance/accuracy of hypot() - https://github.com/RobTillaart/FastTrig/issues/22
so that needs more investigation and might be included in a later version.


Remove vmi update collision optimization in virt-handler

related to #6997
PR #5982 introduced an optimization that ensured we don't process a vmi in virt-handler after an update until that update has been observed in an informer callback.
Unfortunately, during live migration this expectation can get out of sync. There's a hand off that occurs where a VMI transitions from one virt-handler to another one on another node. That means it's technically possible for an update to be issued in order to perform the handler to handler hand off, and for the corresponding informer to never see the result of the handoff.
NONE

@vasiliy-ul fyi, If you're still experiencing issues and can continue to reproduce your findings, we should remove the optimization that causes the update delay.

/hold
I'd like more proof the issue we're aiming to resolve here is occurring in a clean (un-modified) environment before we merge this.

@vasiliy-ul fyi, If you're still experiencing issues and can continue to reproduce your findings, we should remove the optimization that causes the update delay.

@davidvossel , I think that is not needed.  Initially I misunderstod the idea behind this optimization. Now I also see that the code is correct. The test failure that I faced is caused by another reason. Please check my comment https://github.com/kubevirt/kubevirt/pull/6997#issuecomment-1019546079.

closing in favor of #7131


CCD-3830: Add Gradle runRemoteDemo() task

JIRA link
https://tools.hmcts.net/jira/browse/CCD-3830
Change description
Add Gradle runRemoteDemo() task.
See Jira ticket for command used to add Azure secret named ‘manage-case-assignment-remote-env’.
Does this PR introduce a breaking change?
[ ] Yes
[x] No

PIPELINE: https://build.platform.hmcts.net/job/HMCTS_a_to_c/job/aac-manage-case-assignment/view/change-requests/job/PR-450/


docs(examples): add npm version build arg to supply-chain app container

This will enable us to have an automated image publishing pipeline set up
later down the line as our automation capabilities increase.
Signed-off-by: Peter Somogyvari<EMAIL_ADDRESS>

Codecov Report

Merging #1389 (7949575) into main (b9170e9) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #1389   +/-   ##
=======================================
  Coverage   69.42%   69.42%
=======================================
  Files         301      301
  Lines       10820    10820
  Branches     1320     1320
=======================================
  Hits         7512     7512
  Misses       2624     2624
  Partials      684      684

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 b9170e9...7949575. Read the comment docs.


Not able to install ng CLI on MacOS Siera

Please provide us with the following information:

OS?  Windows 7, 8 or 10. Linux (which distribution). Mac OSX (Yosemite? El Capitan?)
macOS Sierra

Versions. Please run ng --version. If there's nothing outputted, please run
in a Terminal: node --version and paste the result here:
npm ---> 3.10.8
node---> v6.6.0

Repro steps. Was this an app that wasn't created using the CLI? What change did you
do on your code? etc.

The log given by the failure.

Thanks! We'll be in touch soon.

@gbrigens -- the issue tracker is for project bugs and project feature requests as noted in CONTRIBUTING.md. For better support, consider creating a question on StackOverflow with all the details.
Your included stacktrace indicates the root-cause:
Error: EACCES: permission denied, rmdir '/usr/local/lib/node_modules/.staging'

It looks like you don't have permission to remove this directory...

@JanStureNielsen I will consider doing that. thanks.

It looks like you're trying to install globally. If you are, you must install with sudo npm install -g angular-cli to ensure npm has the right permissions.

I was able to love this after going thro npm documentation, I have posted the question and answer on stack overflow. So that anyone with the same issue can solve it easily here is the link http://stackoverflow.com/questions/39666146/not-able-to-install-ng-cli-on-macos-siera.


Magic link option is not available on Console

Describe the issue:
Magic link option is not available on Sing on method options in Console
https://user-images.githubusercontent.com/39077751/182530709-a90ceb6a-7fb6-4ce4-b3f6-40a6ce4a89e0.mov
How to reproduce:

Login to console
Create application
Navigate to application edit -> Sign-on methods
Select identifier as first authentication steps
Add another authentication step
Click add authentication link and search for magic link option

Expected behavior:
Magic link option should be available on console sing  in option and should be configurable via console.
Environment information (Please complete the following information; remove  any unnecessary fields) :

Product Version: IS 6.0.0-beta
OS: Mac
Database: MSSQL
Userstore: JDBC

Optional Fields
Related issues:

Suggested labels:

This is fixed in the latest pack https://github.com/wso2/carbon-identity-framework/commit/892e9a8cab24e16b6d19c53b763f26eec7f16674


support for passing a custom password

is there any way to pass a custom password for elastic instead of running   elastic_reset_password?

Currently at the moment the elastic-reset-password tool will handle making the system user password at start up, you cannot pass a username/password into the main system user for Elasticsearch.
Once the elastic user password has been changed you can make multiple other users after its booted.

Done !

Awesome stuff!


why does syncWait.assumeOk throw when calling onDone?

https://github.com/symmetryinvestments/concurrency/blob/7dd10addd320f908e62300bcef2702b9de9ac4a3/tests/ut/concurrency/sender.d#L21
I don't get why this test code passes - DoneSender should just make the task finish without value, while ThrowingSender makes it error/abort.
Why does the test check for assumeOk.shouldThrow throw like ThrowingSender?

Yeah, I am on the fence here.
With Senders there are 3 termination points: natural completion, completion due to cancellation and error. assumeOk only counts natural completion as correct, and errors out on the other 2.
DoneSender is a bit of a misnomer I guess, CancelSender would have been a bit better.

onDone should probably also be called onCancel then I think?

onDone should probably also be called onCancel then I think?

Its actually called setDone. Emphasize on completion.
One thing about cancellation is that in terms of lifecycle its important to know when the cancellation is done. Its only when it is done that resources can be cleaned.
Senders signal completion, so the setValue, setDone, setError trifecta actually makes sense. And contrary to what I said yesterday, that makes DoneSender actually the more correct naming.
Sorry, the concurrency stuff has moved to the back of my mind a bit.


can't get it to work

I followed the directions but could not get the widget to show for either:

http://sharks.jplsoftball.org/killme1.shtml is https://pds.nasa.gov/datasearch/subscription-service/SS-20191030.shtml moved directly to the other web site.
http://sharks.jplsoftball.org/killme2.shtml is a stripped down version that copies the code from github into its <head>.

Maybe the web server is missing something, but, if so, the directions should say what the requirements are.

@rchenatjpl did you register in advance? It won't work unless you register with the Google analytics. that being said, this has been tested and deployed several times so I'm not sure we need to build out the docs more thoroughly at this time.

I think there was a real problem, perhaps with versioning. I discussed this with Catherine, though I've forgotten the details. I did register. If I embedded the code straight off this page, nothing happened, but when I embedded the code taken from the source of a PDS web page like https://pds.nasa.gov/datasearch/subscription-service/SS-20191030.shtml, the widget showed.

@c-suh can you help me understand this here and make sure we properly document/fix the issue and/or make sure the right version is deployed?

@jordanpadams Will get started today.

@c-suh great! can you also reopen and rename this issue to something more useful for a changelog based upon the issue you recognize?

@jordanpadams Will do; I'll reopen first then rename when I have an idea of what's causing the problem.

@jordanpadams I followed the same links as @rchenatjpl to pull this code, installed it on our test site, but haven't been able to replicate any problem. Perhaps I need an environment more similar to http://sharks.jplsoftball.org/killme*.shtml where the installation first didn't work? Please advise on the next step.

if you cannot replicate, i imagine they do not have PHP enabled on the HTTP server. in which case, make sure we have that documented and tie to this issue, and update the title accordingly.

I can't replicate now either. Eh.
On 11/6/19, 13:39, "Jordan Padams"<EMAIL_ADDRESS>wrote:
if you cannot replicate, i imagine they do not have PHP enabled on the HTTP server. in which case, make sure we have that documented and tie to this issue, and update the title accordingly.
—

Closing since issue could not be replicated


Cache metadata lock info to avoid remote store calls on each commit

Description

Currently, snapshot interop with remote store takes a lock on remote segment store metadata files.
This lock ensures that the metadata file is not deleted as part of cleanup of stale files.
Cleanup of stale metadata files happen at each flush and to check if the lock is acquired or not, a remote store call is made.
This can result in too many remote store calls when there are too many snapshots present and frequent flushes.
In this change, we cache the metadata file name if it is locked to avoid the remote store calls.

Related Issues
Resolves https://github.com/opensearch-project/OpenSearch/issues/11409
Check List

[x] New functionality includes testing.

[x] All tests pass

[ ] New functionality has been documented.

[ ] New functionality has javadoc added

[ ] Failing checks are inspected and point to the corresponding known issue(s) (See: Troubleshooting Failing Builds)
[x] Commits are signed per the DCO using --signoff
[ ] Commit changes are listed out in CHANGELOG.md file (See: Changelog)
[ ] Public documentation issue/PR created

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Hi @sachinpkale, the PR is stalled. Is this being worked upon? Feel free to reach out to maintainers for further reviews.

Overall LGTM, some previous comments needs to be addressed or replied to.
If the improvement suggested are going to be bigger changes we can take them up in followups incrementally too if we want to take this in for 2.12 release


Port prepare_package.dart to conductor

Port the prepare_package.dart release script to the conductor codebase and leverage the cache codesign validation logic--it currently only checks that the dart binary is codesigned.

@XilaiZhang with the work you are doing on codesigning, do we still need this issue?

@XilaiZhang with the work you are doing on codesigning, do we still need this issue?

Umm i haven't heard of prepare_package.dart, does it involve signing new engine binaries?

@christopherfujino could you help us out with decrypting this issue?

prepare package is what makes the release archives that are exposed via the website. We have a sanity check in that script to verify the dart binary is codesigned, but ideally we would verify all binaries.


Cannot remove theme completely

Hi,
I followed the guide to install theme by moving the donwloaded folder into /srv/docker/redmine/redmine/themes. It worked and the added theme can be selected in the dropdown menu. However, when I was trying to remove one of the added themes, it still presented in the menu even after I removed the folder in /srv/docker/redmine/redmine/themes and restarted the docker. I found that in the container under the path /home/redmine/redmine/public/themes, there is a copy of the installed theme, and I have to remove it to uninstall completely. Is this the correct way to remove the theme, or am I missing some steps?
Thanks.
Version: 4.2.2

Make sure when you stop the docker container that you destroy it.
For docker-compose, running docker-compose down is enough.  If your running straight docker, you can add --rm to the run command so it cleans up when its stopped.  Or run docker stop redmine && docker rm redmine

@jcormier Thanks for the reply! Now I understand how it works.


tile() function part 0.5

Partial commit for #5

Continuous integration broken because of a bug in Blaze: https://bitbucket.org/blaze-lib/blaze/commits/6058199308a8c741279373b4d81debbba5e5e850#comment-14858242

Blaze bug fixed https://bitbucket.org/blaze-lib/blaze/issues/451/error-compiling-bb-inv-trans-ll-for#comment-66451923, CI passes.


Poor documentation

[Enter feedback here]

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

ID: b82d2583-2918-168d-a4fa-dc02b7703a3d
Version Independent ID: 014a7032-3a26-f914-813a-ddb00a72092f
Content: Create a storage account - Azure Storage
Content Source: articles/storage/common/storage-account-create.md
Service: storage
Sub-service: common
GitHub Login: @tamram
Microsoft Alias: tamram

@shusharm Thank you for your feedback. However, it would be great if you could let us know what part of documentation did not help ? Please let us know and we will surely like to improve your experience with the documentation.

@shusharm Since we have not heard back from you we will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly reopen the issue and continue the discussion.


chore: ignore a phpstan error to run ci tests

I will close this. Because now it is already in master


MINOR: Update TestUtil.createBrokerConfig call to account for new parameters

The build is broken without this fix.

It looks like @apurvam hasn't signed our Contributor License Agreement, yet.

The purpose of a CLA is to ensure that the guardian of a project's outputs has the necessary ownership or grants of rights over all contributions to allow them to distribute under the chosen licence.
Wikipedia

You can read and sign our full Contributor License Agreement here.
Once you've signed reply with [clabot:check] to prove it.
Appreciation of efforts,
clabot

[clabot:check]

@confluentinc It looks like @apurvam just signed our Contributor License Agreement. :+1:
Always at your service,
clabot


fix: update json catalog package and action

Why hasn't this action worked?
We have github branch protection set up to protect main against accidental deletes or force pushes. We've also set it up to ensure that every commit goes through a PR.
It has an option to let certain users bypass it, which I assumed would be enough to let our ampersand-ops user commit directly.
Unfortunately, life isn't simple - if you have also set up required status checks, then you actually can't truly bypass these restrictions. Even if the user has a bypass branch protection permission 🙃 (ref)
Other options
The way that Github offers out of this is to use something called as Rulesets. These are just sets of rules you can apply against branches.
For our usecase, we need to 'layer' two rulesets - one basic anti-deletion ruleset without a bypass, and then a ruleset that has the required PRs/status check related stuff, with the bypass you need.
So finally, the way I fixed this was -

Deleted our main branch protection rules
Created a base main ruleset which protects against deletion and force pushes.
Created another main ruleset on top of that which requires approvals, status checks, etc, and added a bypass for our custom devops role which is just a Write role + the bypass branch protection permission.

Actually added another nicety, which is a requirement to resolve all comments before merging
It also has some cool options to enforce branch naming conventions.

Give our ampersand-ops user the required role (this is currently not possible, context ahead)

Other fixes

Seems like the action also doesn't work without a couple of write permissions.
The script was generating internal/generated/provider_count.go, but this action wasn't committing it. Adds it in the automated commit.
Tweaks the commit message to be better.
You also need to checkout a repo with the PAT you intend to use.

Other blockers

Our enterprise (for some unknown reason) got downgraded to a free plan (ticket raised about this), so we don't have access to custom roles anymore. Once this is resolved, I will assign the ampersand-ops user its deserved custom devops role. Until then, the action will not work.

Testing
Temporarily, I let the Write role bypass the ruleset and assigned it to ampersand-ops, and it was able to finally auto-commit things -

#677  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @RajatPawar and the rest of your teammates on  Graphite

I gave ampersand-ops admin role on this repo, and now the Github Action is working again: https://github.com/amp-labs/connectors/commit/e25f29893d44ad6e0f132ad72c5b19d407e8aebb

I gave ampersand-ops admin role on this repo, and now the Github Action is working again: https://github.com/amp-labs/connectors/commit/e25f29893d44ad6e0f132ad72c5b19d407e8aebb. Custom roles are no longer available due to the (intentional, albeit poorly communicated on my part 😛 ) downgrade from Github Enterprise to Github Team.
Thanks! I did freak out for a second when I saw that amp-labs was removed from Ampersand haha


M1Pro Failed to edit item

I installed the same software on both the MacBook Pro Intel X86 and the MacBook Pro M1 Pro ARM. I found that this software can normally edit the Assets.car installed on the X86 device.

However, when this software is installed on the ARM device, it becomes unresponsive after selecting and editing images, with no pop-up and no error messages. It is unable to modify the Assets.car.

I copied the Assets.car file installed on the ARM device to the X86 device for editing, and an error appeared as shown in the picture, making it impossible to edit the Assets.car file from the ARM device.

As shown in the picture

this is the Assets.car file from the ARM device.
Assets.zip

I hope the author can fix this strange bug as soon as possible. I will also do my best to assist the author's work. Thank you for the author's efforts.

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

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

What is this for? fix this issues？


[BUG]: Container is terminated but Pod is stuck in terminating

Describe the bug
On deleting a pod which is using powerflex csi for mounting volume, the pod stuck in terminating for ever.
To Reproduce
Steps to reproduce the behavior:
kubectl get po -A -o wide| grep Termin
chf-apps              csdpbl002-0                                                       0/1     Terminating   0
kubectl get pvc -A | grep csdpbl002-0
chf-apps      pv-fds-csdpbl002-0                            Bound    ccd-af9659f2b3
On creation of pod :
MountVolume.WaitForAttach succeeded for volume "ccd-af9659f2b3"
device mount path "/var/lib/kubelet/plugins/kubernetes.io/csi/pv/ccd-af9659f2b3/globalmount"
On deleting the pod:
/volume-subpaths/ccd-af9659f2b3/sdp/0" is not a mountpoint, deleting
But the mountpoint couldn’t be deleted, since its already in use by the application.
umount: /var/lib/kubelet/pods/69fd83d4-eb2c-4eaf-aa2e-8436319070f6/volumes/kubernetes.io~csi/ccd-af9659f2b3/mount: target is busy.\n"
After sometime volume did get detached. But the pod still get stuck in terminating.
Volume detached for volume "ccd-af9659f2b3\
After restarting the kubelet:
"operationExecutor.UnmountVolume started for volume "ccd-af9659f2b3"
UnmountVolume.TearDown succeeded for volume "kubernetes.io/csi/csi-vxflexos.dellemc.com^62ce8cd81be7f10f-eaf5ab8a00000502
failed to open volume data file [/var/lib/kubelet/plugins/kubernetes.io/csi/pv/ccd-af9659f2b3/vol_data.json]: open /var/lib/kubelet/plugins/kubernetes.io/csi/pv/ccd-af9659f2b3/vol_data.json: no such file or directory
Only those pods which have error "target is busy" , showing this problem of stuck in terminating.
Expected behavior
On deleting pod, it should successfully  get deleted.
Screenshots
If applicable, add screenshots to help explain your problem.
Logs
If applicable, submit logs or stack traces from the affected services
System Information (please complete the following information):

OS/Version: Suse
Kubernetes 1.21
Attaching the logs

Additional context
Add any other context about the problem here.
driver.logs.20211227_0335.zip
kubelet.zip

Any update on this please ?

@bharathsreekanth  customer is looking for updates here.

I will have a look at this today and discuss with the team and get back. Thanks!

as per node logs volume unpublish report "target is busy" . assume this is true , you are shutting down pod with application running ?
next we see driver node log shows "volume XX is not published to node"
time="2021-12-21T16:16:14Z" level=info msg="SDC returned volume eaf5ab8a00000502 on system 62ce8cd81be7f10f not published to node"
the controller unpublish could have done this , however logs are missing , please send us driver controller logs ?
i do see logs "kube-system.csi-powerflex-controller-7b69d9b75b-fwbr8.driver.log" its filled with podmon calls , can you retest without podmon running and get the controller logs

Based on the last update, the podmon issue needs to to triaged first. Assigning to @alikdell to triage.

Send email requesting customer to reproduce the issue and send us fresh logs.
Customer agreed to provide us logs new sets of logs whenever they are able reproduce the issue at their end.

Not able to reproduce, closing the issue for now.
If issue observed again in future this ticket will be reopened.


Add site.yaml schema to schemastore.org

Is your feature request or improvement related to a problem?
When editing the site.yaml file in VS Code, the editor mistakes it for an Ansible config file and marks every line as a syntax error.
Solution you'd like
Adding the JSON Schema to schemastore.org and including a descriptor at the top of site.yaml should do the trick. Like so:
# yaml-language-server: $schema=https://json.schemastore.org/nuejs-site.json

globals: ["@global"]
# ...

Alternatives you've considered
No great alternatives.
Additional context
I already did it and submitted it here: https://github.com/SchemaStore/schemastore/pull/4218

Actually it would be better if Nue had a more specific alternative to site.yaml (maybe nue.yaml?) since schemastore.org understandably doesn't like to accept too-generic file match patterns.

I get that. AS I see it, there are two good options>

Switch to nue.yaml. This is a very small code change, and makes the file more clearly self-identifying, but it would be a breaking change, which sucks for Nue users.
Stick with site.yaml and leave a blank fileMatch in the schemastore.org submission. This still registers the schema, it just means editors can't auto-detect the schema based on filename. Then, by adding # yaml-language-server: $schema=https://json.schemastore.org/nuejs-site.json at the top of site.yaml you tell editors what schema to use.

Citing my https://github.com/nuejs/nue/pull/408#issuecomment-2501915669

It would be great if even the site.yaml was also configurable. As an example, using the following command line option (--config <path>):
nue --config nue.yaml serve

I think maybe it's best to go with this:

2. Stick with site.yaml and leave a blank fileMatch in the schemastore.org submission. This still registers the schema, it just means editors can't auto-detect the schema based on filename. Then, by adding # yaml-language-server: $schema=https://json.schemastore.org/nuejs-site.json at the top of site.yaml you tell editors what schema to use.

I will change my PRs to reflect that:

In the SchemaStore PR I will leave the fileMatch blank so the schema can be accepted even if it won't be auto-detectable
In the nue PR I will revert the multiple-filename changes and only keep the yaml-language-server reference, which will let editors pull the correct schema


[SP-5393] Backport of PDI-18440 - KETTLE_EMPTY_STRING_DIFFERS_FROM_NU…

…LL produces opposite display for NULLS (9.0 Suite)
Cherry-pick of #7232 into 9.0 branch.
@ppatricio

:x: Build failed in 16m 32s
Build command:
mvn clean verify -B -e -Daudit -amd -pl core,engine,plugins/xml/core

:ok_hand: All tests passed!
Tests run: 4745, Failures: 0, Skipped: 7    Test Results

Errors:
Filtered log (click to expand)

script returned exit code 1

:information_source:  This is an automatic message

:x: Build failed in 1m 32s
Build command:
mvn clean verify -B -e -Daudit -amd -pl core,engine,plugins/xml/core

:exclamation: No tests found!
Errors:
Filtered log (click to expand)

script returned exit code 1

:information_source:  This is an automatic message

:white_check_mark: Build finished in 41m 51s
Build command:
mvn clean verify -B -e -Daudit -amd -pl core,engine,plugins/xml/core

:ok_hand: All tests passed!
Tests run: 4745, Failures: 0, Skipped: 7    Test Results

:information_source:  This is an automatic message


Cannot read property 'showImagePicker' of undefined on Android

Please read the following carefully before opening a new issue.

Description
Before the problem:
Undefined is not an object (evaluating 'ImagePickerManager.showImagePicker')
Follow the links below:
https://github.com/react-community/react-native-image-picker/issues/609
Then there's the following problem:

react-native: 0.55.2
react-native-image-picker 0.27.1
jest-expo: 27.0.0

Not only Android. iOS doesn't work too.
https://github.com/react-community/react-native-image-picker/issues/963
https://github.com/react-community/react-native-image-picker/issues/962

bump

I fix this using the following steps
1. Add RNImagePicker from node_modules to Xcode
2. Then drag libRNImagePicker.a to Build Phases -> Link Binary with Libraries
3. After doing this go to build settings-> Header Search path and add the following line so that it will look for this library
$(SRCROOT)/../node_modules/react-native-image-picker/ios
4. Clean your project
5. Build your project and Run
It will run successfully.
Check enclosed image

Did you run react-native link react-native-image-picker ?

@cumbermiao, yes I ran that command so that it can link modules on both platform but for iOS you have to do it also manual linking.
Other alternative is not run this command bcoz we have to do manual linking in ios then we can also do the same for Android.


⚠ Carbubu has degraded performance

In 478c416, Carbubu (https://carbubu.fr) experienced degraded performance:

HTTP code: 200
Response time: 3995 ms

Resolved: Carbubu performance has improved in f9fb340 after 6 minutes.


US 06.01.01

As a user, I want a profile with a unique username.

Question for us
How should we implement profiles? How does it interact with the database, if it does at all?

implemented


fix: worklet and node rust

thank you
could u please merge my PR?

thank you could u please merge my PR?

okay
i will merged it.
thank you for your work


Inform the Name, Asset Type, Asset Group and Project of the device on the screens

Inform the Name, Asset Type, Asset Group and Project of the device on the screens: Status, Properties, API, Terminal…
Justification: Device identification is difficult when only the “Device_ID” is informed in the upper bar Ex: “Devices / b2d8f99bd2455dea / Properties”. Especially when using UUID rules for Device_ID.
Just a simple example (below), but it would help a lot. It would be important to reproduce the Name, Asset Type, Asset Group and Project information on the other screen: Properties, API, Terminal…
NOTE: Same information replicated also on the bucket screen

Suggestion:

This implementation would help a lot with the user experience.
When we enter a device's screen, we are left without knowing some important information such as its name, group, type, project...


DistinctUntilChanged keyselector typing issue

I am not entirely sure for the reason behind that so I create this issue rather than fixing it.
Calling distinctUntilChanged with an anonymous keyselector function leads to K being infered as unknown.
from([
  { name: 'Porsche', model: '911' },
  { name: 'PORSCHE', model: '911' },
  { name: 'Ferrari', model: 'F40' },
  { name: 'FERRARI', model: 'F40' },
]).pipe(
  distinctUntilChanged(
     (prevCar, nextCar) => {
       return prevCar.toLowerCase() === nextCar.toLowerCase();
     },
    (car) => car.name
  )
)

car is actually properly inferred here but for some reason, the return type of that function needs to be specified explicitly.
For reference this is the "problematic" function signature:
export function distinctUntilChanged<T, K>(compare: (x: K, y: K) => boolean, keySelector: (x: T) => K): MonoTypeOperatorFunction<T>;

It seems like the type inference is processing from left to right and there K will be defaulted to unknown in the compare function, but I am not really sure about this.

The weird thing is that the TypeScript integration in VS Code seems to infer the type parameters correctly:

🙈

I mean it effects errors in the code, but the pop-up box gets it right.

It's a TypeScript problem; there's nothing we can/should do about it. Like you say, it's because the inference goes from left to right. If the parameters are reversed, the types are inferred correctly.
The solution/workaround is to provide an explicit type to at least one of the parameters in the first callback:
     (prevCar: string, nextCar) => {
       return prevCar.toLowerCase() === nextCar.toLowerCase();
     },

Related: https://github.com/ReactiveX/rxjs/pull/5679#issuecomment-681175599


precision loss when I read 0.001

it seems that when i try to read a cell which is 0.02, which result is correct. However, when I try to read a cell which is 0.002, it will be recognized as type XLValueType::Integer and value would be 2,which is not what i want.
it will cause loss of precision when I try to read 0.001,0.002...

Hi @JingyuanZhu
Sorry for the late reply.
Unfortunately, I am unable to recreate the issue on my machine.
Here is a piece of code that writes reads floating point values:
#include <iostream>
#include <OpenXLSX/OpenXLSX.h>

using namespace std;
using namespace OpenXLSX;

int main() {

    XLDocument doc1;
    doc1.CreateDocument("./NumberTest.xlsx");
    auto wks1 = doc1.Workbook().Worksheet("Sheet1");

    wks1.Cell("A1").Value() = 0.01;
    wks1.Cell("B1").Value() = 0.02;
    wks1.Cell("C1").Value() = 0.03;
    wks1.Cell("A2").Value() = 0.001;
    wks1.Cell("B2").Value() = 0.002;
    wks1.Cell("C2").Value() = 0.003;

    doc1.SaveDocument();
    doc1.CloseDocument();

    XLDocument doc2;
    doc2.OpenDocument("./NumberTest.xlsx");
    auto wks2 = doc2.Workbook().Worksheet("Sheet1");

    cout << "Cell A1: " << wks2.Cell("A1").Value().Get<double>() << endl;
    cout << "Cell B1: " << wks2.Cell("B1").Value().Get<double>() << endl;
    cout << "Cell C1: " << wks2.Cell("C1").Value().Get<double>() << endl;
    cout << "Cell A2: " << wks2.Cell("A2").Value().Get<double>() << endl;
    cout << "Cell B2: " << wks2.Cell("B2").Value().Get<double>() << endl;
    cout << "Cell C2: " << wks2.Cell("C2").Value().Get<double>() << endl;

    auto PrintCell = [](const XLCell& cell) {

        cout << "Cell type is ";

        switch (cell.ValueType()) {
            case XLValueType::Empty:
                cout << "XLValueType::Empty";
                break;

            case XLValueType::Float:
                cout << "XLValueType::Float and the value is " << cell.Value().Get<float>() << endl;
                break;

            case XLValueType::Integer:
                cout << "XLValueType::Integer and the value is " << cell.Value().Get<int>() << endl;
                break;

            default:
                cout << "Unknown";
        }

    };

    PrintCell(wks2.Cell("A1"));
    PrintCell(wks2.Cell("B1"));
    PrintCell(wks2.Cell("C1"));
    PrintCell(wks2.Cell("A2"));
    PrintCell(wks2.Cell("B2"));
    PrintCell(wks2.Cell("C2"));

    doc2.CloseDocument();

    return 0;
}

The output of this code is:
Cell A1: 0.01
Cell B1: 0.02
Cell C1: 0.03
Cell A2: 0.001
Cell B2: 0.002
Cell C2: 0.003
Cell type is XLValueType::Float and the value is 0.01
Cell type is XLValueType::Float and the value is 0.02
Cell type is XLValueType::Float and the value is 0.03
Cell type is XLValueType::Float and the value is 0.001
Cell type is XLValueType::Float and the value is 0.002
Cell type is XLValueType::Float and the value is 0.003

Process finished with exit code 0

If you still cannot get it to work, can you send me the spreadsheet your are trying to read?

By the way, there is a bug in the code sample you sent...maybe that's causing the error.
The line
} else if (precisionValue.ValueType() == XLValueType::Empty) {

should read:
} else if (precisionValue.ValueType() == XLValueType::Float) {


Limit pr workflow concurrency.

I'm interested in the reason behind the functional test error when the workflow is running more than once same time because I don't remember seeing it in other repos. If this reason is commonly affected, we should update the template in charm spec

We have one runner running these tests. If it is available it runs the test but if not it chooses a random runner provided by IS team. An those ones do not contain snapcraft.


Send screen - incorrect display of fees and amounts in the error message under the "amount" field.

Bug description
The send screen displays an incorrect fee amount:

with a zero balance the correct fee amount is 0.001 beam

if the user enters an amount exceeding the amount on the balance, then it is necessary to show him a message that the maximum amount is xxxxxx(balance amount - transaction fee = the maximum amount is), regardless of what amount the user entered (the difference...we don't show how much user needs to add)

https://user-images.githubusercontent.com/45556620/162421215-c8152ee4-7ecc-4a05-81ec-f5a16a3e4392.mp4
https://user-images.githubusercontent.com/45556620/162421250-76b45920-e9c7-40aa-b8e5-c6907559b749.mp4

Incorrect display the error message with a zero balance
(the message says that the maximum amount available is greater than 0)

for example desktop

Checked


when i build the vue3 project, i got a output file name like [component].vue_vue_type_script_setup_true_lang.[hash].js

Describe the bug
when i npm run build, i got a output file name like [component].vue_vue_type_script_setup_true_lang.[hash].js

Reproduction
https://github.com/JiatLn/vite-build-demo.git
System Info
System:
    OS: Windows 10 10.0.19042
    CPU: (4) x64 Intel(R) Core(TM) i3-6100 CPU @ 3.70GHz
    Memory: 1.36 GB / 7.88 GB
  Binaries:
    Node: 14.19.0 - E:\software\nodejs\node.EXE
    Yarn: 1.22.18 - E:\software\nodejs\yarn.CMD
    npm: 6.14.16 - E:\software\nodejs\npm.CMD
  Browsers:
    Edge: Spartan (44.19041.1266.0), Chromium (103.0.1264.62)
    Internet Explorer: 11.0.19041.1202

Used Package Manager
yarn
Logs
No response
Validations

[x] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Make sure this is a Vite issue and not a framework-specific issue. For example, if it's a Vue SFC related bug, it should likely be reported to vuejs/core instead.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
[X] The provided reproduction is a minimal reproducible example of the bug.

Still seems to happen with Vite 4. It's always the same files that have this problem. So, there must be some kind of a consistency, not sure what though.

Have the same issue. I've noticed in my case that if the the component is traversed multiple times by the bundler then it produces  one file with correct name which in turn references to the weird name file.

I have the same problem！
I used the plugin 'vite-plugin-multi-pages' to support multi page application.
The currently generated assets are
.
├── assets
│   ├── css
│   │   ├── [componentA].css
│   │   ├── [componentB].css
│   │   ├── main.css
│   │   ├── page1
│   │   │   └── index.css
│   │   ├── page2
│   │   │   └── index.css
│   │   └── page3
│   │       └── index.css
├── favicon.ico
├── js
│   ├── common
│   │   ├── [componentA].vue_vue_type_script_setup_true_lang.js
│   │   ├── [componentB].vue_vue_type_script_setup_true_lang.js
│   │   └── main.js
│   ├── page1.js
│   ├── page2.js
│   └── page3.js
├── page1.html
├── page2.html
└── page3.html

what i expect is
.
├── assets
│   ├── css
│   │   ├── main.css
│   │   ├── page1
│   │   │   └── index.css
│   │   ├── page2
│   │   │   └── index.css
│   │   └── page3
│   │       └── index.css
├── favicon.ico
├── js
│   ├── common
│   │   └── main.js
│   ├── page1.js
│   ├── page2.js
│   └── page3.js
├── page1.html
├── page2.html
└── page3.html

The code in [componentA].vue_vue_type_script_setup_true_lang.js is a common code and has nothing to do with [componentA].
The css in [componentA].css is a common css and has nothing to do with [componentA].

for me the files with that cryptic name showed up after using import statements in async loaded components

I have this exact same issue - and it does cause a problem when you deploy the built site. When I run vite build I get output like this:
dist/index.html                                                                                1.00 kB
dist/assets/NewJob-d9a4925b.css                                                                                0.08 kB │ gzip:   0.10 kB
dist/assets/index-dc13f7c7.css                                                                                237.30 kB │ gzip:  33.05 kB
dist/assets/JobManager-8867603d.js                                                                                0.06 kB │ gzip:   0.08 kB
dist/assets/NewJobList-6fcb2b4f.js                                                                                0.06 kB │ gzip:   0.08 kB
dist/assets/_...all_-9d958754.js                                                                                0.16 kB │ gzip:   0.16 kB
dist/assets/index-95d5fcd6.js                                                                                0.47 kB │ gzip:   0.29 kB
dist/assets/_name_-11e79e2a.js                                                                                0.49 kB │ gzip:   0.34 kB
dist/assets/Support-48cf7069.js                                                                                0.50 kB │ gzip:   0.40 kB
dist/assets/BackButton.vue_vue_type_script_setup_true_generic_T%20extends%20any%2C%20O%20extends%20any_lang-3d94f20b.js    0.63 kB │ gzip:   0.43 kB
dist/assets/Login-7e5c89a2.js                                                                                0.63 kB │ gzip:   0.39 kB

This only affects one of my components. The component where this happens is very simple - only 11 lines long, and produces a reasonably sized asset file, who's contents look reasonable - it's just the filename is weird. This is the component:
<!-- Copyright 2023, Blah Inc. All Rights Reserved. -->

<script setup lang="ts" generic="T extends any, O extends any">
const router = useRouter()
</script>

<template>
  <button type="button" class="btn btn-secondary" @click="router.back()">
    <i-tabler-arrow-left inline-block mt--4px /> Back
  </button>
</template>

It looks like the first line of the components script is being slugified and used as part of the filename?
What that means is that most of these files are blah-hash.js - i.e. they have a .js (or .css) extension - but the super long one effectively has a file extension of .vue_vue_type_script_setup_true_generic_T%20extends%20any%2C%20O%20extends%20any_lang-3d94f20b.js.
This causes Nginx to serve that file with text/html Content-Type - which causes the browser to not load the module:
Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of "text/html". Strict MIME type checking is enforced for module scripts per HTML spec.
index-d3622a25.js:9

So, this isn't just a curiosity - this breaks the site when deployed!

I am currently fixing this up manually after the build by doing:
$ cd .\dist\assets\
$ sd '.vue_vue_type_script_setup_true_generic_T%20extends%20any%2C%20O%20extends%20any_lang' '' $(fd --type file)
$ mv BackButton.vue_vue_type_script_setup_true_generic_T%20extends%20any%2C%20O%20extends%20any_lang-3d94f20b.js BackButton-3d94f20b.js

That works, but it's obviously not ideal.

Great, now there are two of them.

I also have this same issue :(. Seems to be for shared components being imported into more than one asynchronously loaded/defined components.

Same here, exactly as @dflock describes, for generic components it will break the app if you have a component with whitespace in the generic attribute, e.g.:
<script setup lang="ts" generic="T extends any">
...
</script>

@dflock @GideonRoose I created a new issue for that problem as I think it is slightly different and should have a higher priority than this issue: #169

@sapphi-red Your new issue #169 seems to have been fixed by https://github.com/vuejs/core/issues/8270 - but doesn't fix the whole issue. I can confirm that since I updated to @vitejs/plugin-vue >= 4.2.2, my broken filename seems to have changed from this:
BackButton.vue_vue_type_script_setup_true_generic_T%20extends%20any%2C%20O%20extends%20any_lang-3d94f20b.js
to this:
BackButton.vue_vue_type_script_setup_true_lang-2a2f9473.js
... but this will still break the site when deployed, because NGINX still thinks the file extension is .vue_vue_type_script_setup_true_lang-2a2f9473.js, not .js

I believe nginx would work with that file name. In past, Vite was using a file name like foo.12345.js and we didn't get any reports like that.

I finally got around to testing this out properly end-to-end - and I stand corrected! The components with the long filenames are served up as expected as application/javascript, so everything works and I can remove my workarounds!
Thanks!

I had the same problem and can confirm that it is related to component imports (what @chris-upmind mentioned above). I'm asynchronously importing several components in a file and I had one of the components also imported inside those async components. Whenever I ran build phase the component got .vue_vue_type_script_setup_true_lang.[hash].js appended to it's filename. After I removed the double-imported component from the async import list everything was working as intended.

Since there is no actual code output or bundling issue in Vite or this plugin and the problem is purely aesthetic, you can avoid names like that by using this simple function in your Vite config (compatible with Vite 4):
rollupOptions: {
  output: {
    chunkFileNames: (assetInfo) => {
      if (assetInfo.name && assetInfo.name.endsWith('.vue_vue_type_script_setup_true_lang')) {
        return `assets/${assetInfo.name.slice(0, -36)}-[hash:8].js`
      } else {
        return 'assets/[name]-[hash:8].js'
      }
    }
  }
}

This change will only affect the file name - file contents remain the same and, as mentioned above, will include any external libraries that your component and no other component in the application relies on.

Is there a way without rollup options?
it breaks, for example vite-plugin-compressin

The problem still exists, I’m very sad.
vite: 4.4.9
@vitejs/plugin-vue: 4.3.4

Now there is still this problem, I wrote a project to reproduce it.
https://github.com/exidot/vitepluginvue-iss19-reproduce

Now there is still this problem, I wrote a project to reproduce it. https://github.com/exidot/vitepluginvue-iss19-reproduce

Sorry, my conclusion was wrong, and I did not find a pattern in which it occurred !

i'm having this issue too, it happens when component imported twice or more and this genrates too big files importing everything css from main component and js

Same issue here. It seems to get triggered by something. It did seem to trigger on components that are imported more then once (which is weird in itself since that is the whole idea in a component based project).
For us it also seems to try and import a lot of other components that are not even related to the component. It generates a 51kb file with a lot of imports not even used in the source file.
Could it be an issue with Vue/Async/Suspense and Vite?

Now there is still this problem, I wrote a project to reproduce it. https://github.com/exidot/vitepluginvue-iss19-reproduce

Sorry, my conclusion was wrong, and I did not find a pattern in which it occurred !

Same problem occurs with vite 5.0. and vue js 3.4.
tested with these packages:
"@types/node": "^18.19.3",
"@vitejs/plugin-vue": "^4.5.2",
"typescript": "~5.3.0",
"vite": "^5.0.10",
"vue-tsc": "^1.8.25"

Is the issue still on?
My temporary solution is (similar to @thexeos):
chunkFileNames: (assetInfo: { name: string }) => {
    const name =
        assetInfo.name.endsWith(".vue_vue_type_style_index_0_lang") ||
        assetInfo.name.endsWith(".vue_vue_type_script_setup_true_lang") ?
        assetInfo.name.split(".")[0] : assetInfo.name;
    return `assets/js/${name}-[hash].js`;
}


Native balance should show up in TokenScript cards

This is a TokenScript issue: https://github.com/AlphaWallet/TokenScript/issues/329


Godeps: bump godbus and go-systemd

Fixes #992

@ecnahc515 what is the actual problem you saw with this? can you provide a case to reproduce?

i think the interest here is in coreos/go-systemd#108 to fix #992.

I understand that (see OP), but out of band Chance expressed concern that
this patch caused other issues, so I want to hear what they are
On Oct 12, 2015 4:57 PM, "Nick Owens"<EMAIL_ADDRESS>wrote:

i think the interest here is in coreos/go-systemd#108
https://github.com/coreos/go-systemd/pull/108 to fix #992
https://github.com/coreos/fleet/issues/992.
—
Reply to this email directly or view it on GitHub
https://github.com/coreos/fleet/pull/1375#issuecomment-147551969.

@jonboulle When I submit a unit with a line longer than 2048 characters, its submitted successfully but the unit can't be listed or destroyed and fleet continues to spew errors in it's logs about the unit not being able to be validated. So it's basically stuck in fleet once you submit it. Validation should be rejecting it before it gets into etcd, and ideally also on the client.

@ecnahc515 https://github.com/coreos/fleet/commit/db1fba58e601a3bf2d7bf1a7b7ee095632d09916

This is already checked in fleetctl so only applies to older or other clients.

@jonboulle I just tested this, and it's not preventing submission of units with lines longer than 2048 bytes. It gets submitted, and I can remove it now, but fleet still trys to submit to systemd, and systemd has the errors from before: Missing '='.

@ecnahc515 want to test this with your scenario now?

This fixes the issue, but the error message that told me specifically what the problem was has gotten more generic/worse:
core@core-01:~core@core-01 ~ $ /opt/bin/fleetctl start echo.service
Error creating units: error retrieving Unit(echo.service) from Registry: googleapi: got HTTP response code 500 with body: {"error":{"code":500,"message":""}}
core@core-01:~core@core-01 ~ $ /usr/bin/fleetctl start echo.service
Error creating units: error retrieving Unit(echo.service) from Registry: googleapi: got HTTP response code 500 with body: {"error":{"code":500,"message":""}}

That's not right..

@ecnahc515 I can't reproduce, can you please provide steps with shas and examples?

Building fleet:
hub checkout https://github.com/coreos/fleet/pull/1375                                                                                master
Branch jonboulle-ecnahc515-update_go_systemd set up to track remote branch ecnahc515-update_go_systemd from jonboulle.
Switched to a new branch 'jonboulle-ecnahc515-update_go_systemd'
~/g/s/g/c/fleet ❯❯❯ git pull                                                                                jonboulle-ecnahc515-update_go_systemd
Already up-to-date.
~/g/s/g/c/fleet ❯❯❯ ./build-docker                                                                                jonboulle-ecnahc515-update_go_systemd
~/g/s/g/c/fleet ❯❯❯ export DOCKER_HOST=<IP_ADDRESS>:2375                                                                                ⏎ jonboulle-ecnahc515-update_go_systemd
~/g/s/g/c/fleet ❯❯❯ docker ps                                                                                jonboulle-ecnahc515-update_go_systemd
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
~/g/s/g/c/fleet ❯❯❯ ./build-docker                                                                                jonboulle-ecnahc515-update_go_systemd
Building fleetd...
Building fleetctl...

Starting fleet and the problem unit on coreos-vagrant:
core@core-01:~core@core-01 ~ $ sudo systemctl stop fleet
core@core-01:~core@core-01 ~ $ sudo cp /Users/chance/go/src/github.com/coreos/fleet/bin/fleetd /opt/bin/fleetd
core@core-01:~core@core-01 ~ $ sudo cp /Users/chance/go/src/github.com/coreos/fleet/bin/fleetctl /opt/bin/fleetctl
core@core-01:~core@core-01 ~ $ sudo systemctl cat fleet
# /usr/lib64/systemd/system/fleet.service
[Unit]
Description=fleet daemon

After=etcd.service
After=etcd2.service

Wants=fleet.socket
After=fleet.socket

[Service]
Environment=GOMAXPROCS=1
ExecStart=/usr/bin/fleetd
Restart=always
RestartSec=10s

[Install]
WantedBy=multi-user.target

# /run/systemd/system/fleet.service.d/20-cloudinit.conf
[Service]
Environment="FLEET_METADATA=role=master"
Environment="FLEET_PUBLIC_IP=<IP_ADDRESS>"
# /etc/systemd/system/fleet.service.d/override.conf
[Service]
ExecStart=
ExecStart=/opt/bin/fleetd
core@core-01:~core@core-01 ~ $ sudo systemctl start fleet
core@core-01 ~ $ ps aux | grep fleet
root      1441  0.7  1.0  14192 10660 ?        Ssl  17:23   0:01 /opt/bin/fleetd
core@core-01:~core@core-01 ~ $ /opt/bin/fleetd --version
fleetd version 0.11.5+git
core@core-01:~core@core-01 ~ $ /opt/bin/fleetctl --version
fleetctl version 0.11.5+git
core@core-01:~core@core-01 ~ $ ls
echo.service
core@core-01:~core@core-01 ~ $ cat echo.service
# test unit file

[Service]
ExecStart=/usr/bin/echo \
  "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
Restart=always
RestartSec=10s

core@core-01:~core@core-01 ~ $ fleetctl list-unit-files
UNIT	HASH	DSTATE	STATE	TARGET
core@core-01:~core@core-01 ~ $ fleetctl list-units
UNIT	MACHINE	ACTIVE	SUB
core@core-01:~core@core-01 ~ $ fleetctl start echo.service
Error creating units: error retrieving Unit(echo.service) from Registry: googleapi: got HTTP response code 500 with body: {"error":{"code":500,"message":""}}
core@core-01:~core@core-01 ~ $ /opt/bin/fleetctl start echo.service
Error creating units: error retrieving Unit(echo.service) from Registry: googleapi: got HTTP response code 500 with body: {"error":{"code":500,"message":""}}

sha1sum:
core@core-01:~core@core-01 ~ $ sha1sum /opt/bin/{fleetctl,fleetd}
deaf9121c17779df218ea9242175c480bc15014c  /opt/bin/fleetctl
8af7450080ec5e317cb3cf57d56d2a4f3980e52e  /opt/bin/fleetd

Git commit: 1f9fe14fd2c925b920e3fe3e39ee16a5bceb5bfe

Please look in fleetd's log to see what the 500 actually is internally.
On Wed, Oct 14, 2015 at 10:29 AM, Chance Zibolski<EMAIL_ADDRESS>wrote:

Building fleet:
hub checkout https://github.com/coreos/fleet/pull/1375                                                                                master
Branch jonboulle-ecnahc515-update_go_systemd set up to track remote branch ecnahc515-update_go_systemd from jonboulle.
Switched to a new branch 'jonboulle-ecnahc515-update_go_systemd'
~/g/s/g/c/fleet ❯❯❯ git pull                                                                                jonboulle-ecnahc515-update_go_systemd
Already up-to-date.
~/g/s/g/c/fleet ❯❯❯ ./build-docker                                                                                jonboulle-ecnahc515-update_go_systemd
~/g/s/g/c/fleet ❯❯❯ export DOCKER_HOST=<IP_ADDRESS>:2375                                                                                ⏎ jonboulle-ecnahc515-update_go_systemd
~/g/s/g/c/fleet ❯❯❯ docker ps                                                                                jonboulle-ecnahc515-update_go_systemd
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
~/g/s/g/c/fleet ❯❯❯ ./build-docker                                                                                jonboulle-ecnahc515-update_go_systemd
Building fleetd...
Building fleetctl...
Starting fleet and the problem unit on coreos-vagrant:
core@core-01:~core@core-01 ~ $ sudo systemctl stop fleet
core@core-01:~core@core-01 ~ $ sudo cp /Users/chance/go/src/github.com/coreos/fleet/bin/fleetd /opt/bin/fleetd
core@core-01:~core@core-01 ~ $ sudo cp /Users/chance/go/src/github.com/coreos/fleet/bin/fleetctl /opt/bin/fleetctl
core@core-01:~core@core-01 ~ $ sudo systemctl cat fleet
/usr/lib64/systemd/system/fleet.service
[Unit]
Description=fleet daemon
After=etcd.service
After=etcd2.service
Wants=fleet.socket
After=fleet.socket
[Service]
Environment=GOMAXPROCS=1
ExecStart=/usr/bin/fleetd
Restart=always
RestartSec=10s
[Install]
WantedBy=multi-user.target
/run/systemd/system/fleet.service.d/20-cloudinit.conf
[Service]
Environment="FLEET_METADATA=role=master"
Environment="FLEET_PUBLIC_IP=<IP_ADDRESS>"
/etc/systemd/system/fleet.service.d/override.conf
[Service]
ExecStart=
ExecStart=/opt/bin/fleetd
core@core-01:~core@core-01 ~ $ sudo systemctl start fleet
core@core-01 ~ $ ps aux | grep fleet
root      1441  0.7  1.0  14192 10660 ?        Ssl  17:23   0:01 /opt/bin/fleetd
core@core-01:~core@core-01 ~ $ /opt/bin/fleetd --version
fleetd version 0.11.5+git
core@core-01:~core@core-01 ~ $ /opt/bin/fleetctl --version
fleetctl version 0.11.5+git
core@core-01:~core@core-01 ~ $ ls
echo.service
core@core-01:~core@core-01 ~ $ cat echo.service
test unit file
[Service]
ExecStart=/usr/bin/echo
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
Restart=always
RestartSec=10s
core@core-01:~core@core-01 ~ $ fleetctl list-unit-files
UNIT    HASH    DSTATE  STATE   TARGET
core@core-01:~core@core-01 ~ $ fleetctl list-units
UNIT    MACHINE ACTIVE  SUB
core@core-01:~core@core-01 ~ $ fleetctl start echo.service
Error creating units: error retrieving Unit(echo.service) from Registry: googleapi: got HTTP response code 500 with body: {"error":{"code":500,"message":""}}
core@core-01:~core@core-01 ~ $ /opt/bin/fleetctl start echo.service
Error creating units: error retrieving Unit(echo.service) from Registry: googleapi: got HTTP response code 500 with body: {"error":{"code":500,"message":""}}
sha1sum:
core@core-01:~core@core-01 ~ $ sha1sum /opt/bin/{fleetctl,fleetd}
deaf9121c17779df218ea9242175c480bc15014c  /opt/bin/fleetctl
8af7450080ec5e317cb3cf57d56d2a4f3980e52e  /opt/bin/fleetd
Git commit: 1f9fe14
https://github.com/coreos/fleet/commit/1f9fe14fd2c925b920e3fe3e39ee16a5bceb5bfe
—
Reply to this email directly or view it on GitHub
https://github.com/coreos/fleet/pull/1375#issuecomment-148126329.

@jonboulle It turns out that etcd still had the unit stored from a previous run prior to the fix, and despite it not showing in fleetctl list-units or fleetctl list-unit-files it was still in etcd. These logs indicated so:
Oct 14 21:55:26 core-01 fleetd[1441]: ERROR unit.go:72: error parsing Unit(23d83054699a61ecf2480a0cc5740ad1118e2e4b): line too long (max 2048 bytes)
Oct 14 21:55:26 core-01 fleetd[1441]: WARN job.go:268: No Unit found in Registry for Job(echo.service)
Oct 14 21:55:26 core-01 fleetd[1441]: ERROR job.go:108: Failed to parse Unit from etcd: unable to parse Unit in Registry at key /_coreos.com/fleet/job/echo.service/object

After deleting the fleet dir in etcd and restarting fleet with the latest commit fleetctl returns the proper results:
core@core-01:~core@core-01 ~ $ /opt/bin/fleetctl start echo.service
Error creating units: failed getting Unit(echo.service) from file: line too long (max 2048 bytes)

+1 for the fix. Kind of a blocker.
As far as the caching is considered, I am assuming that happens for the units that were previously deployed and failed due to line length issue..  Since  the units that exceed the  length limit would technically have never worked for anyone (prior to the fix), can we simply address this by documentation (cleaning up respective entry in etcd ?).
My 2 cents :   Having this fix upstream sooner in alpha with workaround for existing units would be better off than waiting for a complete solution that addresses caching solution for unit files that do not currently work.

Any chance you could come up with an example of what the cleanup process
involves?
On Mon, Nov 16, 2015 at 9:37 PM, Sukrit Khera<EMAIL_ADDRESS>wrote:

+1 for the fix. Kind of a blocker.
As far as the caching is considered, I am assuming that happens for the
units that were previously deployed and failed due to line length issue..
Since the units that exceed the length limit would technically have never
worked for anyone (prior to the fix), can we simply address this by
documentation (cleaning up respective entry in etcd ?).
My 2 cents : Having this fix upstream sooner in alpha with workaround for
existing units would be better off than waiting for a complete solution
that addresses caching solution for unit files that do not currently work.
—
Reply to this email directly or view it on GitHub
https://github.com/coreos/fleet/pull/1375#issuecomment-157275763.

FWIW, all tests (unit and functional) still pass with this.

@jonboulle - I think the "cleanup process" mentioned by @sukrit007 was in reference to the following comment from @chancez.

After deleting the fleet dir in etcd and restarting fleet ...

In my case I don't have an issue with lines exceeding the line limit in my original template unit-files but I am affected by fleet converting the ExecStart string, (broken up with \ characters), into a single line.


Arch Migrator

Checklist

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

Enable ppc64le and aarch64 builds

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.
I do have some suggestions for making it better though...
For recipe:

license_file entry is missing, but is expected.

@conda-forge-admin, please rerender

@ocefpaf FYI


Save the zero-Doppler spacing in meters in the product's metadata

This PR updates the RTC-S1 SAS to save the zero-Doppler spacing in meters in the products' metadata. It requires the OPERA S1-Reader version 0.2.4 that provides the new attribute average_azimuth_pixel_spacing parsed from the S1 annotation files field azimuthPixelSpacing.

The code itself looks good to me, but I would like to hold this off until we come up with conclusion about the PR on s1-reader side.

Sounds good. Thank you, @seongsujeong !

HI @seongsujeong  and @hfattahi , just updated this PR. The check for an empty polygon was introduced in commit https://github.com/opera-adt/RTC/pull/83/commits/2e6eebbc14de286963e2e3e2bb4997df714ade73.


[style]:  UI of the home page

What's the style idea?
I would like to improve the ui of the home page.

I would like to improve the card ui by adding cool effects and box shadows ,also i would like to make changes on the existing padding and margin.
Add screenshots
Add screenshots
Code of Conduct

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

Please try to keep it simple. Additionally, you can work on aligning the data inside the card, which would be even better. If you would like, I can assign this task to you.

Please try to keep it simple. Additionally, you can work on aligning the data inside the card, which would be even better. If you would like, I can assign this task to you.

Okie, I would like to make changes as per your requirements. And yes, I am participating in GSSocC'23.

Please try to keep it simple. Additionally, you can work on aligning the data inside the card, which would be even better. If you would like, I can assign this task to you.

Please assign me this issue so that I can resolve it under GSSOC-23

Please try to keep it simple. Additionally, you can work on aligning the data inside the card, which would be even better. If you would like, I can assign this task to you.

https://github.com/JasonDsouza212/free-hit/assets/132778037/3429005b-5173-4ff2-94c9-ac40df0821a7
Is this ok , or I need to adjust css more?
kindly review and assign this to me.

hey, I want to complete this task, Can you assign this to me

I am interested in contribution to the project in beautifying the UI, I will add box-shadows and add animations to the elements, I will also simplify the padding to make the website look more fresh and free.


log metadata in valid json

currently logged as python blob.

Just to clarify this is related to the log file of actions taken by ThreatResponse during it's initial run.

@andrewkrug I've noticed this in the cr--console.log file and the cr--aws_ir.log files

@amccormack one of those files is created by our logger class cr--aws_ir .  The other is pulled straight out of the API and likely needs a little massaging.


docs: add license section

Fixes https://github.com/daytonaio/enterprise-docs/issues/134

@fabjanvucina in the Admin interface "Expires At" should be renamed to "Expiration"
@stefanicjuraj you can edit it the docs right away


Support LNBits at onion address

This should be able to do something similar to the stuff we do for core lightning.

Mentioned the wrong ticket in #1336. I meant to close this ticket.


fix #437 by not using the reserved keyword function as property

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Thanks!