text:
getting unauthorized 401 while getting list rooms from Docker

svc.listRooms().then((rooms) => {
console.log(rooms);
});
my nodejs api is a container and i am unable to execute listrooms / any other api

any update ?
this is the error I am getting now
data: 'invalid token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ2aWRlbyI6eyJyb29tTGlzdCI6dHJ1ZX0sImlhdCI6MTY3NTMxMjE5OCwibmJmIjoxNjc1MzEyMTk4LCJleHAiOjE2NzUzMTI3OTgsImlzcyI6IkFQSVdHOXIyNTNYRm1reiJ9.n1wf70_FYJqmVpvXBe1YCinn03QpRsnpEXhoX9H0RD4, error: square/go-jose/jwt: validation failed, token not valid yet (nbf)'
},

here is my full code
`const createRoom = async (roomName, timeout) => {
try {
const svc = new RoomServiceClient(livekitHost, API, SECRET);
let rooms = await svc.listRooms();
for (let i = 0; i < rooms.length; i++) {
  const room = rooms[i];
  if (room.name === roomName) {
    await svc.deleteRoom(roomName);
    break;
  }
}
const opts = {
  name: roomName,
  // timeout in seconds
  emptyTimeout: 10 * 60,
  maxParticipants: 2,
};

let createdRoom = await svc.createRoom(opts);
console.log(roomName, createdRoom);
return true;

} catch (error) {
console.log(error, "fn createRoom error");
}
return false;
};`

If you are running your application from within Docker, you'd need to pass LIVEKIT_API_KEY and LIVEKIT_API_SECRET environment vars to it. Otherwise your application will lack the proper credentials to make service requests.

hi @davidzhao , I already have declared LIVEKIT_API_KEY and LIVEKIT_API_SECRET in my env and inside container also the same env is reflecting.
My Senario is I have a expressjs rest api which has all my endpoints  which serves to my react native app and i want a calling functionality. So i setup the free version. get the api and secret key and created a function name createRoom (above code) in my localmachine it creates a token and returns the list of rooms (let rooms = await svc.listRooms();) but when i create a docker container it fails to fetch list of rooms saying 401

let me share you sample app for testing

https://github.com/kmamtora/livekitstest
hi @davidzhao here is the code
I get this error from my server container
Error log
Error: Request failed with status code 401
at createError (/app/node_modules/livekit-server-sdk/node_modules/axios/lib/core/createError.js:16:15)
at settle (/app/node_modules/livekit-server-sdk/node_modules/axios/lib/core/settle.js:17:12)
at IncomingMessage.handleStreamEnd (/app/node_modules/livekit-server-sdk/node_modules/axios/lib/adapters/http.js:269:11)
at IncomingMessage.emit (node:events:524:35)
at endReadableNT (node:internal/streams/readable:1359:12)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
config: {
url: '/twirp/livekit.RoomService/ListRooms',
method: 'post',
data: '{"names":[]}',
headers: {
Accept: 'application/json, text/plain, /',
'Content-Type': 'application/json',
Authorization: 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ2aWRlbyI6eyJyb29tTGlzdCI6dHJ1ZX0sImlhdCI6MTY3NTM5OTA5MCwibmJmIjoxNjc1Mzk5MDkwLCJleHAiOjE2NzUzOTk2OTAsImlzcyI6IkFQSVdHOXIyNTNYRm1reiJ9.nPu1qwPY7XW2vor-pbC7RusYbvY4__rOkQ5RL63U9jM',
'User-Agent': 'axios/0.21.4',
'Content-Length': 12
},
baseURL: 'https://guruji.livekit.cloud/',
transformRequest: [ [Function: transformRequest] ],
transformResponse: [ [Function: transformResponse] ],
timeout: 0,
adapter: [Function: httpAdapter],
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
maxBodyLength: -1,
validateStatus: [Function: validateStatus],
transitional: {
silentJSONParsing: true,
forcedJSONParsing: true,
clarifyTimeoutError: false
}
},
request: <ref *1> ClientRequest {
_events: [Object: null prototype] {
abort: [Function (anonymous)],
aborted: [Function (anonymous)],
connect: [Function (anonymous)],
error: [Function (anonymous)],
socket: [Function (anonymous)],
timeout: [Function (anonymous)],
finish: [Function: requestOnFinish]
},
_eventsCount: 7,
_maxListeners: undefined,
outputData: [],
outputSize: 0,
writable: true,
destroyed: true,
_last: false,
chunkedEncoding: false,
shouldKeepAlive: true,
maxRequestsOnConnectionReached: false,
_defaultKeepAlive: true,
useChunkedEncodingByDefault: true,
sendDate: false,
_removedConnection: false,
_removedContLen: false,
_removedTE: false,
strictContentLength: false,
_contentLength: 12,
_hasBody: true,
_trailer: '',
finished: true,
_headerSent: true,
_closed: true,
socket: TLSSocket {
_tlsOptions: [Object],
_secureEstablished: true,
_securePending: false,
_newSessionPending: false,
_controlReleased: true,
secureConnecting: false,
_SNICallback: null,
servername: 'guruji.livekit.cloud',
alpnProtocol: false,
authorized: true,
authorizationError: null,
encrypted: true,
_events: [Object: null prototype],
_eventsCount: 9,
connecting: false,
_hadError: false,
_parent: null,
_host: 'guruji.livekit.cloud',
_closeAfterHandlingError: false,
_readableState: [ReadableState],
_maxListeners: undefined,
_writableState: [WritableState],
allowHalfOpen: false,
_sockname: null,
_pendingData: null,
_pendingEncoding: '',
server: undefined,
_server: null,
ssl: [TLSWrap],
_requestCert: true,
_rejectUnauthorized: true,
timeout: 5000,
parser: null,
_httpMessage: null,
[Symbol(res)]: [TLSWrap],
[Symbol(verified)]: true,
[Symbol(pendingSession)]: null,
[Symbol(async_id_symbol)]: -1,
[Symbol(kHandle)]: [TLSWrap],
[Symbol(lastWriteQueueSize)]: 0,
[Symbol(timeout)]: Timeout {
_idleTimeout: 5000,
_idlePrev: [TimersList],
_idleNext: [TimersList],
_idleStart: 49413,
_onTimeout: [Function: bound ],
_timerArgs: undefined,
_repeat: null,
_destroyed: false,
[Symbol(refed)]: false,
[Symbol(kHasPrimitive)]: false,
[Symbol(asyncId)]: 568,
[Symbol(triggerId)]: 566
},
[Symbol(kBuffer)]: null,
[Symbol(kBufferCb)]: null,
[Symbol(kBufferGen)]: null,
[Symbol(kCapture)]: false,
[Symbol(kSetNoDelay)]: false,
[Symbol(kSetKeepAlive)]: true,
[Symbol(kSetKeepAliveInitialDelay)]: 1,
[Symbol(kBytesRead)]: 0,
[Symbol(kBytesWritten)]: 0,
[Symbol(connect-options)]: [Object]
},
_header: 'POST /twirp/livekit.RoomService/ListRooms HTTP/1.1\r\n' +
'Accept: application/json, text/plain, /\r\n' +
'Content-Type: application/json\r\n' +
'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ2aWRlbyI6eyJyb29tTGlzdCI6dHJ1ZX0sImlhdCI6MTY3NTM5OTA5MCwibmJmIjoxNjc1Mzk5MDkwLCJleHAiOjE2NzUzOTk2OTAsImlzcyI6IkFQSVdHOXIyNTNYRm1reiJ9.nPu1qwPY7XW2vor-pbC7RusYbvY4__rOkQ5RL63U9jM\r\n' +
'User-Agent: axios/0.21.4\r\n' +
'Content-Length: 12\r\n' +
'Host: guruji.livekit.cloud\r\n' +
'Connection: keep-alive\r\n' +
'\r\n',
_keepAliveTimeout: 0,
_onPendingData: [Function: nop],
agent: Agent {
_events: [Object: null prototype],
_eventsCount: 2,
_maxListeners: undefined,
defaultPort: 443,
protocol: 'https:',
options: [Object: null prototype],
requests: [Object: null prototype] {},
sockets: [Object: null prototype] {},
freeSockets: [Object: null prototype],
keepAliveMsecs: 1000,
keepAlive: true,
maxSockets: Infinity,
maxFreeSockets: 256,
scheduling: 'lifo',
maxTotalSockets: Infinity,
totalSocketCount: 1,
maxCachedSessions: 100,
_sessionCache: [Object],
[Symbol(kCapture)]: false
},
socketPath: undefined,
method: 'POST',
maxHeaderSize: undefined,
insecureHTTPParser: undefined,
joinDuplicateHeaders: undefined,
path: '/twirp/livekit.RoomService/ListRooms',
_ended: true,
res: IncomingMessage {
_readableState: [ReadableState],
_events: [Object: null prototype],
_eventsCount: 3,
_maxListeners: undefined,
socket: null,
httpVersionMajor: 1,
httpVersionMinor: 1,
httpVersion: '1.1',
complete: true,
rawHeaders: [Array],
rawTrailers: [],
joinDuplicateHeaders: undefined,
aborted: false,
upgrade: false,
url: '',
method: null,
statusCode: 401,
statusMessage: 'Unauthorized',
client: [TLSSocket],
_consuming: false,
_dumped: false,
req: [Circular *1],
responseUrl: 'https://guruji.livekit.cloud/twirp/livekit.RoomService/ListRooms',
redirects: [],
[Symbol(kCapture)]: false,
[Symbol(kHeaders)]: [Object],
[Symbol(kHeadersCount)]: 8,
[Symbol(kTrailers)]: null,
[Symbol(kTrailersCount)]: 0
},
aborted: false,
timeoutCb: null,
upgradeOrConnect: false,
parser: null,
maxHeadersCount: null,
reusedSocket: false,
host: 'guruji.livekit.cloud',
protocol: 'https:',
_redirectable: Writable {
_writableState: [WritableState],
_events: [Object: null prototype],
_eventsCount: 2,
_maxListeners: undefined,
_options: [Object],
_ended: true,
_ending: true,
_redirectCount: 0,
_redirects: [],
_requestBodyLength: 12,
_requestBodyBuffers: [],
_onNativeResponse: [Function (anonymous)],
_currentRequest: [Circular *1],
_currentUrl: 'https://guruji.livekit.cloud/twirp/livekit.RoomService/ListRooms',
[Symbol(kCapture)]: false
},
[Symbol(kCapture)]: false,
[Symbol(kBytesWritten)]: 0,
[Symbol(kEndCalled)]: true,
[Symbol(kNeedDrain)]: false,
[Symbol(corked)]: 0,
[Symbol(kOutHeaders)]: [Object: null prototype] {
accept: [Array],
'content-type': [Array],
authorization: [Array],
'user-agent': [Array],
'content-length': [Array],
host: [Array]
},
[Symbol(errored)]: null,
[Symbol(kUniqueHeaders)]: null
},
response: {
status: 401,
statusText: 'Unauthorized',
headers: {
'content-length': '305',
'content-type': 'text/plain; charset=utf-8',
date: 'Fri, 03 Feb 2023 04:36:45 GMT',
vary: 'Origin'
},
config: {
url: '/twirp/livekit.RoomService/ListRooms',
method: 'post',
data: '{"names":[]}',
headers: [Object],
baseURL: 'https://guruji.livekit.cloud/',
transformRequest: [Array],
transformResponse: [Array],
timeout: 0,
adapter: [Function: httpAdapter],
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
maxBodyLength: -1,
validateStatus: [Function: validateStatus],
transitional: [Object]
},
request: <ref *1> ClientRequest {
_events: [Object: null prototype],
_eventsCount: 7,
_maxListeners: undefined,
outputData: [],
outputSize: 0,
writable: true,
destroyed: true,
_last: false,
chunkedEncoding: false,
shouldKeepAlive: true,
maxRequestsOnConnectionReached: false,
_defaultKeepAlive: true,
useChunkedEncodingByDefault: true,
sendDate: false,
_removedConnection: false,
_removedContLen: false,
_removedTE: false,
strictContentLength: false,
_contentLength: 12,
_hasBody: true,
_trailer: '',
finished: true,
_headerSent: true,
_closed: true,
socket: [TLSSocket],
_header: 'POST /twirp/livekit.RoomService/ListRooms HTTP/1.1\r\n' +
'Accept: application/json, text/plain, /\r\n' +
'Content-Type: application/json\r\n' +
'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ2aWRlbyI6eyJyb29tTGlzdCI6dHJ1ZX0sImlhdCI6MTY3NTM5OTA5MCwibmJmIjoxNjc1Mzk5MDkwLCJleHAiOjE2NzUzOTk2OTAsImlzcyI6IkFQSVdHOXIyNTNYRm1reiJ9.nPu1qwPY7XW2vor-pbC7RusYbvY4__rOkQ5RL63U9jM\r\n' +
'User-Agent: axios/0.21.4\r\n' +
'Content-Length: 12\r\n' +
'Host: guruji.livekit.cloud\r\n' +
'Connection: keep-alive\r\n' +
'\r\n',
_keepAliveTimeout: 0,
_onPendingData: [Function: nop],
agent: [Agent],
socketPath: undefined,
method: 'POST',
maxHeaderSize: undefined,
insecureHTTPParser: undefined,
joinDuplicateHeaders: undefined,
path: '/twirp/livekit.RoomService/ListRooms',
_ended: true,
res: [IncomingMessage],
aborted: false,
timeoutCb: null,
upgradeOrConnect: false,
parser: null,
maxHeadersCount: null,
reusedSocket: false,
host: 'guruji.livekit.cloud',
protocol: 'https:',
_redirectable: [Writable],
[Symbol(kCapture)]: false,
[Symbol(kBytesWritten)]: 0,
[Symbol(kEndCalled)]: true,
[Symbol(kNeedDrain)]: false,
[Symbol(corked)]: 0,
[Symbol(kOutHeaders)]: [Object: null prototype],
[Symbol(errored)]: null,
[Symbol(kUniqueHeaders)]: null
},
data: 'invalid token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ2aWRlbyI6eyJyb29tTGlzdCI6dHJ1ZX0sImlhdCI6MTY3NTM5OTA5MCwibmJmIjoxNjc1Mzk5MDkwLCJleHAiOjE2NzUzOTk2OTAsImlzcyI6IkFQSVdHOXIyNTNYRm1reiJ9.nPu1qwPY7XW2vor-pbC7RusYbvY4__rOkQ5RL63U9jM, error: square/go-jose/jwt: validation failed, token not valid yet (nbf)'
},
isAxiosError: true,
toJSON: [Function: toJSON]
}
If I copy the same token (from above error) and create a curl command and execute inside the same container it gives positive response as aspected.

authors: davidzhao kmamtora

repo: livekit/server-sdk-js


text:
Adds upgradability to L2 Migrator contract

What does this pull request do? Explain your changes. (required)

Adds upgradability to L2 Migrator contract in case the contract needs to be updated. Using the same ManagerProxy and ManagerProxyTarget pattern used by protocol contracts .
Specific updates (required)

Copied contracts from protocol repo
Updated L2 Migrator to use ManagerProxyTarget
Updated unit tests

How did you test each of these updates (required)

ran unit tests
Does this pull request close any open issues?

Checklist:

[x] README and other documentation updated
[x] All tests using yarn test pass

Pull Request Test Coverage Report for Build 1791565572

4 of 19 (21.05%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-6.3%) to 93.699%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

contracts/proxy/ManagerProxy.sol
0
4
0.0%

contracts/proxy/Manager.sol
4
15
26.67%

Totals

Change from base Build 1779638733:
-6.3%

Covered Lines:
262

Relevant Lines:
277

💛  - Coveralls

source: gharchive/pull-request

authors: coveralls kautukkundan

repo: livepeer/arbitrum-lpt-bridge

license: MIT

license_type: permissive

license_source: github-api


text:
Show up/down status of transcoder on explorer/transcoders page

What's the problem? (required)
No information if transcoder is up or down.
What's the current behavior? (required)
Just no information.
Describe a possible solution you've considered (optional)
Explorer should periodically ping transcoder node (via http request) and show transcoder's status (up or down) in transcoders list.

Does the SDK already have a way to check this?

source: gharchive/issue

authors: darkdarkdragon iSasFTW

repo: livepeer/livepeerjs


text:
runing problem

when i run the code ‘python main.py -data cifar10 -nc 25 -jr 0.25 -gr 2 -ls 2 -algo PGFed -mu 0.1 -lam 0.01 -bt 0.0’，i got the result that
File path: ../results/cifar10-25clients_alpha0.3-PGFed-lr:0.00500-mu:0.10000-lambda:0.01000-cnn-0.h5
Traceback (most recent call last):
File "C:\Users...\Desktop\pgfed-main\system\main.py", line 214, in
run(args)
File "C:\Users...\Desktop\pgfed-main\system\main.py", line 106, in run
server.train()
File "C:\Users...\Desktop\pgfed-main\system\flcore\servers\serverpgfed.py", line 64, in train
self.save_results(fn=self.hist_result_fn)
File "C:\Users...\Desktop\pgfed-main\system\flcore\servers\serverbase.py", line 221, in save_results
with h5py.File(file_path, 'w') as hf:
File "D:\a_environment\anaconda\envs\env1\lib\site-packages\h5py_hl\files.py", line 567, in init
fid = make_fid(name, mode, userblock_size, fapl, fcpl, swmr=swmr)
File "D:\a_environment\anaconda\envs\env1\lib\site-packages\h5py_hl\files.py", line 237, in make_fid
fid = h5f.create(name, h5f.ACC_TRUNC, fapl=fapl, fcpl=fcpl)
File "h5py_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
File "h5py_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
File "h5py\h5f.pyx", line 126, in h5py.h5f.create
OSError: [Errno 22] Unable to create file (unable to open file: name = '../results/cifar10-25clients_alpha0.3-PGFed-lr:0.00500-mu:0.10000-lambda:0.01000-cnn-0.h5', errno = 22, error message = 'Invalid argument', flags = 13, o_flags = 302)
i think there is something wrong with the function that meant to save the result of the training(probably the way to create the file to restore the result), can u give me some advice on how to solve the problem i mentioned, thank u for ur devotion.

Hi @hideon27
Thank you for your question. What OS are you running the code on? I am not able to reproduce the error, but I think the error happens since the file_path is incompatible with your OS. I would suggest changing the file_path variable to something simple, like "results.h5", and see if the error happens again.

repo: ljaiverson/pgfed


text:
Hello?

@lk2684753
한국 사람이죠?
sd-cloud 멎지네요.
소통 가능하실까요?
카톡 입니다.
https://open.kakao.com/o/snTCdgdd

@lk2684753 한국 사람이죠? sd-cloud 멎지네요. 소통 가능하실까요?
카톡 입니다. https://open.kakao.com/o/snTCdgdd

No, I'm not Korean. Sd-cloud works fine so far.
You can reach us on Telegram at https://t.me/+CqZWBUd3PTFlY2I1


text:
🛑 Goodmd total.good-md.com:5280 is down

In 52da0ca, Goodmd total.good-md.com:5280 (https://total.good-md.com:5280) was down:

HTTP code: 503
Response time: 1423 ms

Resolved: Goodmd total.good-md.com:5280 is back up in 08fd779 after 2 hours, 49 minutes.

repo: lksjames/monitoring


text:
🛑 까사미아 www.guud.com is down

In 9be5f12, 까사미아 www.guud.com (http://www.guud.com) was down:

HTTP code: 0
Response time: 0 ms

Resolved: 까사미아 www.guud.com is back up in 064337c after 13 minutes.


text:
현재 블로그에 있는 문제점

post 쓸 때 YAML 헤더에 title에 콜론을 쓸 일이 종종 있는데, 콜론을 넣으면 YAML 헤더의 속성 중 하나로 지킬이 인식하는 문제 해결 가능한지 궁금.

지킬 자체 syntax highlighter를 못 쓰겠는데, 코드블럭의 언어를 C++로 쓰면 이를 인식 못하는 경우가 있어서. 이거 극복 가능한 문제인지 궁금.

그래서 티스토리에서 흔히 쓰는 highlightjs를 설치했는데, 이건 종종 코드블럭 내 코드가 짤리는 문제가 있어서.. 이것도 극복 가능한 문제인지..

1, 2, 3 모두 해결


text:
Alignment of help button

Fixed #777

Nice. Thanks.

authors: llaske sarthak-g

repo: llaske/sugarizer

license_source: bigquery


text:
How do I find the size of the set epoch

I can't find the file to set epoch

Hi, freiend. Have you solved this problem? Looking forward to your sharing！

Hi, freiend. Have you solved this problem? Looking forward to your sharing！

in this paper train code, he didn't set the epoch, so the epoch is infinite， you can set epochs like the following :
"trainer = pl.Trainer(gpus=1, precision=32, callbacks=[logger], max_epochs=10)"

authors: StartMvoe YupingQiu wang196

repo: lllyasviel/ControlNet


text:
无法运行程序

Waiting is always displayed when running the program
老师我在运行时一直显示waiting，具体界面如图：https://raw.githubusercontent.com/1334581771/figurebed/main/img/202310121109908.png
https://raw.githubusercontent.com/1334581771/figurebed/main/img/202310121110560.png

在Task菜单 -> Concurrent task manager里面去增加任务的数量试一下看得不得行

谢谢老师，我将其从1改成了3，并没有明显的作用

下载v0.10.0试一下

repo: lmdu/dockey


text:
Clustering - all cell types

Run graph-based clustering on all spots containing cell bodies to distinguish major cell types
Notes:

2 types of clustering: molecular profiles only (i.e. non-spatial clustering from standard single-cell pipelines), and molecular + spatial (similar to strategy used in our previous DLPFC paper)
This should distinguish major cell types, but does not have enough resolution to distinguish subtypes within neurons / NE neurons
Possible difficulties due to multiple cell types per spot if we are not using spot-level deconvolution

Check consistency when clustering all samples together vs. clustering individual samples

Additional neuron subtypes (catecholaminergic) of interest: Grimm et al. (2004)

Use manually annotated region instead of automatic segmenting (which is less reliable)

repo: lmweber/locus-c


text:
Small fix to disable all extensions

disable all extensions with "all" now possible
follow up on issue #243

Codecov Report

Merging #247 (3f6393a) into master (b7332be) will decrease coverage by 0.74%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master     #247      +/-   ##
==========================================
- Coverage   30.23%   29.49%   -0.75%
==========================================
  Files          31       31
  Lines        2315     2285      -30
==========================================
- Hits          700      674      -26
+ Misses       1615     1611       -4

Impacted Files
Coverage Δ

lnbits/helpers.py
28.91% <0.00%> (-0.72%)
:arrow_down:

lnbits/core/views/generic.py
26.41% <0.00%> (-5.17%)
:arrow_down:

lnbits/core/views/api.py
20.00% <0.00%> (-3.81%)
:arrow_down:

lnbits/decorators.py
48.27% <0.00%> (-3.34%)
:arrow_down:

lnbits/commands.py
23.07% <0.00%> (-2.30%)
:arrow_down:

lnbits/core/views/public_api.py
23.07% <0.00%> (-1.93%)
:arrow_down:

lnbits/db.py
40.70% <0.00%> (-0.53%)
:arrow_down:

lnbits/app.py
28.57% <0.00%> (+2.06%)
:arrow_up:

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 b7332be...3f6393a. Read the comment docs.

authors: codecov-commenter talvasconcelos

repo: lnbits/lnbits


text:
New command ext_exec to allow system call; Automate bus group generation in openfpga shell scripts

Motivate of the pull request

[x] To address an existing issue. If so, please provide a link to the issue: #677
[ ] Breaking new feature. If so, please describe details in the description part.

Describe the technical details
What is currently done? (Provide issue link if applicable)

What does this pull request change?

This PR improves in the following aspects:

[x] Added a new command which allows users to run any external command in OpenFPGA shell
[x] Added a new test case: auto_gen_bus_group to validate the new command, which can call a python script to generate the bus group file on fly in an openfpga shell script
[x] Updated documentation about the new command

Which part of the code base require a change

[ ] VPR
[ ] Tileable routing architecture generator
[x] OpenFPGA libraries
[ ] FPGA-Verilog
[ ] FPGA-Bitstream
[ ] FPGA-SDC
[ ] FPGA-SPICE
[ ] Flow scripts
[ ] Architecture library
[ ] Cell library
[x] Documentation
[x] Regression tests
[ ] Continous Integration (CI) scripts

Impact of the pull request

[ ] Require a change on Quality of Results (QoR)
[ ] Break back-compatibility. If so, please list who may be influenced.

Merge as pyverilog will be installed to docker image on the master branch. Will follow up on any errors after merging.

repo: lnis-uofu/OpenFPGA


text:
Map me Preview

I recently installed hubot with the matteruser adapter. All works fine, but not the maps preview.
In your Readme-Example the bot response is just one image link.
If I ask my bot to map me sth. I get a response with 2 links, the "real" link (for which there is no preview available) and the image link (ending in "format=png").
Did you tweak your hubot for the example, so it only returns the image link or I am doing sth wrong here?
Here you have an example (link preview is activated in Mattermost):

After asking to Mattermost devs they said :

Hubot should really embed that image using markup and make the image link to the map. Might be worth opening an issue on that repo.

I am just not sure if this is an issue of matteruser or hubot....

hi @rgomez90 , the adapter is just pass through for the hubot plugins, it does not try to do anything smart. You should look at the implementation of the hubot map me plugin
Update: created a pull request :)

Thanks @loafoe

repo: loafoe/hubot-matteruser

license: mit


text:
Fails when no version is specified in package.json

Error description
Installed generate-changelog globally and after running it in a repository which doesn't have a version field in the package.json file, I get the following error:
TypeError: Cannot read property 'split' of undefined.
System specs
Linux Debian 9, Node.js 8.4.0 (installed with nvm), npm 5.3.0, git 2.11.0.
Full log
$ changelog -M
TypeError: Cannot read property 'split' of undefined
    at /home/florian/.nvm/versions/node/v8.4.0/lib/node_modules/generate-changelog/lib/package.js:55:36
    at tryCatcher (/home/florian/.nvm/versions/node/v8.4.0/lib/node_modules/generate-changelog/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/home/florian/.nvm/versions/node/v8.4.0/lib/node_modules/generate-changelog/node_modules/bluebird/js/release/promise.js:512:31)
    at Promise._settlePromise (/home/florian/.nvm/versions/node/v8.4.0/lib/node_modules/generate-changelog/node_modules/bluebird/js/release/promise.js:569:18)
    at Promise._settlePromise0 (/home/florian/.nvm/versions/node/v8.4.0/lib/node_modules/generate-changelog/node_modules/bluebird/js/release/promise.js:614:10)
    at Promise._settlePromises (/home/florian/.nvm/versions/node/v8.4.0/lib/node_modules/generate-changelog/node_modules/bluebird/js/release/promise.js:693:18)
    at Promise._fulfill (/home/florian/.nvm/versions/node/v8.4.0/lib/node_modules/generate-changelog/node_modules/bluebird/js/release/promise.js:638:18)
    at Promise._settlePromise (/home/florian/.nvm/versions/node/v8.4.0/lib/node_modules/generate-changelog/node_modules/bluebird/js/release/promise.js:582:21)
    at Promise._settlePromise0 (/home/florian/.nvm/versions/node/v8.4.0/lib/node_modules/generate-changelog/node_modules/bluebird/js/release/promise.js:614:10)
    at Promise._settlePromises (/home/florian/.nvm/versions/node/v8.4.0/lib/node_modules/generate-changelog/node_modules/bluebird/js/release/promise.js:693:18)
    at Promise._fulfill (/home/florian/.nvm/versions/node/v8.4.0/lib/node_modules/generate-changelog/node_modules/bluebird/js/release/promise.js:638:18)
    at Promise._resolveCallback (/home/florian/.nvm/versions/node/v8.4.0/lib/node_modules/generate-changelog/node_modules/bluebird/js/release/promise.js:432:57)
    at Promise._settlePromiseFromHandler (/home/florian/.nvm/versions/node/v8.4.0/lib/node_modules/generate-changelog/node_modules/bluebird/js/release/promise.js:524:17)
    at Promise._settlePromise (/home/florian/.nvm/versions/node/v8.4.0/lib/node_modules/generate-changelog/node_modules/bluebird/js/release/promise.js:569:18)
    at Promise._settlePromise0 (/home/florian/.nvm/versions/node/v8.4.0/lib/node_modules/generate-changelog/node_modules/bluebird/js/release/promise.js:614:10)
    at Promise._settlePromises (/home/florian/.nvm/versions/node/v8.4.0/lib/node_modules/generate-changelog/node_modules/bluebird/js/release/promise.js:693:18)

It would be awesome to get support for changelogs without a specified version!

repo: lob/generate-changelog


text:
DANG-1339/megabutton update (make them a little less mega)

JIRA

https://lobsters.atlassian.net/browse/DANG-1339

Description

Megabuttons were too mega. This makes them a little less mega.
Removed an extra div that wasn't doing anything useful.
Story changes:

Removed text from "With Image"
Added "With Image and Small Text"
Made some text shorter, since at 4 lines, we reach the max height set. Asked in Slack what we should do about this.

Screenshots

Curious why some text was removed in the group? No biggie, just wondering

Curious why some text was removed in the group? No biggie, just wondering

good q! I was doing experiments 😂  but also, when we reach 4 lines of text, we start hitting the height limit - I've asked in Slack what we should do about that.

per Slack convo linked above, we removed the fixed height constraint.
still trying to figure out why the DateInput test is failing...

shared this in Slack but making a note here as well: I've tried a number of things over the past day-ish to fix the failing DateInput test and can't figure it out right now. we're going to go with the hack that buys us another year (changing the year to 2022) so I/we (this is blocking anything in this repo from being merged) can move on to other things and I'll create a ticket to come back to this post-GA.

authors: BrownMY bethqiang

repo: lob/ui-components


text:
Support Caching

Right now it reaches out to the database every time it needs a quote.  Should be able to cache a set and then randomize on that until depleted and refill the cache.  This gives a nice balance between being up to date and as fast as possible.

Added caching support to just loop for jokes forever with a configurable number of loops before a recache

repo: lobobabysaurus/ChuckJokes


text:
Export interfaces

Following my comment made four years ago =) https://github.com/localForage/localForage/issues/600#issuecomment-243891174
Export interfaces for convenient driver creation.

The tests seems to not pass.
I think that b/c we are using a module definition (b/c of the UMD export we do), you can't use export at the top level and you need to define the interfaces inside the module definition.

Actually I just noticed that interfaces are available without the need to explicitly import. Which is not nice, but at least it works.

@thgreasi
though there is an issue with this

thi

Because it allows to use modules even if not installed in (available for) particular package for example in the workspace project

@whitecolor can you clarify what you mean with this a bit more? The installed part is what confused me.
Do you mean that in a project that you have LocalForage installed, you can use the interfaces even w/o importing or /// reference-ing them?

Do you mean that in a project that you have LocalForage installed, you can use the interfaces even w/o importing or /// reference-ing them?

I think everything is ok.
So one still have to import from 'localforage', they are not globally visible.
import type localforage from 'localforage'

const options: LocalForageOptions

Can you also try fixing the tests?
Otherwise I'm afraid we can't merge this.

Let me know if you would prefer me or someone else to pick this up.

Let me know if you would prefer me or someone else to pick this up.

Yes, I don't know to fix the tests. As I said actually I'm ok with the current situation, exporting interface seems not actually necessary. But probably it would more correct to make them only available via explicit importing.

authors: thgreasi whitecolor

repo: localForage/localForage


text:
Couldn't find my Cross-segment devices in 'nearby devices'

Is your feature request related to a problem? Please describe.
Couldn't find my Cross-segment devices in 'nearby devices',need to input ip address every time.
like:
A device ip address = '192.168.13.1'
B devices ip address = '192.168.14.1'
Describe the solution you'd like

Find a way to save a used device to 'nearby devices'.

Get a new tag 'recently used'.

so we don't need to input ip address every time.
Describe alternatives you've considered
No response
Additional context
No response

Duplicate of https://github.com/localsend/localsend/issues/199 , https://github.com/localsend/localsend/issues/175

On my DLINK wifi router (DIR-2055 , HW:A1 , FW:1.11), I turned all firewall features off and localsend works for discovering and sending/receiving files!

authors: JaosnHsieh R3habDroid Tienisto

repo: localsend/localsend


text:
GEOMESA-2785 Clean up documentation for 3.0 release

Signed-off-by: Emilio Lahr-Vivaz elahrvivaz@ccri.com

replaced with #2595

repo: locationtech/geomesa


text:
when use --master --slave, setup and teardown in locust class will run the count of slaves

Describe the bug
when I run 3 slaves , the locust class setup() will run 3 times.
Expected behavior
When using 3 slaves, the locust class setup() only run once.
Steps to reproduce
`from locust import HttpLocust, TaskSet, task, between
import time
class UserBehavior(TaskSet):
@task(1)
def index(self):
    self.client.get("/")

class WebsiteUser(HttpLocust):
def setup(self):
    print('locust setup')
    time.sleep(5)
    print('locustsetup sleep down')

def teardown(self):
    print('locust teardown')
    print('locustteardown sleep down')

task_set = UserBehavior
wait_time = between(0, 0)

`
Environment

OS:
Python version:
Locust version: 0.14.5
Locust command line that you ran:  locust -f {self.locust_file} --host={self.target} -c {self.connection} --slave --master-host={self.master}
slave: locust -f {self.locust_file} -c {self.connection} -r {self.hatch_rate} -t {self.duration} --no-web --host={self.target} --master"
slave count : 3
Locust file contents (anonymized if necessary):

Hi! This is expected behaviour. In latest master and upcoming 1.0 release there will be a new event hook that allows you to run things only once (on master when distributed).
test_start and test_stop events
If you need to run some code at the start or stop of a load test, you should use the test_start and test_stop events. You can set up listeners for these events at the module level of your locustfile:

from locust import events

@events.test_start.add_listener
def on_test_start(**kwargs):
    print("A new test is starting")

@events.test_stop.add_listener
def on_test_stop(**kwargs):
    print("A new test is ending")

ok , thx！ Looking forward to 1.0 release. Before that , i will try master code

authors: FANHIDE cyberw

repo: locustio/locust


text:
using locust as a library, events.test_stop.add_listener is not work

Describe
using locust as a library, events.test_stop.add_listener is not work
Environment

OS:
Python version: 3.8.0
Locust version: locust 1.1.1
Locust command line that you ran:
Locust file contents (anonymized if necessary):

import gevent
from locust import HttpUser, task, constant
from locust.env import Environment
from locust.stats import stats_printer
from locust.log import setup_logging
from locust.event import EventHook
from locust import events

setup_logging("INFO", None)

my_event = EventHook()
def on_my_event(**kw):
    print('my event')

my_event.add_listener(on_my_event)

@events.test_stop.add_listener
def on_test_stop(**kwargs):
    print('on test stop event')

class User(HttpUser):
    wait_time = constant(2)
    host = "https://www.baidu.com"

    @task
    def my_task(self):
        my_event.fire()
        self.client.get("/")

# setup Environment and Runner
env = Environment(user_classes=[User])
env.create_local_runner()

# start a WebUI instance
env.create_web_ui("0.0.0.0", 8089)

# start a greenlet that periodically outputs the current stats
gevent.spawn(stats_printer(env.stats))

# start the test
env.runner.start(1, hatch_rate=10)

# in 60 seconds stop the runner
gevent.spawn_later(10, lambda: env.runner.quit())

# wait for the greenlets
env.runner.greenlet.join()

# stop the web server for good measures
env.web_ui.stop()

You dont need to instantiate your own event hook. Try this:
env.events.test_stop.add_listener(on_my_event)
I dont think you would need the test_stop event when using locust as a library though, you could just put whatever code you want to run after env.runner.greenlet.join()

thank you


text:
Issue installing on M1 Mac

Describe the bug
Default Locust installation is not working under M1 Mac.
Already read:

https://github.com/locustio/locust/issues/2115
https://github.com/locustio/locust/issues/1949

I tried switching gevent versions to those shown on those PRs comments but failed to install  (clang compiler issues on other packages) on my machine. I include a log of the issue on the Steps to Reproduce, but here's a pip freeze's output:
Brotli==1.0.9
certifi==2022.9.24
charset-normalizer==2.1.1
click==8.1.3
ConfigArgParse==1.5.3
Flask==2.2.2
Flask-BasicAuth==0.2.0
Flask-Cors==3.0.10
gevent==22.10.2
geventhttpclient==2.0.8
greenlet==2.0.1
idna==3.4
itsdangerous==2.1.2
Jinja2==3.1.2
locust==2.13.0
MarkupSafe==2.1.1
msgpack==1.0.4
psutil==5.9.4
pyzmq==24.0.1
requests==2.28.1
roundrobin==0.0.4
six==1.16.0
typing_extensions==4.4.0
urllib3==1.26.12
Werkzeug==2.2.2
zope.event==4.5.0
zope.interface==5.5.1

Expected behavior
Locust to be installed and working on ARM-based Mac.
Actual behavior
Shows an issue with g-event.
Steps to reproduce
$ python3 -m venv ./venv && source ./venv/bin/activate && pip --version && python --version && uname -a && pip install locust && locust

pip 22.2.2 from /Users/humbertowoody/Proyectos/pago46/swarm-tester/venv/lib/python3.10/site-packages/pip (python 3.10)
Python 3.10.8
Darwin gojira.local 22.1.0 Darwin Kernel Version 22.1.0: Sun Oct  9 20:14:30 PDT 2022; root:xnu-8792.41.9~2/RELEASE_ARM64_T8103 arm64
Collecting locust
  Using cached locust-2.13.0-py3-none-any.whl (823 kB)
Collecting psutil>=5.6.7
  Using cached psutil-5.9.4-cp38-abi3-macosx_11_0_arm64.whl (244 kB)
Collecting gevent>=20.12.1
  Using cached gevent-22.10.2-cp310-cp310-macosx_10_9_universal2.whl (1.9 MB)
Collecting Flask-BasicAuth>=0.2.0
  Using cached Flask_BasicAuth-0.2.0-py3-none-any.whl
Collecting typing-extensions>=3.7.4.3
  Using cached typing_extensions-4.4.0-py3-none-any.whl (26 kB)
Collecting geventhttpclient>=2.0.2
  Using cached geventhttpclient-2.0.8-cp310-cp310-macosx_11_0_arm64.whl (42 kB)
Collecting roundrobin>=0.0.2
  Using cached roundrobin-0.0.4-py3-none-any.whl
Collecting Werkzeug>=2.0.0
  Using cached Werkzeug-2.2.2-py3-none-any.whl (232 kB)
Collecting requests>=2.23.0
  Using cached requests-2.28.1-py3-none-any.whl (62 kB)
Collecting flask>=2.0.0
  Using cached Flask-2.2.2-py3-none-any.whl (101 kB)
Collecting ConfigArgParse>=1.0
  Using cached ConfigArgParse-1.5.3-py3-none-any.whl (20 kB)
Collecting pyzmq!=23.0.0,>=22.2.1
  Using cached pyzmq-24.0.1-cp310-cp310-macosx_10_15_universal2.whl (1.8 MB)
Collecting Flask-Cors>=3.0.10
  Using cached Flask_Cors-3.0.10-py2.py3-none-any.whl (14 kB)
Collecting msgpack>=0.6.2
  Using cached msgpack-1.0.4-cp310-cp310-macosx_11_0_arm64.whl (69 kB)
Collecting Jinja2>=3.0
  Using cached Jinja2-3.1.2-py3-none-any.whl (133 kB)
Collecting click>=8.0
  Using cached click-8.1.3-py3-none-any.whl (96 kB)
Collecting itsdangerous>=2.0
  Using cached itsdangerous-2.1.2-py3-none-any.whl (15 kB)
Collecting Six
  Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting zope.event
  Using cached zope.event-4.5.0-py2.py3-none-any.whl (6.8 kB)
Collecting zope.interface
  Using cached zope.interface-5.5.1-cp310-cp310-macosx_12_0_arm64.whl
Requirement already satisfied: setuptools in ./venv/lib/python3.10/site-packages (from gevent>=20.12.1->locust) (65.4.1)
Collecting greenlet>=2.0.0
  Using cached greenlet-2.0.1-cp310-cp310-macosx_12_0_arm64.whl
Collecting certifi
  Using cached certifi-2022.9.24-py3-none-any.whl (161 kB)
Collecting brotli
  Using cached Brotli-1.0.9-cp310-cp310-macosx_10_9_universal2.whl (786 kB)
Collecting idna<4,>=2.5
  Using cached idna-3.4-py3-none-any.whl (61 kB)
Collecting charset-normalizer<3,>=2
  Using cached charset_normalizer-2.1.1-py3-none-any.whl (39 kB)
Collecting urllib3<1.27,>=1.21.1
  Using cached urllib3-1.26.12-py2.py3-none-any.whl (140 kB)
Collecting MarkupSafe>=2.1.1
  Using cached MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl (17 kB)
Installing collected packages: roundrobin, msgpack, brotli, zope.interface, zope.event, urllib3, typing-extensions, Six, pyzmq, psutil, MarkupSafe, itsdangerous, idna, greenlet, ConfigArgParse, click, charset-normalizer, certifi, Werkzeug, requests, Jinja2, gevent, geventhttpclient, flask, Flask-Cors, Flask-BasicAuth, locust
Successfully installed ConfigArgParse-1.5.3 Flask-BasicAuth-0.2.0 Flask-Cors-3.0.10 Jinja2-3.1.2 MarkupSafe-2.1.1 Six-1.16.0 Werkzeug-2.2.2 brotli-1.0.9 certifi-2022.9.24 charset-normalizer-2.1.1 click-8.1.3 flask-2.2.2 gevent-22.10.2 geventhttpclient-2.0.8 greenlet-2.0.1 idna-3.4 itsdangerous-2.1.2 locust-2.13.0 msgpack-1.0.4 psutil-5.9.4 pyzmq-24.0.1 requests-2.28.1 roundrobin-0.0.4 typing-extensions-4.4.0 urllib3-1.26.12 zope.event-4.5.0 zope.interface-5.5.1

[notice] A new release of pip available: 22.2.2 -> 22.3.1
[notice] To update, run: pip install --upgrade pip
Traceback (most recent call last):
  File "/Users/humbertowoody/Proyectos/pago46/swarm-tester/venv/bin/locust", line 5, in <module>
    from locust.main import main
  File "/Users/humbertowoody/Proyectos/pago46/swarm-tester/venv/lib/python3.10/site-packages/locust/__init__.py", line 9, in <module>
    from gevent import monkey
  File "/Users/humbertowoody/Proyectos/pago46/swarm-tester/venv/lib/python3.10/site-packages/gevent/__init__.py", line 86, in <module>
    from gevent._hub_local import get_hub
  File "/Users/humbertowoody/Proyectos/pago46/swarm-tester/venv/lib/python3.10/site-packages/gevent/_hub_local.py", line 101, in <module>
    import_c_accel(globals(), 'gevent.__hub_local')
  File "/Users/humbertowoody/Proyectos/pago46/swarm-tester/venv/lib/python3.10/site-packages/gevent/_util.py", line 148, in import_c_accel
    mod = importlib.import_module(cname)
  File "/opt/homebrew/Cellar/python@3.10/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ImportError: dlopen(/Users/humbertowoody/Proyectos/pago46/swarm-tester/venv/lib/python3.10/site-packages/gevent/_gevent_c_hub_local.cpython-310-darwin.so, 0x0002): tried: '/Users/humbertowoody/Proyectos/pago46/swarm-tester/venv/lib/python3.10/site-packages/gevent/_gevent_c_hub_local.cpython-310-darwin.so' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/Users/humbertowoody/Proyectos/pago46/swarm-tester/venv/lib/python3.10/site-packages/gevent/_gevent_c_hub_local.cpython-310-darwin.so' (no such file), '/Users/humbertowoody/Proyectos/pago46/swarm-tester/venv/lib/python3.10/site-packages/gevent/_gevent_c_hub_local.cpython-310-darwin.so' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64'))

My assumption is that I need to lock some dependencies versions (gevent from what I read) in order to make it work but I'm unsure as to how to find the ones that should/would work on my setup. Also I tried updating pip to the patch version bump, but it made no difference on resolving gevent's version.
Environment

OS: MacOS Ventura 13.0.1
Python version: 3.10.8
Locust version: 2.13.0
Locust command line that you ran: locust (expected help and/or error message)
Locust file contents (anonymized if necessary): don't even have a locustfile.py yet, was following installation instructions on locust.io. Thanks in advance!

I think this is the core of your problem: '/Users/humbertowoody/Proyectos/pago46/swarm-tester/venv/lib/python3.10/site-packages/gevent/_gevent_c_hub_local.cpython-310-darwin.so' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')
Check out https://stackoverflow.com/questions/72289889/how-do-i-fix-the-mach-o-but-wrong-architecture-error-in-pycharm
Or try googling the error message in combination with gevent.
You could also try installing with --only-binary :all: (so pip will only try pre-compiled versions of gevent, if there are any)
I'm sorry people running on apple silicon are having so many issues, but there isn't a lot we can do on the locust side. I'm getting an M1 soon and then I might have some more experience :-P

Hi @cyberw! First of all, thanks for your fast and thorough response. I did what you told me but, to be honest with you, M1/2 is filled with rabbit holes like this one and it's crazy the amount of time and effort that goes with every single issue. I hope for a better and/or easier way to deal with these problems in the future so this doesn't happen anymore :D
For the time being, I have an Ubuntu 22.04 virtual machine running (not a simple installation, you can google about it and it's not as straightforward but it's possible!) with aarch64 (instead of arm64 from M1, I believe it's the same thing but not sure!) and, guess what, it worked without anything else! Crazy how the same architecture, under the same physical system, but different OS gets different outcomes (even if virtualized)!
I don't know if I can call it a fix, but honestly, I have been dealing with these issues on all my tools for the past 2 years and I'm tired. I can try and do more debugging and share more logs in here if you want, but for now, it's working and I'm doing progress with Locust (awesome tool!). Please close the issue if it's appropriate. Again, thank you so much for your response!
Here are the two pip freeze's outputs! They're identical! It's crazy.

Glad that you found a workaround. Yea, I guess its not the package versions that is the issue, I think it is (for some reason) getting the wrong build (architecture) of them. I guess we can close this for now. I’ll look at it once i get my M1

Hey @cyberw! Good news!
Also, for everyone using an ARM-based Mac, I found the command that not only fixed Locust's installation, but it helped me on other projects, perhaps it's useful in the future:
arch -arm64 pip install --no-cache-dir locust --no-binary :all:
As it compiles everything from source (I assume) there's no way for a dependency to be other architecture! I'm happily back on track working without a VM :) I still wanted to thank you so much! And sorry for the not-locust-specific issue, I hope this can help others running into the same problems in the future :)

Awesome!

authors: cyberw humbertowoody


text:
Add parameter for run_time to swarm endpoint

#2198
Implemented only the rest portion of the above issue. Should I have a separate PR for the ui component or make another commit to this PR?

All in one PR is best!

Should we have this as a flag on startup or a default option?

Can I bother you to make some kind of "Advanced" button that hides/exposes this field? There are several other options that the user might want to set, but we dont want to show it all the time.

Added a flag (similar to class-picker) to pass to the master.

Maybe you could have a look at the "advanced" button I suggested? We already have too many command line options for enabling stuff in the UI :)

Added an anchor element to toggle the "advancedOptions" div in "swarm_form"

Very nice, thanks!

Looking into it, for some reason the tests pass on my local. I do see there was a recent merge to master. Should I try a rebase?

Looks like the rebase fixed the tests

The diff looks really bad, but I think it is just git messing with us :)
LGTM!


text:
[FEATURE] checkbox "show query stats"

Add each query execution time, cpu, rows ,RAM usage

Hi!
It's a good idea, but there are some architectural features of the current query execution logic which prevent it from being implemented.
At the moment, queries are executed with clickhouse-local, and plain output is shown to a user. User input is executed in one command, it's not splitted into several queries.
I will think about a special mode when queries are executed with HTTP (or other) interface. It wasn't implemented because it's not clear how to show result of multiple queries execution, which can contain selected rows and errors mixed with each other.

maybe clickhouse-local --time --echo could help?

For SELECT 1 it returns
SELECT 1       # query
1              # result
0.001          # timing

This representation is familiar for advanced users, but it's confusing for others. I will think about a special mode where this information is available. It might work, thank you!

authors: Slach lodthe

repo: lodthe/clickhouse-playground


text:
rethink ClientImpl::negotiateRPCVersion

The client library calls this when it first starts up, but it's not clear that it makes sense anymore. It also doesn't have a timeout (see #69).

It seems to me like this whole thing is safe to remove.

But INVALID_SERVICE and INVALID_REQUEST (opcode) in ClientRPC.cc shouldn't panic, in case the caller is trying to detect whether a service or opcode is available. They should propagate errors upwards instead.

repo: logcabin/logcabin

license: isc


text:
One log per container

Related to: https://github.com/logentries/docker-logentries/issues/19
This allows us to forward container logs to different logentries log set.

@logentries; can this get merged?

@HazCod ill have one of the guys test it out and based off that we will look to merge

@StephenHynes7 No more news?

@StephenHynes7 Hi. Will this be merged?

authors: HazCod StephenHynes7 jperichon sebastianmacarescu

repo: logentries/docker-logentries


text:
怎么考虑pipelines之间的资源隔离问题的？

你好，developer~
loggie以sidecar 或者 daemonSet的方式部署后，对loggie容器限制一定的资源，那么不同的pipeline之间就会竞争资源，如果某个数据量增大，必然会影响其它pipeline的采集状态。请问在设计上对于这块是怎么考虑的？谢谢~

对于公共组件来说：比如watcher、reader来说，都是采用事件模式，每个pipeline的工作任务都会分配相对固定的执行时间片，以使得不同pipeline的工作任务得到均匀的执行。因此不存在相互影响
对于pipeline独立的组件来说，限制方式有多种：

默认限制：每个pipeline有个独立的event对象池，可用event数量是固定为(queue的batchSize)*(sink并行度+1)，因此数据量再大也不会突破这个数量
手动配置：可以配置限流(limit)interceptor，限制pipeline的数据采集速率

这是来自QQ邮箱的自动回复邮件。您好，您的邮件我已收到，我将尽快回复！谢谢！

默认限制：每个pipeline有个独立的event对象池，可用event数量是固定为(queue的batchSize)*(sink并行度+1)，因此数据量再大也不会突破这个数量

感谢你的回复，对pipeline通过限制queue的大小确实是一个解决思路，但是在单个event大小过大的场景下依然会导致该pipeline占用资源过高（memSize=(queue的batchSize)(sink并行度+1)(单条event大小)），导致OOM问题。那么loggie目前是否有对采集event大小的限制？

默认的channel queue的chan size其实只有16。source采集的快，需要sink端能匹配发送速度，不然还是会被阻塞。
如果是考虑到单个event过大导致的oom的问题，默认event的body限制最大是128K，batchSize是2048，因此pipeline的内存会被限制在256M*sink并行度

好的，明白了，感谢~ 对这个项目比较感兴趣，有没有交流群便于大家深入讨论？

https://loggie-io.github.io/docs/getting-started/overview/#_3
可以扫链接里面的二维码加微信群

建议这个二维码给项目README也放一个

authors: carrotshub mmaxiaolei

repo: loggie-io/loggie


text:
Removed unnecessary escape characters

There are some backslashes in there that are rendered to the html as well. Adding the backslash to the filter config will cause the field to not be created.
I haven't tested the resulting Ruby code but I can see that in other files the underscores are not escaped.

there are other backslashes in the :target field documentation, could you change those too please?

authors: fhopf jsvd

repo: logstash-plugins/logstash-filter-geoip


text:
The syslog message generated by Logstash syslog output plugin is not RFC5424 compliant

Logstash information:
Please include the following information:

Logstash version (e.g. bin/logstash --version) - 8.15.4
Logstash installation source (e.g. built from source, with a package manager: DEB/RPM, expanded from tar or zip archive, docker) docker, or tar
How is Logstash being run (e.g. as a service/service manager: systemd, upstart, etc. Via command line, docker/kubernetes) either systemd or docker
How was the Logstash Plugin installed: built-in

JVM (e.g. java -version): bundled JDK
OS version (uname -a if on a Unix-like system):
$ uname -a Linux aacf4bb8c884 5.15.167.4-microsoft-standard-WSL2 #1 SMP Tue Nov 5 00:21:55 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Description of the problem including expected versus actual behavior:
According to the RFC5424 definition, each message HEADER should contain a TIMESTAMP, which can be a value of NILVALUE, or a time stamp in accordance with RFC3339.
NILVALUE is defined as the hyphen character i.e. ASCII value dec 45 / hex 2D
If the @timestamp field is removed from the document before sending out the syslog message, message is generated without  TIMESTAMP or NILLVALUE (which is expected)
Following pipeline config was used to test it:
filter {
  mutate {
    remove_field => ["@timestamp", "@version"]
  }

  mutate {
    add_field => {
      "host" => ""
      "message" => "%{clusterId},%{namespace},%{processType},%{processInstance},%{correlationID},%{subsystem},%{id},%{resource},%{severity},%{cause},%{detailedInformation},%{repairAction}"
    }
  }
}

output {
  syslog {
    id => "syslog_event_exporter_no_ssl"
    appname => "TITAN.IUM"
    host => "${NTI_TELEMETRY_SYSLOGHOST}"
    port => "${NTI_TELEMETRY_SYSLOGPORT:6514}"
    protocol => "tcp"
    rfc => "rfc5424"
    sourcehost => ""
    ssl_verify => false
    severity => "%{syslogSeverity}"
    use_labels => true
  }
}

On the following screenshot you can see that either the timestamp or the hyphen character is missing. There is a space character (hex 20) instead.

Steps to reproduce:

Configure syslog output to send messages in rfc5424 format
Remove @timestamp field before sending the message

Provide logs (if relevant):
See attached pcap file with captured syslog traffic
cap.zip

I expect the question: why do you remove the timestamp from the source message?
The answer is that RFC allows you not to send the timestamp in the syslog message. This is the normal situation from the RFC point of view. Then the timestamp is set by the syslog server that receives the message. And in this case, the timestamp field tells us when the message was delivered, not when it was generated at the origin.

repo: logstash-plugins/logstash-output-syslog


text:
Refactor Change Order logic

Refactor logic behind the change order
instead of pre-defined elements, just scan the whole file and list each line with it's index. (define which lines should be excluded)
Should still work with the current implementation of the switch lines logic.

I implemented a new elements group which represent all elements which are not found by any other config or assigned element group. This can also be used for custom user lines and the same logic can be used for custom elements with exec tags

repo: loissascha/MangOverlay


text:
Create Custom Hook for Register Endpoint using React Query

Feature Request: Create Custom Hook for Register Endpoint using React Query
Description
This task aims to create a custom hook using React Query to handle the registration endpoint. The custom hook will make a POST request to the provided URL and handle the response appropriately.
Tasks

Navigate to the frontend folder using this command
 cd frontend

Create Custom Hook for Register Endpoint:

Create a folder called hooks in the app directory.
Create a new file called useRegister.ts in the app/hooks directory.
Set up a custom hook using React Query to handle the registration process.

Integrate Custom Hook in Register Component:

Ensure the custom hook is used in the Register component to handle the form submission.

Additional Notes

Branch: Please create a new branch from development for your changes.
git checkout development
git pull origin development
git checkout -b feature/create-register-hook

Pull Request: Submit a pull request to merge your changes into development.

Testing: Ensure the custom hook works correctly by handling the registration process and providing appropriate feedback.

Guidelines to Follow:
Create `useRegister.ts:

Use the following code as a starting point:

import { useMutation } from '@tanstack/react-query';
import apiClient from '../utils/apiClient';

interface RegisterData {
  username: string;
  email: string;
  password: string;
  fullName: string;
}

export const useRegister = () => {
  return useMutation(
    async (registerData: RegisterData) => {
      const response = await apiClient.post('/auth/signup', registerData);
      return response.data;
    },
    {
      onSuccess: (data) => {
      // Import success toast here

      },
      onError: (error) => {
     //import error toast here

      },
    }
  );
};

example of the appropriate toast to be imported

showToastSuccess('Registration successful!');
showToastError('Registration failed. Please try again.');

Integrate Custom Hook in Register Component
Ensure the custom hook is used in the Register component to handle the form submission

@lokytech5 I have opened a pull request. I have designed the hook and the loading spinner so by checking  https://github.com/lokytech5/techdoc/tree/main . Should I include error handling as well in the hook and register page by following what you created in techdoc?


text:
Cors headers does not seem to get sent out

I am not sure what I am doing wrong
using  akka-http-cors 1.1.2 in a scala web project with
val route: Route =
extractUri { uri =>
handleExceptions(myExceptionHandler) {
handleRejections(myRejectionHandler) {
cors() {
get {
pathPrefix(defaultStaticReactEndpoint) {
extractMatchedPath { matched =>
log.info("From Static {} URI:{}", matched, uri)
getFromDirectory(defaultWebsiteStatic)
}
}
}
}
}
}
}
This runs on a server say test.site1.com and its content is being cross site referenced from another domain site2.com, both are https://
In config I have
allowed-origins = "https://*.site1.com"
site2 just contains some html to do a cross site access

       site2.org

This works fine & serves the image from test.site1.com via site2.com
However when I change
allowed-origins = "https://*.BADsite1.com"
despite the site no no longer being whitelisted it still works and serves the image
I also noticed that the headers for the site 2 access have no-cors set despite being flagged as cross site, so it looks like the wrapper is not sending Access-Control-Allow-Origin: https://*.site1.com in the header
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site
I was under the impression the cors {} wrapper added the required headers to enforce cors
Also when I add
allow-generic-http-requests = no
it now fails for all requests, which I suspect is due to chrome not realising is supposed to send Origin
I checked this by adding
optionalHeaderValueByType(Origin) { origin => }
and for all requests its None
I'd like to use cors to lock down cross site access to named sites, and right now its seems to either allow everything or forbid it
Help would be gratefully appriciated
_____Full headers
Request
Request URL: https://test.site1.com/static/media/landt.56f7a83a.png
Request Method: GET
Status Code: 200 OK
Remote Address: 127.0.0.1:443
Referrer Policy: strict-origin-when-cross-origin
Response
Accept-Ranges: bytes
Content-Length: 17398
Content-Type: image/png
Date: Tue, 04 Jan 2022 12:49:24 GMT
ETag: "6fc2017dde802faf"
Last-Modified: Tue, 21 Dec 2021 19:38:02 GMT
Server: akka-http/10.2.7
Request
GET /static/media/landt.56f7a83a.png HTTP/1.1
Host: test2.com
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"
DNT: 1
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36
sec-ch-ua-platform: "macOS"
Accept: image/avif,image/webp,image/apng,image/svg+xml,image/,/*;q=0.8
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: no-cors
Sec-Fetch-Dest: image
Referer: https://test2.com
Accept-Encoding: gzip, deflate, br
Accept-Language: en,en-GB;q=0.9

Having the same issue with Java

authors: klammal rleinfellner

repo: lomigmegard/akka-http-cors


text:
Article POI callout

The POI callout component is currently only used in articles. Articles that mention (and link to) a POI on-site will use this component to show more information about the POI in a tooltip-like menu when the link is hovered.
The article body component has been updated as well in order to accommodate the POI callout. POI data is loaded via AJAX in the article body component, cached and then passed to the POI callout component. A promise is used to make sure the data is ready. Lastly, matchMedia is used to conditional initialize or destroy the POI callout inside of the article body.

Verbal OK from @jcreamer898.

repo: lonelyplanet/rizzo-next


text:
🛑 LongPort Web (longportapp.com) is down

In de507c5, LongPort Web (longportapp.com) (https://longportapp.com) was down:

HTTP code: 502
Response time: 417 ms

Resolved: LongPort Web (longportapp.com) is back up in c8ea0a3.

repo: longbridgeapp/uptime


text:
🛑 Less Plastic Shop is down

In 3af327d, Less Plastic Shop (https://shop.lessplastic.jau.co.jp) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Less Plastic Shop is back up in 93698cc.

repo: longforme/longforme-uptime-monitor


text:
🛑 MAHO is down

In 1d938ef, MAHO (https://maho.jau.co.jp) was down:

HTTP code: 0
Response time: 0 ms

Resolved: MAHO is back up in 269b622.


text:
🛑 MAHO is down

In bdf8748, MAHO (https://maho.jau.co.jp) was down:

HTTP code: 0
Response time: 0 ms

Resolved: MAHO is back up in 957c1d6.


text:
change frontend service to type NodePort

longhorn/longhorn#1065
Signed-off-by: Mohamed Eldafrawi mohamed.eldafrawi@rancher.com

Make sure we will update the Helm Chart as well.

authors: meldafrawi yasker

repo: longhorn/longhorn-manager


text:
Add engine auto upgrade step into upgrade test

Ref

Longhorn-4726
Longhorn-4730

Signed-off-by: Chris Chien chris.chien@suse.com

Verified in below upgrade path and the upgrade/check engine part passed

v1.3.2 to master-head
v1.2.6 to v1.3.2 then master-head

this PR overwrites the original upgrade test case, so the normal manual upgrade path will not be tested after this PR, right?

Yes it override the normal upgrade case

Yes it override the normal upgrade case

Currently, we are using the same case to test_upgrade, this makes it impossible to adapt to different scenarios.
/cc @innobead

authors: c3y1huang chriscchien yangchiu

repo: longhorn/longhorn-tests


text:
[FEATURE] Support operations on custom resources directly instead of Longhorn REST APIs only

Is your feature request related to a problem? Please describe
The feature is to make sure users can do the operations on custom resources directly instead of only working via longhorn manager REST API.
To support editing CRD, we need to revisit longhorn-manger code and move the validation codes to the validating webhook.
Additional context
https://github.com/longhorn/longhorn/issues/791

The existing validation functions put the validation and mutation logics together. Thus, these validation functions cannot be move the validating webhook directly.
We need to reimplement the resource validation functions in the validating webhook and resource mutation functions in mutating webhook.

I organized the validation and mutation logics in the API paths in https://docs.google.com/document/d/1no7ltt2DXAESPkMa0jtgfAvV39kdFPj9S2sgiQOy_jA/edit.
cc @jenting @innobead

cc @shuo-wu

@shuo-wu @jenting @innobead
For engineimage resources, the CreateEngineImage function in the API path gets the resource's name by converting from image.
For example:
user creates an engineimage via UI by giving the image [longhornio/longhorn-engine:v1.2.2](http://10.20.90.50/#/engineimage/ei-d4c780c6), the engineimage's name is got from its checksum ei-0ddbdfc0.
Should we mutate the “name” in the mutating webhook by the same way or return an error when the given name does not match the calculated name? If we just mutate it silently, user may get an unexpected name. On the other hand, user does not know the naming rule if the validating function returns an error. WDYT?

@shuo-wu @jenting @innobead
For engineimage resources, the CreateEngineImage function in the API path gets the resource's name by converting from image.
For example: user creates an engineimage via UI by giving the image longhornio/longhorn-engine:v1.2.2, and the engineimage's name is got from its checksum ei-0ddbdfc0.
Should we mutate the name in the mutating webhook by the same way or return an error when the given name does not match the calculated name? If we just mutate it silently, user may get a resource with an unexpected name. On the other hand, user does not know the naming rule if the validating function returns an error. I prefer the former solution, but we will need a detailed document for the resource operations for users. WDYT?

Because the name is automatically generated by our logic, I think we just need to mutate it directly as the current behavior. It seems we can't do the validation before the mutation, so it should be good enough to have a description for name property.

Or we can return an error with the correct name mentioned in the error message. I am fine with either.
Besides, we can add one line name in UI for the engine image creation. This line is read-only and it will generate the engine image name in time based on the user's input.

@jenting @shuo-wu @innobead
One quick question
Can user update multiple Volume.Spec fields at the same time? Is there any risk for the volume controller?

Can user update multiple Volume.Spec fields in a Volume CR at the same time?

Yes. I can't think of any risk for now. Any concerns?

Just think about this while designing/implementing volume validation and mutation.
Additionally, I'd also like to make sure if the following design is reasonable.
If user changes the Spec.size to be larger, the validation function will be
func (v *volumeValidator) Update(request *admission.Request, oldObj runtime.Object, newObj runtime.Object) error {
	oldVolume := oldObj.(*longhorn.Volume)
	newVolume := newObj.(*longhorn.Volume)

	return v.validateVolumeOnUpdate(oldVolume, newVolume)
}

func (v *volumeValidator) validateVolumeOnUpdate(oldVolume, newVolume *longhorn.Volume) error {
	if newVolume.Spec.Size != oldVolume.Spec.Size {
		if err := v.expand(oldVolume, newVolume); err != nil {
			return err
		}
	}

        ....
}

func (v *volumeValidator) expand(oldVolume, newVolume *longhorn.Volume) error {
	if newVolume.Spec.Size < oldVolume.Spec.Size {
		return fmt.Errorf("cannot shrink volume %v from %v to %v", oldVolume.Name, oldVolume.Spec.Size, newVolume.Spec.Size)
	}

	manager := manager.NewVolumeManager(oldVolume.Status.OwnerID, v.ds)

	if oldVolume.Status.IsStandby {
		return fmt.Errorf("cannot manually expand standby volume %v", oldVolume.Name)
	}

	if _, err := manager.Expand(oldVolume.Name, newVolume.Spec.Size); err != nil {
		return err
	}

	return nil
}

Other checks and validation logics will be added into validateVolumeOnUpdate.
So, the validateVolumeOnUpdate will become
func (v *volumeValidator) validateVolumeOnUpdate(oldVolume, newVolume *longhorn.Volume) error {
	if newVolume.Spec.Size != oldVolume.Spec.Size {
		if err := v.expand(oldVolume, newVolume); err != nil {
			return err
		}
	}

        if VolumeActivateConditionIsTrue {
		if err := v.activate(oldVolume, newVolume); err != nil {
			return err
		}
       }

        ....
        ....
        ....

	if err := datastore.CheckVolume(newVolume); err != nil {
		return err
	}

	return nil
}

How about it?
Another question is how the user does cancelExpansion by updating the CR?

Can user update multiple Volume.Spec fields in a Volume CR at the same time?

Yes. I can't think of any risk for now. Any concerns?

Hey @jenting, just think about this while designing/implementing volume validation and mutation.
Additionally, I'd also like to make sure if the following design is reasonable.
If user changes the Spec.size to be larger, the validation function will be
func (v *volumeValidator) Update(request *admission.Request, oldObj runtime.Object, newObj runtime.Object) error {
	oldVolume := oldObj.(*longhorn.Volume)
	newVolume := newObj.(*longhorn.Volume)

	return v.validateVolumeOnUpdate(oldVolume, newVolume)
}

func (v *volumeValidator) validateVolumeOnUpdate(oldVolume, newVolume *longhorn.Volume) error {
	if newVolume.Spec.Size != oldVolume.Spec.Size {
		if err := v.expand(oldVolume, newVolume); err != nil {
			return err
		}
	}

        ....
}

func (v *volumeValidator) expand(oldVolume, newVolume *longhorn.Volume) error {
	if newVolume.Spec.Size < oldVolume.Spec.Size {
		return fmt.Errorf("cannot shrink volume %v from %v to %v", oldVolume.Name, oldVolume.Spec.Size, newVolume.Spec.Size)
	}

	manager := manager.NewVolumeManager(oldVolume.Status.OwnerID, v.ds)

	if oldVolume.Status.IsStandby {
		return fmt.Errorf("cannot manually expand standby volume %v", oldVolume.Name)
	}

	if _, err := manager.Expand(oldVolume.Name, newVolume.Spec.Size); err != nil {
		return err
	}

	return nil
}

Other checks and validation logics will be added into validateVolumeOnUpdate.
So, the validateVolumeOnUpdate will become
func (v *volumeValidator) validateVolumeOnUpdate(oldVolume, newVolume *longhorn.Volume) error {
	if newVolume.Spec.Size != oldVolume.Spec.Size {
		if err := v.expand(oldVolume, newVolume); err != nil {
			return err
		}
	}

        if VolumeActivateConditionIsTrue {
		if err := v.activate(oldVolume, newVolume); err != nil {
			return err
		}
       }

        ....
        ....
        ....

	if err := datastore.CheckVolume(newVolume); err != nil {
		return err
	}

	return nil
}

How about it?
Another question is how the user does cancelExpansion by updating the CR directly? Changing Volume.spec.size to equal Engine.Status.Size seems to have a conflict with the expand operation.

Leaving a note here
A resource is validated by object schema and then by the validating webhook.
Some asserts by error messages in longhorn-tests need modifications.

Leaving a note here A resource was validated by the validation logic in the API call and then the object schema validation. Now, it is validated by object schema validation and then the validating webhook. Thus, some asserts replying on the error messages in longhorn-tests need modifications.

@longhorn/qa ☝

Another question is how the user does cancelExpansion by updating the CR directly? Changing Volume.spec.size to equal Engine.Status.Size seems to have a conflict with the expand operation.

As long as volume.Spec.Size >= engine.Status.Size, there is no need to fail the validation. In other words, there is no need to consider if the spec modification is for expansion or expansion canceling in the validation webhook. The check input.Size >= volume.Spec.Size is for the specific HTTP API volumeExpand only.

Another question is how the user does cancelExpansion by updating the CR directly? Changing Volume.spec.size to equal Engine.Status.Size seems to have a conflict with the expand operation.

As long as volume.Spec.Size >= engine.Status.Size, there is no need to fail the validation. In other words, the validation webhook does not need to consider if the spec modification is for expansion or expansion canceling. The check input.Size >= volume.Spec.Size is for the specific HTTP API volumeExpand only.

@shuo-wu  IIUC. You mean that most of checks should be still in the HTTP API functions. The validation webhook validate the general conditions, right?
On the other hand, should user check by himself if he'd like to do expand, canccleExpand and so on by editing the resources?

As discussed, the REST APIs are not possibly 1:1 mapping to things handled in admission webhooks especially different resources manipulation involved because the spec validation is not really compared with behavior validation, but instead we should focus on the single resource operation w/ validation and mutation, and it will be good enough.

Volume resources
Actions having cascaded resources update

Action
Resource Update

Salvage
UpdateVolume -> UpdateReplica

VolumeExpand
UpdatePersistentVolumeClaim -> UpdateVolume

PVCCreate
UpdatePersistentVolume-> CreatePersistentVolumeClaim

Spec or Status Conflicts between Actions

Conflicts
Conflicts

v.Status.IsStandby
Activate needs v.Status.IsStandby == true, but Activate, Detach and CancelExpansion need v.Status.IsStandby == false

v.Status.ExpansionRequired
CancelExpansion needs v.Status.ExpansionRequired==true.

v.Spec.MigrationNodeID
EngineUpgrade and UpdateReplicaCount need empty string

The validation in the actions can be moved to the validating webhook

Action
Validation

VolumeUpdateDataLocality
types.ValidateDataLocality

VolumeUpdateAccessMode
types.ValidateAccessMode

VolumeUpdateReplicaCount
types.ValidateReplicaCount

VolumeUpdateReplicaAutoBalance
types.ValidateReplicaAutoBalance

After checking the actions and validations, there are some findings

Some actions have cascaded operations of multiple resources.
Some actions have conflict status and spec checks.
Checks of updating a resources, e.g. Replicas,  in the HTTP API call and controllers are different.
Unlike the specific checks in a HTTP API call, the mutating and the validating webhooks cannot know the action (purpose) of the resource update, so specific and correct checks are infeasible.

According to above findings, the general validations such as types.ValidateDataLocality, and mutations such as size = util.RoundUpSize(size) are suitable in the admission webhook, but the specific checks of actions still need to stay in the API call.

From validation point of view, we need to validate each and every action available on Longhorn GUI plus the setting modifications carefully.
cc: @longhorn/qa

Validation - PASSED
No unusual problem found with coretest on master-head and manual UI walkthrough.
And this change should be covered in the next cycle of release test.
// Node spec using for this test: v1.21.10+rke2r2 nodes (all-role) * 3

authors: derekbit innobead jenting kaxing khushboo-rancher shuo-wu

repo: longhorn/longhorn


text:
[IMPROVEMENT] Disable Revision Counter for Strict-Local dataLocality

Is your improvement request related to a feature? Please describe (👍 if you like this request)
No need revision counter since strict local only keeps a single replica.
Describe the solution you'd like

Disable Revision Counter by default when dataLocality=Strict-Local.

Describe alternatives you've considered

Improve document

Additional context
https://cloud-native.slack.com/archives/CNVPEL9U3/p1673406587513549?thread_ts=1672827070.589069&cid=CNVPEL9U3

This is good to help create issues based on the community feedback.
cc @longhorn/dev


text:
ERROR "none of the node candidates contains a ready engine image"

Question
Don't understand how to address this error "none of the node candidates contains a ready engine image" every check seems fine, but when try to mount a pv into a pod, the pod  is waiting for this error "none of the node candidates contains a ready engine image", on web UI have this error (example...)
"unable to attach volume pvc-3292dcb4-e65f-4cb4-8f3e-79fe08ab010c to slx00011293: cannot attach volume pvc-3292dcb4-e65f-4cb4-8f3e-79fe08ab010c with image : failed to check engine image readiness of node slx00011293: unable to get engine image : engineimage.longhorn.io "ei-cf83e135" not found"
but exists
pod/engine-image-ei-9d364f7e-wmmz8                      1/1     Running   3 (132m ago)   3h29m
pod/engine-image-ei-9d364f7e-pxzc4                      1/1     Running   3 (132m ago)   3h29m
pod/engine-image-ei-9d364f7e-6v6tz                      1/1     Running   3 (132m ago)   159m
only is not the same id...
I've installed longhorn useing helm with default values, and have a K3S cluster with 1 master and 2 workers recently installed.
Environment

Longhorn version: 1.5.2
Kubernetes version: v1.28.3
Node config

OS type and version: SUSE Linux Enterprise Server 15 SP5
Kernel version: 5.14.21-150500.55.31-default
CPU per node: 4
Memory per node: 8 Gb
Disk type
Network bandwidth and latency between the nodes:

Underlying Infrastructure Baremetas (K3S)

Additional context
k get nodes.longhorn.io -n longhorn-system
NAME          READY   ALLOWSCHEDULING   SCHEDULABLE   AGE
slx00011294   True    true              True          3h26m
slx00011293   True    true              True          3h26m
slx00011111   True    true              True          159m
k describe pv pvc-3292dcb4-e65f-4cb4-8f3e-79fe08ab010c
Name:            pvc-3292dcb4-e65f-4cb4-8f3e-79fe08ab010c
Labels:
Annotations:     longhorn.io/volume-scheduling-error: none of the node candidates contains a ready engine image
pv.kubernetes.io/provisioned-by: driver.longhorn.io
volume.kubernetes.io/provisioner-deletion-secret-name:
volume.kubernetes.io/provisioner-deletion-secret-namespace:
Finalizers:      [kubernetes.io/pv-protection external-attacher/driver-longhorn-io]
StorageClass:    longhorn
Status:          Bound
Claim:           default/longhorn-vol-claim
Reclaim Policy:  Delete
Access Modes:    RWO
VolumeMode:      Filesystem
Capacity:        2Gi
Node Affinity:
Message:
Source:
Type:              CSI (a Container Storage Interface (CSI) volume source)
Driver:            driver.longhorn.io
FSType:            ext4
VolumeHandle:      pvc-3292dcb4-e65f-4cb4-8f3e-79fe08ab010c
ReadOnly:          false
VolumeAttributes:      dataLocality=disabled
fromBackup=
fsType=ext4
numberOfReplicas=3
staleReplicaTimeout=30
storage.kubernetes.io/csiProvisionerIdentity=1700660801243-8081-driver.longhorn.io
Events:

Are you able to upload a support bundle @jpintoversia?
To demystify this a bit, Longhorn creates a Daemonset named engine-image-ei-<checksum> when it is installed and any time the setting default-engine-image is updated. The checksum calculation can be reproduced on the command line with echo -n longhornio/longhorn-engine:v1.4.4 | sha512sum | cut -c-8. For example, in my v1.4.4 environment, the name of the Daemonset is engine-image-ei-40f95a18.
eweber@laptop:~/longhorn-manager> kl get setting default-engine-image
NAME                   VALUE                               AGE
default-engine-image   longhornio/longhorn-engine:v1.4.4   5h6m

eweber@laptop:~/longhorn-manager> echo -n longhornio/longhorn-engine:v1.4.4 | sha512sum | cut -c-8
40f95a18

eweber@laptop:~/longhorn-manager> kl get ds
NAME                       DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
engine-image-ei-40f95a18   3         3         3       3            3           <none>          5h7m
longhorn-csi-plugin        3         3         3       3            3           <none>          5h6m
longhorn-manager           3         3         3       3            3           <none>          5h7m

None of the checksums in the output you have provided thus far match what I would expect for v1.5.2.
eweber@laptop:~/longhorn-manager> echo -n longhornio/longhorn-engine:v1.5.2 | sha512sum | cut -c-8
65224a4b

Maybe this means you are using non-standard engine image names (e.g. from a private registry)?
If you cannot provide the support bundle, the output of the following commands may be helpful.

kubectl get volume -n longhorn-system -oyaml pvc-3292dcb4-e65f-4cb4-8f3e-79fe08ab010c
kubectl get setting -n longhorn-system default-engine-image
kubectl get daemonset -n longhorn-system -oyaml -l longhorn.io/component: engine-image

authors: ejweber jpintoversia


text:
项目跑不起来,项目启动后报错 Cannot find module './src/Application'

git clone 项目之后,npm run dev:start
会直接报错 Cannot find module './src/Application'

如果你参考例子也是用typescript写的话，你需要先编译ts到js，然后在启动服务器。

请参考 https://github.com/loon-project/loon-boilerplate
启动项目跑 npm run dev

repo: loon-project/loon


text:
Google protocol buffers support

https://developers.google.com/protocol-buffers/

Enqueuer does not support protocols other than node native ones and HTTP.

repo: lopidio/enqueuer


text:
Add stdlib implementations of Thread, Mutex, and Monitor

Single threaded implementations that conform to the API.
TODO: implement class methods on Thread.
Split this out of GH-85 and fleshed out the Thread implementation.

I implemented the full Thread API. Some methods are noops because we're single threaded, some are explicitly unimplemented and have no side effects or are dumb, synchronous passthroughs.

repo: lopopolo/ferrocarril


text:
Generic "Start" and "Select" buttons

I'm developing a PC game that supports multiple types of controllers, so I prefer to use generic gamepad prompts for a more consistent experience. Every modern controller has some kind of "Start" and "Select" buttons even if they use different names, so I think it would be useful to have generic prompts for those buttons. Maybe something like this? (just a quick mockup)

What do you think?

There are a few things I would edit. I can't tell if the curves are symmetric horizontally and vertically, but if they aren't, I would make them symmetric.
I would make the stroke thickness the same as the bumpers and then increase the size of the text. The button shape would essentially look like the corresponding buttons of the Steam Deck.

The "Steam" button here uses Poppins Heavy so it looks consistent at a small size. However, I would be fine with the regular Poppins Bold for the buttons you propose.
This is a good idea though! I tried to do all the generics, but I suppose I forgot about select and start. I'd be happy to review a merge request, but if you don't get to it, I'll do it at some point in the future. Thanks!


text:
删除文件时报参数错误

最近发现在删除文件时有很大几率会报user-error：[2] 参数错误。采用vanilla测试

百度已经把个人接入 API 屏蔽了，所有功能都有可能会失效。
https://pan.baidu.com/union/apply
所以，嗯，算了，别折腾这个了吧。

authors: XiaoGeMa lorniu

repo: lorniu/emacs-baidupan


text:
Missing security license

First off, fantastic that you made this.
The website is missing SSL, it works but would be much easier to access with SSL 😅.
https://letsencrypt.org/ free SSL could be a good option.

PS: if there is anything I can do to help feel free to let me know.

Hey Dennis, really appreciate the heads up. I've restarted nginx and now the cert has been updated.

Hi guys, thanks Denis for the report :raised_hands:
I just added a post-renewal hook on the certbot configuration to reload nginx automatically when the certificate is renewed.
The current certificate will expire on 29/08/24. I will check if the hook run correctly and I'll let you guys know

Time went by and the certificate has renewed itself without intervention.
I think @lostintime101 can close this ticket :raised_hands:
Thanks again for the heads up @dennisvd !


text:
Any plans to upgrade to React 16?

We're transitioning towards React 16 and therefor cannot use this.
We would really like to keep using this plugin though.
Are there any plans to upgrade?

@isualize I've just updated for React v16, let me know if you run into any issues.

authors: isualize lostpebble

repo: lostpebble/react-validate


text:
id not assigned to the entity on create

According to the documentation in Repository:
...
ArticleRepository.create(article) # creates a record
#   article.id # => 23

the ID (primary key for RDBMS) should get assigned upon create which is not the case.
Failing Testcase here: https://github.com/pascalbetz/lotus-model/commit/c5e5150f811e84290cd7d03e12e77f88cdc8b5a6

@pascalbetz the returning value of .create has the assigned id. This is because we want to apply coercions to the given entity.
article = Article.new(comments_count: '100')
article = ArticleRepository.create(article)
article.id # => 1
article.comments_count # => 100

This is a matter of outdated documentation. Can you please open another PR to fix it? Thank you.

@jodosha so you don't want to modify the entity passed in as argument?
Something like this will fail:
user = User.new(...)
UserRepository.create(user)
article = Article.new(user_id: user.id) # failure here: user.id is nil
ArticleRepositry.create(article)

but i would actually expect it to work (i only looked up the documentation after i realized my code is not working)
This would lead to something like
article = Article.new(...)
article = ArticleRepositry.create(article)
...

whenever you need to have the id (i.e. when you associate records). Looks error prone and superfluous to me. Care to explain the idea a bit more?

@jodosha
I fixed the docs. https://github.com/lotus/model/pull/214 so that it is aligned with the code.
Still think that it would be better to assign the id to the entity that is passed in. Less error prone (even lotus model tests are not testing the right thing because of this!) for the user and things might even get trickier when associations are added:
article = Article.new
1000.times do
  article.comments << Comment.new
end
created_article = ArticleRepository.create(article)

puts created_article.comments.size #=> ?
puts created_article.comments.first.object_id == article.comments.first.object_id #=> ?

Will it clone/copy the associated objects as well?
Still be interested to learn why you think that the passed entity should not have the id assigned. I'll create another issue for this.

@pascalbetz IMO I prefer your approach because it's less error prone and you don't have to assing variables but I don't know if this behaviour is planned. what do you say @jodosha ?
does the repository pattern say something abouyt this?

@AlfonsoUceda thanks for the feedback: if i understand correctly then L:M actually did assign the id a while ago. This was dropped because coercion is applied on the values (the entity returned from those calls has coerced attributes). So without looking into code i think:
p = Person.new(age: "25") # a string
p1 = PersonRepository.persist(p)
p.age #=> "25" (String)
p1.age # => 25 (a number)

is the current behaviour .

ah you're right @jodosha said that in his previous feedback.
Maybe we have to found some "fix" to do the coercions and modify the id but for now it isn't our priority, @jodosha @joneslee85 what do you think?

This PR will fix the doc so it is in sync with the current behaviour. I created an issue (https://github.com/lotus/model/issues/215) for the discussion where i describe some problems i see with the current approach. Would welcome some feedback there.

@pascalbetz I'm closing this for now, because we need a wider discussion on the API improvements.
/cc @lotus/core-team

authors: AlfonsoUceda jodosha pascalbetz

repo: lotus/model


text:
Upsert should return newly created document with _id

If { upsert: true } is used on update, and a new document is sucessfully created, it'd be really nice to get that new document returned. Since internally the upsert uses the insert command, it was trivial to hook into the newDoc that insert passes back and send it along to the update callback. This PR includes the code change, updated working tests, and updated README docs. Officially closes #72

Hmm, maybe I am doing something wrong - upsert that resolves to insert returns created doc,
but upsert that resolves to update do not. However, everything is fine in db file.
Maybe I should not generate custom _id?
db.bells = new DataStore({ filename: path.join(dbPath, 'bells.db'), autoload: true });
var _id = "150b38d1-840f-4286-8398-1724e5557ea8"; //custom generated
db.bells.update({ _id: _id }, { _id: _id, enable: false }, { upsert: true },
	function (err, num, doc) {
		console.log('typeof doc:' + typeof doc); // => object (ok), num=1, err=null

		db.bells.update({ _id: _id }, { _id: _id, enable: true }, { upsert: true },
			function (err, num, doc2) {
				console.log('typeof doc2:' + typeof doc2); // => undefined (!ok), num=1, err=null
			});
	});

authors: dioklecijan jasonrhodes

repo: louischatriot/nedb


text:
Index Page of Status Pages

⚠ Please verify that this feature request has NOT been suggested before.

[X] I checked and didn't find similar feature request

🏷 Feature Request Type
UI Feature
🔖 Feature description
Going to /status should show an index of all the available Status Pages that can be viewed. Any that the user does not have access to view (e.g. if anonymous) should not be listed.
✔ Solution
I would be satisfied with a fairly simple listing of available status pages. I just want an easier way for end users to know what status pages are available to look at on one landing page.
It would be nice, but not required, if each listed Status Page also showed the overall status for that group of monitors, like what is shown on the top of a status page (e.g. Partially Degraded).
❓ Alternatives
The only alternative I've considered is creating our own index page somewhere else.
📝 Additional Context
No response

That is a good idea.
The core maintainers are currently quite busy with the v2 changes.
Here is our contribution guide https://github.com/louislam/uptime-kuma/blob/master/CONTRIBUTING.md

authors: CommanderStorm brooksvb

repo: louislam/uptime-kuma


text:
Unable to Monitor IPV6

Not able to monitor iPV6. please tell me the process to monitor any iPV6 server or Device Which have iPV6

I tested it again, it is working fine in my side. Is there any error?
Make sure your host is supporting IPv6 and you can try it via https://demo.uptime.kuma.pet
2606:4700:4700::1111

Thank you. It's working for me also this is on docker or without docker, my Host system support IPV6, but in docker not able to monitor van you help me out on this.

please help me with the local installations process also try this - curl -o kuma_install.sh http://git.kuma.pet/install.sh && sudo bash kuma_install.sh
but some are lines error given

Hard to help without error msg or log.
Make sure you have enabled ipv6 support.
https://docs.docker.com/config/daemon/ipv6/

Ubuntu 20.04 defaults to old version of node.js, which we don't support. Make sure you are running node.js 14+, either by installing manually or with nvm.

I need one help can you set the respect ping grapr in 1 day, 7days, 1months etc. type. its help more better way to get log

authors: chakflying louislam sam7oo


text:
Music index not sync

Showing music index on queue list not sync with /remove command. (still cannot reproduce, but will happen when have a lot of music in queue)

Should be fixed with https://github.com/loukhin/probably-a-music-bot/commit/7302602db971360b74e6a3e3afa9562ef604e092

repo: loukhin/probably-a-music-bot


text:
Null safety

Hey, this is one of the few packages my app depends on that doesn't yet support null safety, are you planning to update?
Thanks

I also have the same issue. Were you able to find a fix for this?

authors: andyrosty jimmyff

repo: loup-v/geolocation


text:
toColorspace('p3') outputs an sRGB image

Possible bug
Is this a possible bug in a feature of sharp, unrelated to installation?

[x] Running npm install sharp completes without error.
[x] Running node -e "require('sharp')" completes without error.

If you cannot confirm both of these, please open an installation issue instead.
Are you using the latest version of sharp?

[x] I am using the latest version of sharp as reported by npm view sharp dist-tags.latest.

If you cannot confirm this, please upgrade to the latest version and try again before opening an issue.
If you are using another package which depends on a version of sharp that is not the latest, please open an issue against that package instead.
What is the output of running npx envinfo --binaries --system --npmPackages=sharp --npmGlobalPackages=sharp?
System:
    OS: Linux 5.15 Debian GNU/Linux 12 (bookworm) 12 (bookworm)
    CPU: (16) x64 AMD Ryzen 7 5800X3D 8-Core Processor
    Memory: 7.55 GB / 15.62 GB
    Container: Yes
    Shell: 5.2.15 - /bin/bash
  Binaries:
    Node: 18.17.0 - /usr/local/bin/node
    Yarn: 1.22.19 - /usr/local/bin/yarn
    npm: 9.6.7 - /usr/local/bin/npm

What are the steps to reproduce?

Convert a 16-bit image to a Display P3 JPEG/PNG/TIFF
Convert the same 16-bit image to the same format but to sRGB
Note that these are bit-exact images

The same appears to be the case when passing any random string to toColorspace, but some choices do work, e.g. b-w.
Notably, calling withMetadata({icc: 'p3'}) does work in adding a P3 ICC profile (but doesn't convert the actual image).
What is the expected behaviour?
The output image should be converted to Display P3. This is supported by libvips, though an error for invalid arguments would be expected as well.
Please provide a minimal, standalone code sample, without other dependencies, that demonstrates this problem
const sharp = require('sharp');

sharp('dog.png')
  .toColorspace('p3')
  .toFile('dog_p3.jpeg');

sharp('dog.png')
  .toColorspace('srgb')
  .toFile('dog_srgb.jpeg');

Please provide sample image(s) that help explain this problem
16-bit PNG image (converted from a .CR3 using Imagemagick):

Hi, did you see https://sharp.pixelplumbing.com/api-colour#tocolourspace and its link to https://github.com/libvips/libvips/blob/3c0bfdf74ce1dc37a6429bed47fa76f16e2cd70a/libvips/iofuncs/enumtypes.c#L777-L794 ?
P3 is an RGB profile rather than a colourspace, so either RGB or RGB16 would be appropriate.

If I try 'rgb', I get the error: Uncaught Error: vips_colourspace: no known route from 'rgb16' to 'rgb'.

I did some testing and it seems calling pipelineColorspace is sometimes needed for the final image to have the right colors.
Given this original image in Display P3:

Here are the outputs of the following two commands:
await sharp('Italy-P3.jpg')
  .withMetadata({icc: 'p3'})
  .rotate()
  .toFormat('jpeg', {quality: 100, chromaSubsampling: '4:4:4'})
  .toFile('Italy-P3-withMetadataP3.jpeg')

await sharp('Italy-P3.jpg')
  .pipelineColorspace('rgb16')
  .withMetadata({icc: 'p3'})
  .rotate()
  .toFormat('jpeg', {quality: 100, chromaSubsampling: '4:4:4'})
  .toFile('Italy-P3-withMetadataP3.jpeg')

The version without pipelineColorspace has somewhat degraded colors compared to the version with it when viewed on a P3 display (but I think they look the same when color managed into sRGB). Since the original is 8-bit, shouldn't rgb16 be unnecessary here?

If you're using wide-gamut input and would like wide-gamut output with a P3 profile then using 16-bit rgb16 as the pipeline colourspace would be a good choice to avoid any narrowing of colour range.
sharp(input)
  .pipelineColorspace('rgb16')
  .withMetadata({ icc: 'p3' })
  ...

@lovell I forgot to mention, but I wasn't ever able to get toColorspace('rgb') to work regardless of the source image. While VIPS_INTERPRETATION_RGB is a member of VipsInterpretation, it's not mentioned in the docs describing each option. Not sure if this is a sharp issue or a libvips issue. Possibly related, toColorspace('scrgb') always produced a completely black image for me.

The colourspace conversions supported by libvips can been seen at https://github.com/libvips/libvips/blob/5fb9f6182ca9d396536f87bbd4ca08a993791c30/libvips/colour/colourspace.c#L221

AFAIK, one should use VIPS_INTERPRETATION_sRGB instead of VIPS_INTERPRETATION_RGB after commit https://github.com/libvips/libvips/commit/e48f45187b350344ca90add63b4602f1d1f5a0a0. Perhaps the libvips docs should be clearer about this.

Possibly related, toColorspace('scrgb') always produced a completely black image for me. Should I make a new issue for this or re-open this one?

This is being tracked in issue https://github.com/libvips/libvips/issues/2858.

authors: kleisauke lovell mertalev

repo: lovell/sharp


text:
trouble decoding compressed depth map from IFM

Looking at the raw depth values, I see 16-bit integers measuring what I assume are milimeters.
Looking at the compressed topic (i.e. from a rosbag), I decompress with cv2, something like this:
pic = cv2.imdecode(np.fromstring(msg.data,np.uint8),cv2.CV_LOAD_IMAGE_UNCHANGED)
But what comes out is an array of uint8, mostly equal to 255, and looking vaguely like the raw depth image.
Is there a different way I'm supposed to be decompressing the depth image?

You are converting to uint8 here: np.fromstring(msg.data,np.uint8. Did you try np.fromstring(msg.data,np.uint16?

The o3d3xx-ros camera node uses the image_transport package to publish the OpenCV images. I just read this on the ROS wiki:
image_transport does not yet support Python, though it is on the Roadmap. If you need to interface a Python node with some compressed image transport, try interposing a republish node.

If you must use Python, to get around this, the suggestion is to use republish. I'm not sure if that fits you use case, but that seems to be the official suggestion as of Indigo (and Jade). Do you get this behavior using C++ as well?

You are converting to uint8 here: np.fromstring(msg.data,np.uint8. Did you try np.fromstring(msg.data,np.uint16?

It doesn't seem to matter what kind of integer np.fromstring converts it to; the imdecode converts it back to uint8.

If you must use Python, to get around this, the suggestion is to use republish.

Running a republish node (rosrun image_transport republish compressed in:=/o3d3xx/camera/depth raw out:=/depth) and then subscribing to /depth gets me an sensor_msgs.msg.Image message, that looks like this:
 msg.width:  176
 msg.height:  132
 len(msg.data):  23232
 msg.encoding:  'mono16'

The data array is exactly half the length it should be if it were really encoding a uint16 image.  The CV bridge fails to decode this message, as expected:
  pic = cvb.imgmsg_to_cv2(msg)
  ...
  TypeError: buffer is too small for requested array

Casting to uint8 and reshaping to a 176 x 132 image, I see something that looks exactly like the incorrect uint8 image I described in my original comment.
The feeling I'm getting is that the compressed depth image does not contain all the info it should (i.e. all the info in the raw depth image).

Do you get this behavior using C++ as well?

I haven't tried it yet.  This will be my next step before biting the bullet and using the raw topic.

authors: andsmith tpanzarella


text:
[flash_ctrl] Flash CONTROL Register General

This is just a Spec clarification Issue
Register FLASH_CTRL.CONTROL (0x20).  This is the main Flash Operation Control register.
The Description of the START bit in the specification reads: -
START	Start flash transaction. This bit shall only be set after the other fields of the CONTROL register and ADDR have been programmed
The verification environment does not do this as such.  Currently the START bit is set ‘at the same time’ as the other fields in the CONTROL register, but after the ADDR has been programmed.
There seem to be no issues with this.  Just checking that there is no underlying hidden requirement here.

ah yes.  Same time or later is fine. I will update the language of the spec.

Spec updated .. close

authors: TimEwins tjaychen

repo: lowRISC/opentitan


text:
[doc] Remove README.md from docs.opentitan.org

README.md files are often created to provide in source reference documentation, and not always contain valid Hugo Markdown metadata.  This makes the documentation autogenerated indexes and the overall website structure hard to follow.
This issue proposes the following changes:

[ ] Move all docs.opentitan.org relevant documentation to {_}index.md and or docs/.md files.
[ ] Update all website documentation to have proper Hugo metadata.
[ ] Remove README.md file from docs.opentitan.org.

This new documentation folder structure will make the organization more intuitive, making it more explicit what we want to publish on the documentation website, while also allowing developers to use README.md files for in source documentation.

SGTM, README.md is a sufficiently typical and useful name that shouldn't confuse anyone and there's going to be a version hosted on Github that could be pointed to by a URL if it's important to make reference to it.

Related: #13345

SGTM too

There's quite a few README pages on docs.opentitan.org. With this plan I'm wondering about the following:

Does this double the documentation workload in certain places?
How do we avoid documentation fragmentation where some info is in the README and some in the docs?
Is there an easy way to update and enforce that OT READMEs have proper Hugo metadata (e.g. linting)?

There's quite a few README pages on docs.opentitan.org. With this plan I'm wondering about the following:

Does this double the documentation workload in certain places?

There is no need to double the workload. Adding README files to the documentation website was not intended as a feature. Using doc/... and {_}index.md directives allows us to be more explicit about the content we post on the website, and also allow us to make README files more ergonomic for in repo rendering (e.g. GitHub, code search).

How do we avoid documentation fragmentation where some info is in the README and some in the docs?

We'll provide some guidelines on what is recommended to go where. If the documentation needs to point to a README file it can still do so, but the reference will point to Github.

Is there an easy way to update and enforce that OT READMEs have proper Hugo metadata (e.g. linting)?

This is possible, but given the state of the website, I rather make a clear distinction between README files and documentation intended to go on the website.

The OTBN README is a great example of how I think we should be using README files: https://github.com/lowRISC/opentitan/tree/master/hw/ip/otbn
It has pointers to relevant documentation, and provides a quick reference on how to get started. It also renders well in both GitHub and code search given that it does not use any Hugo markup.

Closing as implemented.

authors: arunthomas drewmacrae marnovandermaas moidx msfschaffner