Oap8.1 An OAP node USES ES6.7 to limit the problem

Please answer these questions before submitting your issue.

Why do you submit this issue?
[x] Question or discussion
[ ] Bug
[ ] Requirement
[ ] Feature or performance improvement

Question

What do you want to know?
Because lock often occurs when the traffic of connecting an OAP node is high, and all grpcServerPool 1-Thread processes lock in the lock of this figure, concurrentRequests configuration is 10, as shown in the figure

I checked es Github, but it was not really concurrent at this time, so the sending was restricted. The following is the connection
https://github.com/elastic/elasticsearch/pull/41451/commits
I want to know if there is a lock caused by my improper configuration

Bug

Which version of SkyWalking, OS and JRE?

Which company or project?

What happened?
If possible, provide a way to reproduce the error. e.g. demo application, component version.

Requirement or improvement

Please describe your requirements or improvement suggestions.

I don't know any configuration could cost this lock. This seems more like a bug but only tagged in 7.3 and 8+. Are you using those versions?

Java High Level REST Client ：6.3.2    elasticsearch ：6.7

I don't have feedback about this. But you could consider updating the ES client to 6.7

Ok, I'll try ES Client 6.7 first. Is there a recommended version of ES7?

Is it necessary to change ES Client from version 6.3.2 to 6.7

I don't have much experience to be shared with you, I am afraid. We don't face this issue.

Again encounter the following things, can help to see the number of threads has no problem   "grpc-default-executor-1889" #1994 daemon prio=5 os_prio=0 tid=0x00007f8068037800 nid=0x846 waiting on condition [0x00007f80420e1000]
"Attach Listener" #1993 daemon prio=9 os_prio=0 tid=0x00007f8104001000 nid=0x824 waiting on condition [0x0000000000000000]
"grpc-default-executor-1888" #1992 daemon prio=5 os_prio=0 tid=0x00007f80680c0000 nid=0x809 waiting on condition [0x00007f8040adc000]
"grpc-default-executor-1887" #1991 daemon prio=5 os_prio=0 tid=0x00007f806810d000 nid=0x808 waiting on condition [0x00007f80402d8000]
"grpc-default-executor-1883" #1987 daemon prio=5 os_prio=0 tid=0x00007f80680c7000 nid=0x804 waiting on condition [0x00007f80f854d000]
"grpc-default-executor-1879" #1983 daemon prio=5 os_prio=0 tid=0x00007f80682be800 nid=0x800 waiting on condition [0x00007f80401d7000]
"qtp293870357-1967" #1967 prio=5 os_prio=0 tid=0x00007f8094003000 nid=0x7f0 runnable [0x00007f80a7dfe000]
"Connector-Scheduler-4cdd2c73-1" #136 prio=5 os_prio=0 tid=0x00007f7fa0005800 nid=0x9f waiting on condition [0x00007f80407d9000]
"DataCarrier.GRPCRemoteClient.Consumer.0.Thread" #103 daemon prio=5 os_prio=0 tid=0x00007f80e0072800 nid=0x7e waiting on condition [0x00007f80a43e8000]
"DataCarrier.GRPCRemoteClient.Consumer.0.Thread" #102 daemon prio=5 os_prio=0 tid=0x00007f80e0072000 nid=0x7d waiting on condition [0x00007f8041edf000]
"pool-2-thread-5" #86 prio=5 os_prio=0 tid=0x00007f80e800b800 nid=0x65 waiting on condition [0x00007f8041fe0000]
"pool-2-thread-4" #84 prio=5 os_prio=0 tid=0x00007f80e800a000 nid=0x63 waiting on condition [0x00007f80421e2000]
"pool-2-thread-3" #83 prio=5 os_prio=0 tid=0x00007f80e8008000 nid=0x62 waiting on condition [0x00007f80422e3000]
"grpcServerPool-1-thread-32" #82 prio=5 os_prio=0 tid=0x00007f8068145000 nid=0x61 waiting for monitor entry [0x00007f80425e4000]
"grpcServerPool-1-thread-31" #81 prio=5 os_prio=0 tid=0x00007f8068143000 nid=0x60 waiting for monitor entry [0x00007f80426e5000]
"grpcServerPool-1-thread-30" #80 prio=5 os_prio=0 tid=0x00007f8068141000 nid=0x5f waiting for monitor entry [0x00007f80427e6000]
"grpcServerPool-1-thread-29" #79 prio=5 os_prio=0 tid=0x00007f806813f800 nid=0x5e waiting for monitor entry [0x00007f80428e7000]
"grpcServerPool-1-thread-28" #78 prio=5 os_prio=0 tid=0x00007f806813d800 nid=0x5d waiting for monitor entry [0x00007f80429e8000]
"grpcServerPool-1-thread-27" #77 prio=5 os_prio=0 tid=0x00007f806813c000 nid=0x5c waiting for monitor entry [0x00007f8042ae9000]
"grpcServerPool-1-thread-26" #76 prio=5 os_prio=0 tid=0x00007f806813a000 nid=0x5b waiting for monitor entry [0x00007f8042bea000]
"grpcServerPool-1-thread-25" #75 prio=5 os_prio=0 tid=0x00007f8068138800 nid=0x5a waiting for monitor entry [0x00007f8042ceb000]
"grpcServerPool-1-thread-24" #74 prio=5 os_prio=0 tid=0x00007f8068136800 nid=0x59 waiting for monitor entry [0x00007f8042dec000]
"grpcServerPool-1-thread-23" #73 prio=5 os_prio=0 tid=0x00007f8068135000 nid=0x58 waiting for monitor entry [0x00007f8042eed000]
"grpcServerPool-1-thread-22" #72 prio=5 os_prio=0 tid=0x00007f8068133000 nid=0x57 waiting for monitor entry [0x00007f8042fee000]
"grpcServerPool-1-thread-21" #71 prio=5 os_prio=0 tid=0x00007f8068131800 nid=0x56 waiting for monitor entry [0x00007f80430ef000]
"grpcServerPool-1-thread-20" #70 prio=5 os_prio=0 tid=0x00007f806812f800 nid=0x55 waiting for monitor entry [0x00007f80431f0000]
"grpcServerPool-1-thread-19" #69 prio=5 os_prio=0 tid=0x00007f806812e000 nid=0x54 waiting on condition [0x00007f80432f1000]
"grpcServerPool-1-thread-18" #68 prio=5 os_prio=0 tid=0x00007f806812c000 nid=0x53 waiting for monitor entry [0x00007f80433f2000]
"grpcServerPool-1-thread-17" #67 prio=5 os_prio=0 tid=0x00007f806812a800 nid=0x52 waiting for monitor entry [0x00007f80434f3000]
"grpcServerPool-1-thread-16" #66 prio=5 os_prio=0 tid=0x00007f8068128800 nid=0x51 waiting for monitor entry [0x00007f80435f4000]
"grpcServerPool-1-thread-15" #65 prio=5 os_prio=0 tid=0x00007f8068126800 nid=0x50 waiting for monitor entry [0x00007f80436f5000]
"grpcServerPool-1-thread-14" #64 prio=5 os_prio=0 tid=0x00007f8068124800 nid=0x4f waiting for monitor entry [0x00007f80437f6000]
"grpcServerPool-1-thread-13" #63 prio=5 os_prio=0 tid=0x00007f8068123000 nid=0x4e waiting for monitor entry [0x00007f80438f7000]
"grpcServerPool-1-thread-12" #62 prio=5 os_prio=0 tid=0x00007f8068121000 nid=0x4d waiting for monitor entry [0x00007f80439f8000]
"grpcServerPool-1-thread-11" #61 prio=5 os_prio=0 tid=0x00007f806811f800 nid=0x4c waiting for monitor entry [0x00007f8043af9000]
"grpcServerPool-1-thread-10" #60 prio=5 os_prio=0 tid=0x00007f806811d800 nid=0x4b waiting for monitor entry [0x00007f8043bfa000]
"grpcServerPool-1-thread-9" #59 prio=5 os_prio=0 tid=0x00007f806811c000 nid=0x4a waiting for monitor entry [0x00007f8043cfb000]
"elasticsearch[scheduler][T#1]" #58 daemon prio=5 os_prio=0 tid=0x00007f8030047800 nid=0x49 waiting on condition [0x00007f8043dfc000]
"grpcServerPool-1-thread-8" #57 prio=5 os_prio=0 tid=0x00007f8068114800 nid=0x48 waiting for monitor entry [0x00007f8043efd000]
"grpcServerPool-1-thread-7" #56 prio=5 os_prio=0 tid=0x00007f8068112800 nid=0x47 waiting for monitor entry [0x00007f8043ffe000]
"grpcServerPool-1-thread-6" #52 prio=5 os_prio=0 tid=0x00007f8068111000 nid=0x43 waiting for monitor entry [0x00007f80a44e9000]
"grpcServerPool-1-thread-5" #51 prio=5 os_prio=0 tid=0x00007f806810f800 nid=0x42 waiting for monitor entry [0x00007f80a45ea000]
"grpcServerPool-1-thread-4" #50 prio=5 os_prio=0 tid=0x00007f8068102800 nid=0x41 waiting for monitor entry [0x00007f80a58ec000]
"grpcServerPool-1-thread-3" #49 prio=5 os_prio=0 tid=0x00007f8068100800 nid=0x40 waiting for monitor entry [0x00007f80a59ed000]
"grpcServerPool-1-thread-2" #48 prio=5 os_prio=0 tid=0x00007f80680fd800 nid=0x3f waiting for monitor entry [0x00007f80a5aee000]
"grpcServerPool-1-thread-1" #47 prio=5 os_prio=0 tid=0x00007f80680fa800 nid=0x3e waiting for monitor entry [0x00007f80a5bef000]
"grpc-nio-worker-ELG-3-1" #46 daemon prio=5 os_prio=0 tid=0x00007f809c006000 nid=0x3d runnable [0x00007f80a6ef1000]
"pool-2-thread-2" #45 prio=5 os_prio=0 tid=0x00007f80e8006800 nid=0x3c waiting on condition [0x00007f80a6ff2000]
"DataCarrier.GRPCRemoteClient.Consumer.0.Thread" #44 daemon prio=5 os_prio=0 tid=0x00007f80e006e000 nid=0x3b waiting on condition [0x00007f80a70f3000]
"DataCarrier.GRPCRemoteClient.Consumer.0.Thread" #43 daemon prio=5 os_prio=0 tid=0x00007f80e006c000 nid=0x3a waiting on condition [0x00007f80a71f4000]
"DataCarrier.GRPCRemoteClient.Consumer.0.Thread" #42 daemon prio=5 os_prio=0 tid=0x00007f80e006a800 nid=0x39 waiting on condition [0x00007f80a72f5000]
"DataCarrier.GRPCRemoteClient.Consumer.0.Thread" #41 daemon prio=5 os_prio=0 tid=0x00007f80e0068800 nid=0x38 waiting on condition [0x00007f80a73f6000]
"DataCarrier.GRPCRemoteClient.Consumer.0.Thread" #40 daemon prio=5 os_prio=0 tid=0x00007f80e0066800 nid=0x37 waiting on condition [0x00007f80a74f7000]
"DataCarrier.GRPCRemoteClient.Consumer.0.Thread" #39 daemon prio=5 os_prio=0 tid=0x00007f80e0063000 nid=0x36 waiting on condition [0x00007f80a75f8000]
"DataCarrier.GRPCRemoteClient.Consumer.0.Thread" #38 daemon prio=5 os_prio=0 tid=0x00007f80e0061000 nid=0x35 waiting on condition [0x00007f80a76f9000]
"DestroyJavaVM" #37 prio=5 os_prio=0 tid=0x00007f812800e800 nid=0x12 waiting on condition [0x0000000000000000]
"pool-11-thread-1" #36 prio=5 os_prio=0 tid=0x00007f8129f0c800 nid=0x34 waiting on condition [0x00007f80a79fa000]
"pool-10-thread-1" #35 prio=5 os_prio=0 tid=0x00007f8129f0a800 nid=0x33 waiting on condition [0x00007f80a7afb000]
"pool-9-thread-1" #34 prio=5 os_prio=0 tid=0x00007f8129f87000 nid=0x32 waiting on condition [0x00007f80a7bfc000]
"qtp293870357-33-acceptor-0<EMAIL_ADDRESS>(http/1.1)}{<IP_ADDRESS>:12800}" #33 prio=5 os_prio=0 tid=0x00007f8129f82800 nid=0x31 runnable [0x00007f80a7cfd000]
"grpc-nio-boss-ELG-1-1" #31 daemon prio=5 os_prio=0 tid=0x00007f8129a48800 nid=0x2f runnable [0x00007f80f812b000]
"pool-2-thread-1" #30 prio=5 os_prio=0 tid=0x00007f80e8003800 nid=0x2e waiting on condition [0x00007f80f822c000]
"OkHttp ConnectionPool" #27 daemon prio=5 os_prio=0 tid=0x00007f80c4070800 nid=0x2b in Object.wait() [0x00007f80f874f000]
"OkHttp <IP_ADDRESS>" #26 prio=5 os_prio=0 tid=0x00007f80c406e800 nid=0x2a runnable [0x00007f80f8850000]
"I/O dispatcher 1" #25 prio=5 os_prio=0 tid=0x00007f80b8001800 nid=0x29 runnable [0x00007f80f8b51000]
"pool-8-thread-1" #24 prio=5 os_prio=0 tid=0x00007f81299d1000 nid=0x28 runnable [0x00007f80f8c52000]
"controller-reflector-io.kubernetes.client.openapi.models.V1Pod-0" #23 prio=5 os_prio=0 tid=0x00007f80c000b800 nid=0x27 in Object.wait() [0x00007f80f8f59000]
"informer-controller-V1Pod" #21 prio=5 os_prio=0 tid=0x00007f80cc002800 nid=0x26 waiting on condition [0x00007f80f905a000]
"SKYWALKING_KUBERNETES_CLUSTER_INFORMER" #22 daemon prio=5 os_prio=0 tid=0x00007f81287ad000 nid=0x25 waiting on condition [0x00007f80f915b000]
"DataCarrier.METRICS_L1_AGGREGATION.BulkConsumePool.3.Thread" #19 daemon prio=5 os_prio=0 tid=0x00007f812a241800 nid=0x24 waiting on condition [0x00007f80f986f000]
"DataCarrier.METRICS_L1_AGGREGATION.BulkConsumePool.2.Thread" #18 daemon prio=5 os_prio=0 tid=0x00007f812a240000 nid=0x23 waiting on condition [0x00007f80f9970000]
"DataCarrier.METRICS_L1_AGGREGATION.BulkConsumePool.1.Thread" #17 daemon prio=5 os_prio=0 tid=0x00007f812a23d800 nid=0x22 waiting on condition [0x00007f80f9a71000]
"DataCarrier.METRICS_L1_AGGREGATION.BulkConsumePool.0.Thread" #16 daemon prio=5 os_prio=0 tid=0x00007f812a23c800 nid=0x21 waiting on condition [0x00007f80f9b72000]
"DataCarrier.METRICS_L2_AGGREGATION.BulkConsumePool.0.Thread" #15 daemon prio=5 os_prio=0 tid=0x00007f812a23a000 nid=0x20 waiting on condition [0x00007f80f9c73000]
"DataCarrier.TopNWorker.Consumer.0.Thread" #14 daemon prio=5 os_prio=0 tid=0x00007f812a238000 nid=0x1f waiting on condition [0x00007f80f9d74000]
"pool-4-thread-1" #13 prio=5 os_prio=0 tid=0x00007f812a234800 nid=0x1e waiting on condition [0x00007f80f9e75000]
"pool-3-thread-1" #12 prio=5 os_prio=0 tid=0x00007f812a1e2800 nid=0x1d waiting on condition [0x00007f80f9f76000]
"Thread-2" #11 prio=5 os_prio=0 tid=0x00007f81292c7000 nid=0x1c runnable [0x00007f80fb07b000]
"server-timer" #10 daemon prio=5 os_prio=0 tid=0x00007f81292c2000 nid=0x1b in Object.wait() [0x00007f80fb17c000]
"Service Thread" #7 daemon prio=9 os_prio=0 tid=0x00007f81280bd800 nid=0x19 runnable [0x0000000000000000]
"C1 CompilerThread1" #6 daemon prio=9 os_prio=0 tid=0x00007f81280b8800 nid=0x18 waiting on condition [0x0000000000000000]
"C2 CompilerThread0" #5 daemon prio=9 os_prio=0 tid=0x00007f81280b6000 nid=0x17 waiting on condition [0x0000000000000000]
"Signal Dispatcher" #4 daemon prio=9 os_prio=0 tid=0x00007f81280b4800 nid=0x16 runnable [0x0000000000000000]
"Finalizer" #3 daemon prio=8 os_prio=0 tid=0x00007f8128080800 nid=0x15 in Object.wait() [0x00007f8118dfc000]
"Reference Handler" #2 daemon prio=10 os_prio=0 tid=0x00007f812807c000 nid=0x14 in Object.wait() [0x00007f8118efd000]


Nested headers rowspan

Is there an option to use rowspan in nestedHeaders ('Location' in example below)?

Sorry, this is not possible in the current version. I will leave this as a suggestion for future releases.

Recently found this plugin and started using it. Although colspan is working great for grouping headers, rowspan would be a great addition and needed for the project I am working on.
+1 for this feature from me.

@pphod
Is there any possibility that this functionality to appear in the future?

Since I needed this functionality for my project, I created the method that achieves my needs.
Hope this will help the person who is in trouble with this issue.
/**
 * [JavaScript version]
 * Merging rows of nested headers.
 * @param {string} selector: The selector of the Jspreadsheet element.
 * @param {integer} colIndex: The index of the target column.
 *        If not specified or not integer, the row number column (left-most column) will be merged.
 */
function mergeHeaderRows_JavaScript(selector, colIndex) {
	const thead = document.querySelector(`${selector} thead`);

	if (Number.isInteger(colIndex)) {
		const topTd = thead.querySelector(`td[data-column="${colIndex}"]`);
		const secondTd = thead.querySelector(`td[data-x="${colIndex}"]`);

		topTd.setAttribute('data-x', colIndex);
		topTd.setAttribute('rowspan', 2);
		topTd.setAttribute('title', secondTd.innerText);
		topTd.innerHTML = secondTd.innerText;
		secondTd.remove();
	} else {
		const topTd = thead.querySelector(`tr:first-child td:first-child`);
		const secondTd = thead.querySelector('tr:nth-child(2) td.jexcel_selectall');

		topTd.classList.add('jexcel_selectall');
		topTd.setAttribute('rowspan', 2);
		secondTd.remove();
	}
}

/**
 * [jQuery version]
 * Merging rows of nested headers.
 * @param {string} selector: The selector of the Jspreadsheet element.
 * @param {integer} colIndex: The index of the target column.
 *        If not specified or not integer, the row number column (left-most column) will be merged.
 */
function mergeHeaderRows_jQuery(selector, colIndex) {
	const $thead = $(selector).find('thead');

	if (Number.isInteger(colIndex)) {
		const $topTd = $thead.find(`td[data-column="${colIndex}"]`);
		const $secondTd = $thead.find(`td[data-x="${colIndex}"]`);

		$topTd.attr({
			'data-x': colIndex,
			'rowspan': 2,
			'title': $secondTd.text()
		}).html($secondTd.text());
		$secondTd.remove();
	} else {
		$thead.find('tr:first-child td:first-child').attr('rowspan', 2).addClass('jexcel_selectall');
		$thead.find('tr:nth-child(2) td.jexcel_selectall').remove();
	}
}

@ShinNagamine Thank you very much, your solution worked flawlessly! 🙂

@danaildinev
Thank you for verifying the behavior of the code.
I'm so glad to hear it works as expected :)


us-ascii charset not working

The error message is:
2017/01/18 19:15:22 Loading  ./config.json
2017/01/18 19:15:22 MatterMail version: 3.5.0
INFO Mattermail	19:15:22 Checking new emails
INFO Mattermail	19:15:23 Connected with "XXXX.com:993"
EROR Mattermail	19:15:23 UID SEARCH US-ASCII
INFO Mattermail	19:15:23 Error on check new email: imap: unexpected completion status ("GAWVC6 BAD Invalid charset specified")
 Try again in 30s

This is what the mail header says:
Content-Type: text/plain; charset=us-ascii

Please set "Debug": true in config.json and post the full log here,  but remember to remove personal data from the log ;)

I hope I did not miss any personal data... it showed the password in clear text... yikes:
2017/01/19 16:11:42 Loading  ./config.json
2017/01/19 16:11:42 MatterMail version: 3.5.0
DEBG Mattermail	16:11:42 Debug mode on
INFO Mattermail	16:11:42 Checking new emails
DEBG Mattermail	16:11:42 CheckNewMails
DEBG Mattermail	16:11:42 CheckImapConnection: DialTLS
IMAP Mattermail	16:11:42 Connected to x.x.x.x:993 (Tag=XLHPK)
IMAP Mattermail	16:11:42 S: * OK server ready. Unauthorized Access Prohibited.
IMAP Mattermail	16:11:42 Server greeting: server ready. Unauthorized Access Prohibited.
IMAP Mattermail	16:11:42 C: XLHPK1 CAPABILITY
IMAP Mattermail	16:11:42 S: * CAPABILITY IMAP4REV1 IDLE AUTH=PLAIN
IMAP Mattermail	16:11:42 S: XLHPK1 OK CAPABILITY completed
INFO Mattermail	16:11:42 Connected with "XXX.com:993"
IMAP Mattermail	16:11:42 C: XLHPK2 LOGIN<EMAIL_ADDRESS>"xxxx"
IMAP Mattermail	16:11:42 S: XLHPK2 OK LOGIN completed
IMAP Mattermail	16:11:42 C: XLHPK3 CAPABILITY
IMAP Mattermail	16:11:43 S: * CAPABILITY IMAP4REV1 IDLE AUTH=PLAIN
IMAP Mattermail	16:11:43 S: XLHPK3 OK CAPABILITY completed
IMAP Mattermail	16:11:43 C: XLHPK4 SELECT "INBOX"
IMAP Mattermail	16:11:43 S: * 500 EXISTS
IMAP Mattermail	16:11:43 S: * 0 RECENT
IMAP Mattermail	16:11:43 S: * 1000 EXISTS
IMAP Mattermail	16:11:43 S: * 0 RECENT
IMAP Mattermail	16:11:43 S: * 1500 EXISTS
IMAP Mattermail	16:11:43 S: * 0 RECENT
IMAP Mattermail	16:11:43 S: * 2000 EXISTS
IMAP Mattermail	16:11:43 S: * 0 RECENT
IMAP Mattermail	16:11:43 S: * 2184 EXISTS
IMAP Mattermail	16:11:43 S: * 0 RECENT
IMAP Mattermail	16:11:43 S: * OK [UIDVALIDITY 22994129] UID validity status
IMAP Mattermail	16:11:43 S: * OK [UIDNEXT 16619] Predicted next UID
IMAP Mattermail	16:11:43 S: * FLAGS (\Seen \Deleted \Answered \Forwarded \Redirected \Flagged \Hidden \Draft $MDNSent)
IMAP Mattermail	16:11:43 S: * OK [PERMANENTFLAGS (\Seen \Deleted \Answered \Forwarded \Redirected \Flagged \Hidden \Draft $MDNSent)] Permanent flags
IMAP Mattermail	16:11:43 S: XLHPK4 OK [READ-WRITE] SELECT completed
IMAP Mattermail	16:11:43 C: XLHPK5 UID SEARCH CHARSET UTF-8 UNSEEN
IMAP Mattermail	16:11:43 S: XLHPK5 BAD Invalid charset specified
DEBG Mattermail	16:11:43 Error UIDSearch UTF-8:
DEBG Mattermail	16:11:43 imap: unexpected completion status ("XLHPK5 BAD Invalid charset specified")
DEBG Mattermail	16:11:43 Try with US-ASCII
IMAP Mattermail	16:11:43 C: XLHPK6 UID SEARCH CHARSET US-ASCII UNSEEN
IMAP Mattermail	16:11:43 S: XLHPK6 BAD Invalid charset specified
EROR Mattermail	16:11:43 UID SEARCH US-ASCII
INFO Mattermail	16:11:43 Error on check new email: imap: unexpected completion status ("XLHPK6 BAD Invalid charset specified")
 Try again in 30s

I think this could be a bug of go-imap lib.
Do you know which imap server do you use? ex.: Dovecot, Exchange, etc.

Hi yes, I believe it's an old incarnation of Zimbra.
Sent from my iPhone

On Jan 27, 2017, at 6:13 AM, Rodrigo<EMAIL_ADDRESS>wrote:
I think this could be a bug of go-imap lib.
Do you know which imap server do you use? ex.: Dovecot, Exchange, etc.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

On Release 4 I started using a new imap library, feel free to reopen this issue if it does not work


[usecase-webapi] Remove useless css file for usecase webapi

bootstrap-theme.css is only quoted in bootstrap-theme.css.map, so delete it. Other files aren't quoted, so delete them.

I prefer bootstrap.min.css to bootstrap.css.

bootstrap.css is easy to change style. If bootstrap.min.css is refered, it will hard to modify style.So I think it is better to refer bootstrap.css.

LGTM


Discord.Net 1.0.2 + Mono <IP_ADDRESS>+dfsg-1

Hi, I got an exception when my command line discord bot start,
The used for the project is C#
Command used : xbuild TestBot.sln
When built everything is fine and when I execute : mono TestBot.exe
Here's the output :
13:17:14 Discord     Discord.Net v1.0.2 (API v6)
13:17:19 Gateway     Connecting
13:17:22 Gateway     System.Exception: WebSocket connection was closed ---> System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'System.Net.Sockets.NetworkStream'.
--- End of inner exception stack trace ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <8f2c484307284b51944a1a13a14c0266>:0
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0004e] in <8f2c484307284b51944a1a13a14c0266>:0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in <8f2c484307284b51944a1a13a14c0266>:0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in <8f2c484307284b51944a1a13a14c0266>:0
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0
at Discord.ConnectionManager+d__33.MoveNext () [0x00070] in :0
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <8f2c484307284b51944a1a13a14c0266>:0
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0004e] in <8f2c484307284b51944a1a13a14c0266>:0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in <8f2c484307284b51944a1a13a14c0266>:0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in <8f2c484307284b51944a1a13a14c0266>:0
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter.GetResult () [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0
at Discord.WebSocket.DiscordSocketClient+d__93.MoveNext () [0x0040e] in :0
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <8f2c484307284b51944a1a13a14c0266>:0
at Discord.WebSocket.DiscordSocketClient+d__93.MoveNext () [0x00592] in :0
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <8f2c484307284b51944a1a13a14c0266>:0
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0004e] in <8f2c484307284b51944a1a13a14c0266>:0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in <8f2c484307284b51944a1a13a14c0266>:0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in <8f2c484307284b51944a1a13a14c0266>:0
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter.GetResult () [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0
at Discord.ConnectionManager+d__30.MoveNext () [0x0019e] in :0
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <8f2c484307284b51944a1a13a14c0266>:0
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0004e] in <8f2c484307284b51944a1a13a14c0266>:0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in <8f2c484307284b51944a1a13a14c0266>:0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in <8f2c484307284b51944a1a13a14c0266>:0
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter.GetResult () [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0
at Discord.ConnectionManager+<>c__DisplayClass28_0+<b__0>d.MoveNext () [0x000ce] in :0
13:17:22 Gateway     Disconnecting
13:17:22 Gateway     Disconnected
I already tried to import certs etc it didn't worked

Discord.Net doesn't exactly support mono, as was made clear in #909. I'd suggest looking into that person's project for proper Mono support.

Mono is not a supported runtime. Switch to .NET Core.


macro t!

to simplify/improve i18n rendering.
Example
// Given following translation
// T::title => "Any Title",
// T::Hello => "Hello {$name}",

// No extra args (default)
<div>{t!(cx, T::Title)}</div> // Output: "Any Title"

// Additional args
<h2>{move || {
  let name = "World".to_string();
  t!(cx, T::Hello, { "name" = name })
</h2> // Output: "Hello World"

Highly inspired by Perseus'  Internationalization approach - code: macro t! , t_macro_backend, t_macro_backend_with_args, translate_checked - but more simplified for our use case.
In addition: Extract I18nContext (no change here, just to reduce "complexity" in providers) 403fb3b6faaec06c23fb423ddbbcdf232e832a62 - we might do it similar for other providers.

syntax looks useful. taking a deeper look at perseus and  project fluent, its been a while since I took a deeper dive into i18n but learning agin is fun.

I think it's fine to do it this way. I haven't implemented i18n in Rust yet, but this seems to be a fairly common pattern, similar to _() in core.
But for the project, I would always first ask myself how important translations really are. In the current phase, you might spend too much time on this before the product is even running properly. The thing is, if you add a language, the translations must be correct, good, and complete, otherwise, you might achieve the opposite effect. And you want to iterate as quickly as possible now, it can quickly become extremely annoying if you have to gather translations for 5 languages. All outside contributions have to be reviewed as well, to prevent spammers from adding malicious messages.
Granted, machine translations are much better now, but you have to accept that it might still come off as odd to some people, similar to the emails we get from the Arabian oil prince. Also, if translations are really important, I would first get an integration with a translation management UI so you can manage it better, probably Transifex for you guys as it's free for open source. This makes it easier to bring in people who can contribute translations if they can work within it. I supposed this structure here will work with that but it may be interesting to check first.

I think it's fine to do it this way. I haven't implemented i18n in Rust yet, but this seems to be a fairly common pattern, similar to _() in core.
But for the project, I would always first ask myself how important translations really are. In the current phase, you might spend too much time on this before the product is even running properly. The thing is, if you add a language, the translations must be correct, good, and complete, otherwise, you might achieve the opposite effect. And you want to iterate as quickly as possible now, it can quickly become extremely annoying if you have to gather translations for 5 languages. All outside contributions have to be reviewed as well, to prevent spammers from adding malicious messages.
Granted, machine translations are much better now, but you have to accept that it might still come off as odd to some people, similar to the emails we get from the Arabian oil prince. Also, if translations are really important, I would first get an integration with a translation management UI so you can manage it better, probably Transifex for you guys as it's free for open source. This makes it easier to bring in people who can contribute translations if they can work within it. I supposed this structure here will work with that but it may be interesting to check first.

See your concerns and agree with most of them. However, here is another point of view: Leptos is still new and has unknown areas. That's why we need to figure out constantly how to implement and structure things. If we know how to implement localization in Leptos, we can learn from it to use similar "patterns" (providers, context, macros etc) for next features in code.
Another good thing: For current languages we have native speaker in the team and we can easily switch off any language if we want.
From my perspective a missing plan or milestones for next steps/features in general is more an issue we have right now. Without that, nobody really knows what's next or to focus on.


Dart -> Engine roll stopped

On the Dart -> Engine roll reverted here https://github.com/flutter/engine/pull/39422, Engine -> Framework rolls started failing with the error
14:50 +29 ~13 -1: test/integration.shard/stateless_stateful_hot_reload_test.dart: Can switch between stateless and stateful [E]
  Exception: Hot reload request failed

  [{"id":3,"result":{"code":1,"message":"Reloaded 1 of 652 libraries"}}]

  Reassembling main.dart$main-3696557592808931 failed: ext.flutter.reassemble: (-32000) Server error
  {"exception":"type '_State' is not a subtype of type 'State<StatefulWidget>?' of 'function result'","stack":"
#0      StatefulElement._state (package:flutter/src/widgets/framework.dart)\n
#1      StatefulElement.state (package:flutter/src/widgets/framework.dart:5071:38)\n
#2      StatefulElement.reassemble (package:flutter/src/widgets/framework.dart:5077:7)\n
#3      Element.reassemble.<anonymous closure> (package:flutter/src/widgets/framework.dart:3403:13)\n
#4      SingleChildRenderObjectElement.visitChildren
...
#389    BindingBase.reassembleApplication (package:flutter/src/foundation/binding.dart:595:12)\n
#390    BindingBase.registerSignalServiceExtension.<anonymous closure> (package:flutter/src/foundation/binding.dart:630:23)\n
#391    BindingBase.registerServiceExtension.<anonymous closure> (package:flutter/src/foundation/binding.dart:840:32)\n
<asynchronous suspension>\n","method":"ext.flutter.reassemble"}
  test/integration.shard/test_driver.dart 751:5                        FlutterRunTestDriver._throwErrorResponse
  test/integration.shard/test_driver.dart 662:7                        FlutterRunTestDriver._restart
  ===== asynchronous gap ===========================
  test/integration.shard/stateless_stateful_hot_reload_test.dart 44:5  main.<fn>

To run this test again: /b/s/w/ir/x/w/flutter/bin/cache/dart-sdk/bin/dart test test/integration.shard/stateless_stateful_hot_reload_test.dart -p vm --plain-name 'Can switch between stateless and stateful'

Starting with the Engine -> Framework roll here https://github.com/flutter/flutter/pull/120030
Example: https://ci.chromium.org/ui/p/flutter/builders/try/Linux tool_integration_tests_3_4/19373/overview

Maybe this one? https://dart.googlesource.com/sdk.git/+/87810072db06c1a16fdaa7bf6bb77ef4e6405af5
@alexmarkov

cc @jonahwilliams who wrote the feature/test.

Maybe we should just double check that widget is StatefulWdiget in StatefulElement.reassemble before calling state.reassemble().

@jonahwilliams do you know who would be a good person to take a look? Maybe @goderbauer?

The VM revert is going to take a bit to roll into the dev branches. It also identified a real issue that is being tracked separately.

The failure occurs when hot reload invokes WidgetsBinding.performReassemble, which traverses the current element tree and calls reassemble on each element.
(The Element.updateChild code path referenced above has not yet run.)
The test is running an app like this:
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  final ByteData message = const StringCodec().encodeMessage('AppLifecycleState.resumed')!;
  await ServicesBinding.instance!.defaultBinaryMessenger.handlePlatformMessage('flutter/lifecycle', message, (_) { });
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      home: Child(),
    );
  }
}

class Child extends StatefulWidget {
  State createState() => _State();
}

class _State extends State<Child> {
  @override
  Widget build(BuildContext context) {
    print('STATEFUL');
    return Container();
  }
}

It then replaces the Child and _State classes with:
class Child extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    print('STATELESS');
    return Container();
  }
}

class Other extends StatefulWidget {
  State createState() => _State();
}

class _State extends State<Other> {
  @override
  Widget build(BuildContext context) {
    print('STATEFUL');
    return Container();
  }
}

The test then does a hot reload.  The reassemble traversal reaches the StatefulElement associated with the old stateful Child widget.  That StatefulElement contains a _state field that was an instance of the old _State class.  But with https://github.com/dart-lang/sdk/commit/87810072db06c1a16fdaa7bf6bb77ef4e6405af5 accessing that field after hot reload throws a type error.
Is this access pattern expected to be safe in Dart?
Or is there any way to detect at runtime that the old _State class has disappeared?

Hot reload keeps data (state, heap) of the running program while replacing code. Note that type arguments of live objects are considered data and not updated. _State class doesn't disappear, and StatefulElement._state still points to an existing, old instance of _State.  _State used to extend State and type arguments of that instance are [Child]. After the update, Child is no longer a subtype of StatefulWidget, so old instance of _State is no longer assignable to State<StatefulWidget>. This doesn't prevent hot reload from happening, but VM adds a load guard to a getter of StatefulElement._state field, which throws an error if program tries to access an instance which no longer conforms to a type of a field. That load guard is used to contain the soundness violation, as the rest of the program still assumes that Dart types are sound. Due to a bug which was fixed in my CL, those load guards were sometimes omitted. After the fix, load guard now correctly throws an exception.

Is this access pattern expected to be safe in Dart?

Field access is not safe if runtime type of its value is no longer a subtype of a static type of a field (soundness of field type is violated). If you anticipate such changes, consider typing those fields more loosely - for example, use Object? and then test type of an object at run time. In this case, we can probably test if widget is still StatefullWidget before accessing its state.

Okay thinking about this some more, I had it a bit backwards but remembered:

We go through the entire tree and call reassemble, marking everything as dirty.
After reassemble we rebuild, and in the rebuild check we try to see if the types changed and dispose the widget if that happened.

The problem like @jason-simmons says is that we're now hitting the type error in 1 before we get to 2. However, if we know that the type is changed then we know that we're going to dispose and remove the entire element. In that case it is safe to early return from reassemble.
At that point, we only need a way to determine if the type of that Element/widget has changed. Making the backing storage Object? and adding a cast unfortunately has a tremendous runtime cost for web implementations. Ideally we could have a debug only path.

https://github.com/flutter/flutter/pull/120390 will remove part of the failing test. I would love a way to detect that this sort of change during hot reload so we can accommodate it

I would love a way to detect that this sort of change during hot reload so we can accommodate it

It looks like we detect that already, but at a different place:
https://github.com/flutter/flutter/blob/2239f6c8a91dff3495238f0496ea86d882a3b122/packages/flutter/lib/src/widgets/framework.dart#L3607-L3628

I don't think that would work here but maybe it will. We'd have to add that check to the state reassemble and early return

Is this still a P0? A revert was done of https://dart-review.googlesource.com/c/sdk/+/280401 and I think the rolls have restarted.

No, and we've disabled the failing test so it should be safe to reland 280401

Can this problem affect users? Should we solve it before relanding the change, instead of just disabling the test?


fix(karma): add 3rd party scripts in karma config

It seems like this has failed due to the merge with master.  Is anything broken in the build itself?


fix: move databse/ config.json to correct directory to prevent file-not-found error

Purpose or design rationale of this PR
This PR moves the database/config.json file to the database/conf directory to fix an error where the file could not be found after building the binary with make db_cli.
Previously:
joao@joao:/home/joao/scroll/database$ ./build/bin/db_cli --version
open conf/config.json: no such file or directory

Now:
joao@joao:/home/joao/scroll/database$ ./build/bin/db_cli --version
db_cli version v4.4.1-97f9746-000000-000000

Deployment tag versioning
Has tag in common/version.go been updated or have you added bump-version label to this PR?

[x] No, this PR doesn't involve a new deployment, git tag, docker image tag
[ ] Yes

Breaking change label
Does this PR have the breaking-change label?

[x] No, this PR is not a breaking change
[ ] Yes

Unable to reproduce the issue on develop.
> make db_cli

> ./build/bin/db_cli --version
db_cli version v4.4.2-8128526-000000-000000


Prev 6 What's New: SignalR Activities Improvement

Added an Improved Activities for SignalR subsection to the SignalR section for Preview6 What's new along with screenshot provided.

Internal previews

📄 File
🔗 Preview link

aspnetcore/release-notes/aspnetcore-9.0.md
What's new in ASP.NET Core 9.0

I added ms.author to aspnetcore/whats-new/index.yml since I could not get a build without it.

Merging this with one review approval since we can't have these open for long.


Adding a demonstration notebook.

Sample approach to working with notebooks for either initial exploration or collaboration/reporting.

Have taken some of the suggestions and merged into config.R.


install_linux.sh has a carriage return in the release zips

The install_linux.sh script included in the current release zips (Centrifuge.3.2.1.net35.zip and Centrifuge.3.2.1.netstandard.zip) has a carriage return character which causes the script to fail.

I can confirm the issue. The carriage return character is not present in the original source file of install_linux.sh, but somehow the build process adds it.
I fixed another issue with the file in #17 (BOM messing up the shebang), but the carriage return problem persists.
This error is displayed when executing the file:
bash: ./install_linux.sh: /bin/bash^M: bad interpreter: No such file or directory

Ok, I dug deeper and I think I realized somewhat what's happening: The default settings for git on Windows is to checkout the files with CRLF endings and commit them with LF endings. So if you are on a Windows system and add the current files to a zip folder, they will have CRLF endings, even though the original source would only have LF endings.
I corrected that by configuring the .gitattributes file to always checkout .sh files with LF endings and converted the existing files to only have LF endings. PR is #18
For the scripts to correctly work, both #17 and #18 will have to be merged.

Many thanks for the PRs! I have updated the existing latest release ZIPs as well.


Multiplayer improvements

This allows SDL to receive messages faster than one every 20ms(#597) and adds a handshake to the STM32 backend so that is_multiplayer_connected actually means that two devices are connected and in "multiplayer mode" (#598).

Thank you!


Add the ability to edit existing item in the list

Currently there's no way to edit existing items in the list.
Add the feature to edit them.
It should be:

Inline/another way (e.g. click edit to spawn the form or in an option page)
Can edit one/multiple fields at a once

Feel free to contribute.

Hii @aladhims I want to work on this

Sure, please create a PR with a detailed information on how it works later. Thanks 😄


Issue 75

Closes #75
See also: https://github.com/nasa/opera-sds-lambdas/pull/6

@maseca I was able to finish cluster provisioning, however, it throws an error. Here is a snapshot from Figaro UI

Hey @hhlee445 , could you please check via "View Job" for any additional error information in the script output?

https://s3.console.aws.amazon.com/s3/buckets/opera-dev-triage-fwd-hyunlee?region=us-west-2&prefix=triaged_job-data-subscriber-download-timer-20220510T233900_20220510T234900-20220510T234941.223666Z_task-e6ec66e3-bffb-413c-bc7a-eb84058f49cd/&showversions=false

Thanks, I pushed a fix.

@maseca https://github.com/nasa/opera-sds-pcm/blob/issue_75/cluster_provisioning/modules/common/main.tf#L2121, should it be hlss30_query_job_type?

Still getting an error from opera-hyunlee-100-hlss30-query-timer lambda function

2022-05-12T11:29:24.896-07:00Copy[ERROR] KeyError: 'ISL_BUCKET_NAME'Traceback (most recent call last):  File "/var/task/lambda_function.py", line 100, in lambda_handler    isl_bucket_name = os.environ['ISL_BUCKET_NAME']  File "/var/lang/lib/python3.7/os.py", line 681, in getitem    raise KeyError(key) from None
[ERROR] KeyError: 'ISL_BUCKET_NAME' Traceback (most recent call last):   File "/var/task/lambda_function.py", line 100, in lambda_handler     isl_bucket_name = os.environ['ISL_BUCKET_NAME']   File "/var/lang/lib/python3.7/os.py", line 681, in getitem     raise KeyError(key) from None

@hhlee445 I pushed a fix for the job type typo. Are you using the lambda code from https://github.com/nasa/opera-sds-lambdas/pull/6 ? You may have to copy paste it into the AWS console until the changes are on Artifactory.


chore: fix function name in comment

Anything need I to do? If have, Please feel free to tell me.

please target the dev branch, that’s were developing is happening

Modified. Please review again.


I102 protect user and team dashboard pages

Change Summary
[Briefly summarise the changes that you made. Just high-level stuff]
Made it so that use cannot redirect to team and dashboard pages if not logged
Login modal opens if redirect fails
Change Form
Fill this up (NA if not available). If a certain criteria is not met, can you please give a reason.

[x] The pull request title has an issue number
[x] The change works by "Smoke testing" or quick testing
[x] The change has tests
[ ] The change has documentation

Other Information
[Is there anything in particular in the review that I should be aware of?]

All changes should be done


Add reversible jump MCMC

Reversible Jump MCMC algorithms are a generalization of the Rosenbluth-Metropolis-Hastings algorithm for when the target density does not have a fixed number of dimensions. Since aesara can handle variables of varying dimensions we should be able to implement such algorithms in aehmc.
As a motivating example we could use the coal-mining disaster datasets and let the number of change points be a Poisson-distributed as in the reference below.
References
https://www2.stat.duke.edu/~scs/Courses/Stat376/Papers/TransdimMCMC/GreenRevJump.1995.pdf

I thought this was a PR. I was going to say you're on fire this week


active-color not working for Hex color codes

I tried using hex value for color but it didn't seem to work.

I tried it, it's working, is it missing the # when you set active-color?

No, I tried using the code with # but it wasn't working for me.

Here is my sample code, it's working.
<template>
  <div class="home">
    <vue-step
      :now-step="nowStep"
      :step-list="stepList"
      active-color="#ff0000"
    />
  </div>
</template>

<script>
import vueStep from 'vue-step'

export default {
  name: 'home',
  data () {
    return {
      nowStep: 2,
      stepList: [
        'First Step',
        'Second Step',
        'Third Step',
        'Four Step'
      ]
    }
  },
  components: {
    vueStep
  }
}
</script>

Okay, please close this issue as I've resolved it.


support for vJunosEvolved

Adds support for vJunosEvolved.  I used the below topology file with containerlab for testing. Once this is verified and upstream for vrnetlab I will make the PR for containerlab as well.
name: srlvjunos02

topology:
  nodes:
    srl:
      kind: nokia_srlinux
      image: ghcr.io/nokia/srlinux:23.7.1
      startup-config: srl.cli

    vevo:
      kind: vr-juniper_vjunosevolved
      image: vrnetlab/vr-vjunosevolved:23.2R1-S1.8-EVO
      startup-config: vjunos.cfg

  links:
    - endpoints: ["srl:e1-1", "vevo:eth1"]
    - endpoints: ["srl:e1-2", "vevo:eth2"]
    - endpoints: ["srl:e1-3", "vevo:eth3"]

Thanks @akielaries
Do you mind posting here the clab binary you used for testing so that more people could give it a try?

@hellt I had built my containerlab binary from this branch: https://github.com/akielaries/containerlab/tree/vJunosEvolved

thnx @akielaries


WIP: Add documentation version switcher dropdown

Description
This PR adds version switcher dropdowns to the documentation. Unfortunately there is an issue with the PyData Sphinx theme, which prevents this from being merged at this time.
Checklist

[ ] The pull request title and description are concise.
[ ] Related issues are linked in the description.
[ ] New dependencies are explained.
[ ] The source code and documentation can be distributed under the MIT license.
[ ] The source code adheres to code standards.
[ ] New classes, functions, and features are thoroughly tested.
[ ] New, user-facing classes, functions, and features are documented.
[ ] New features are covered in tutorials.
[ ] No files other than source code, documentation, and project settings are added to the repository.

The fix for the pydata-sphinx-theme issue has been merged.

pydata-sphinx-theme v0.16.0 has been released with the fix.


Feat/release cd

New feature description
This introduces a new CD script that is triggered when a tag vx.y.z is pushed. It triggers publication to NPM. The PR checklist is also updated to have a clear release process. Here is an example of the process (mocked up for testing): https://github.com/inrupt/solid-client-js/actions/runs/196346354
Checklist

[X] All acceptance criteria are met.
[X] Relevant documentation, if any, has been written/updated.
[X] Commits in this PR are minimal and have descriptive commit messages.

I successfully tested this to release v0.0.2 :+1:


Add parser for lambda

Add tests to TestAnalyzer to ensure semantic analysis fails with reasonable errors when lambdas are used.

VariableReference is not used. It will be generated in TranslationMap. But that happens after initial analysis. And I can't put initial analysis in this pull request because that depends on better type unification in #3409

Looks good


Only find one match per position

Hi, nice library, I especially like the syntax.
Is there any way of parsing only one match per position? Now when I run code like this:
let myany = LazilyRepeating(one() as Wildcard<String>)
let token = Token("." • myany • Literal(" ") • myany • " ")
let parser = myany • token
parser.forwardMatches(enteringFrom: Match<String>(over: #" .1  slkjdf.2 .3  "#)).forEach {
	print($0.captures(for: token))
}

it seems to find all possible matches for each position:
[".1  "]
[".1  slkjdf.2 "]
[".1  slkjdf.2 .3 "]
[".1  slkjdf.2 .3  "]
[".1  slkjdf.2 "]
[".1  slkjdf.2 .3 "]
[".1  slkjdf.2 .3  "]
[".1  slkjdf.2 .3 "]
[".1  slkjdf.2 .3  "]
[".1  slkjdf.2 .3  "]
[".2 .3 "]
[".2 .3  "]
[".2 .3  "]
[".3  "]

How do I tell LazilyRepeating to only find the shortest possible match?

Thanks for your kind words!
I haven’t had much time recently to continue implementing a few more features I had in mind, and especially document a few things! (But I’m definitely planning to!)
Token is a pattern class that is supposed to be used at most once in a given pattern. When used on two or more places, it can capture multiple sequences per match but it’s not well-defined. The multiple-captures features is only well-defined when a single token object is used within some kind of repeating pattern (like LazilyRepeating): in that case it blindly follows the matching semantics of the repeating pattern.
I see multiple uses of the token within the pattern. Did you instead mean to use a back-reference, which matches a subsequence that a previous token matched? The read-me mentions Referencing but I haven’t gotten around to implementing it yet.
LazilyRepeating already tries to match its sub-pattern as few times as possible, or in your example, by applying the wildcard zero times, once, twice, thrice, and so. In your example output, it’s the first, second, third, … element. forwardMatches(…) returns a lazily evaluated array for every possible match, so you can just take the first match to get the match with the least repetitions.
However, forwardMatches(enteringFrom:) is a foundational method that returns partial matches (matches that might not cover the whole string yet). Larger patterns build on top of these partial matches. However the matches(over:) method (in Pattern) does exclude all partial matches, and is the method for “client use”. :)

Hi, and sorry about the very late reply. I liked the syntax in this project so much I implemented something similar in my PEG parser at https://github.com/kareman/Patterns . It made the API far easier to work with (as soon as you find out how to type • and ¿ 😄) .

Looks nice, especially its strong typing and its VM approach! 💯


Feature: Support db get for duptables (CLI)

Continues upon #2897 . Closes #2836

@gakonst here's a PR for the issue I've mentioned in #4282. Could we get issue #2836 assigned to me?

@onbjerg How could I test this? I am new to the project so I am unfamiliar with the workflows.

@pyropy find a table with duplicated keys and try to get the value with the subkey with your newly created command. I don't know if this is enough for testing(if you should write automated tests - that's the team decision)

@pyropy you can simply initialize a holesky node and query for the storage slots of the deposit contract. do you have availability to bring this PR to completion?

@pyropy you can simply initialize a holesky node and query for the storage slots of the deposit contract. do you have availability to bring this PR to completion?

Hey yes I'll do it over the weekend, I am in on-site camp with my company so I cannot do it ATM.

@pyropy fyi, the dupsort tables were wrongfully disabled on db list https://github.com/paradigmxyz/reth/pull/5068

I've synced holesky network and tried out the cli, here's the example for PlainStorageState table:
./target/debug/reth db get PlainStorageState 0x4242424242424242424242424242424242424242 0x0000000000000000000000000000000000000000000000000000000000000004 --chain=holesky
{
  "key": "0x0000000000000000000000000000000000000000000000000000000000000004",
  "value": "0x156663e7936e7dd38052dbffe5c8a41e507ccef69867efd1af269df0d0c7a8fe"
}

@pyropy sg! my remaining concern is the need for view_dupsort function. do we still need to differentiate given #5068?

@pyropy sg! my remaining concern is the need for view_dupsort function. do we still need to differentiate given #5068?

Good call, let me take a look at that today and refactor my PR if needed.

Hi @pyropy wonder if there's any next steps for this PR? Thanks for taking the time!

Hi @pyropy wonder if there's any next steps for this PR? Thanks for taking the time!

Hey I think it should be good. If you can give it a review you I'd appreciate it 🙏🏻

@pyropy thanks for the PR, we'll be merging it shortly. refactored the tables macro to a bit more amicable format

@pyropy thanks for the PR, we'll be merging it shortly. refactored the tables macro to a bit more amicable format

Seen your refactor, good job. This is a really good way for me to learn how to do rust properly as I mainly write golang.


test: add usingRecursiveComparison tests

Note, I created those tests, when investigated, why my RecursiveComparisonConfiguration with ignoreFieldsMatchingRegexes doesn't work. My regex was "\\w*[iI]d", which doesn't work on lists, because fields named like list[0].field

Integrated thanks @dsankouski ! (sorry for the long delay)


Replace github img links with local relative links

@TaeBlack the images you put in are uploaded to github. Let's change them all to relative links. This makes it easier for us to change later.
For example:
5. Ensure that the `Summary` page looks good, then click `Finish`.
will change to
5. Ensure that the `Summary` page looks good, then click `Finish`.

or
5. Ensure that the `Summary` page looks good, then click `Finish`.
   ![](img/click-finish.png)

You will have to first copy the github image to img/click-finish.png image.

finished uploading and replacing the image links


Saving OAuth token

Hi, I am trying to setup git-remote-dropbox following https://github.com/anishathalye/git-remote-dropbox/blob/master/README.md. However, I am really confused about where should I save the OAuth token that I generated from step 2. I am using a mac and where can I find '~/.config/git/git-remote-dropbox.json or ~/.git-remote-dropbox.json'?
Thank you very much!

The ~ refers to your home folder. https://support.apple.com/guide/mac-help/go-directly-to-a-specific-folder-on-mac-mchlp1236/mac

Thanks! But I actually only found a 'ignore' file under '~/.config/git/'. Should I create aa json file with the OAuthen information? Or is there something wrong with my installation? I installed with pip.

Yes you will need to create the file

Thx a lot! I am wondering should i also put App key/secret somewhere?
Also, do you mind explaining how to specify "dropbox://username@/path/to/repo" or "dropbox:///path/to/repo". I am quite confused about this format.
Really appreciate your help!

Hi, thanks for your help! I think the setup works but I am kind of curious about how to connect the repo to GitHub after connecting it to Dropbox? As currently, I can do everything that I can do with GitHub but unable to track the earlier changes to the folder. Thanks a lot!

I'm not sure what you mean by being unable to track earlier changes.
You can use the git command-line tool to interact with the repository history. Unlike GitHub, git-remote-dropbox will not give you a web interface.

Got it. Thanks a lot!


Enable Travis

@displague Looks like I can't do this, can you please active Travis?

Activated.  Let me know if we need something more specific.


Add SetParams handling in TabRouter.js

Following on from #126 setParams in TabNavigator was not working. I believe this is because it is not handled in the getStateForAction function in TabRouter.js
The following code works with my changes
import React from 'react';
import {
    AppRegistry,
    Text,
    View,
    Button,
    StyleSheet
} from 'react-native';
import { TabNavigator, TabView } from 'react-navigation';
import Ionicons from 'react-native-vector-icons/Ionicons';
import IconBadge from './IconBadge'

class Home extends React.Component {

    static navigationOptions = {
        tabBar: ({ state }) => ({
            label: 'Home',
            icon: ({ tintColor, focused }) =>
                <IconBadge
                MainElement={
                    <Ionicons
                    name={focused ? 'ios-home' : 'ios-home-outline'}
                    size={26}
                    style={{ color: tintColor }}
                    />
                }
                badgeNumber={typeof state.params === 'undefined' ? 0 : state.params.badgeCount}
                />,
        }),
    }

    render() {
        const {navigation} = this.props;

        return (
            <View>
                <Button
                    onPress={() => navigation.setParams({badgeCount : 1})}
                    title="Set Badge Number"
                />
            </View>
        );
    }
}

class Settings extends React.Component {
    static navigationOptions = {
        tabBar: {
            label: 'Settings'
        },
    }

    render() {
        const { navigate } = this.props.navigation;

        return (
            <Button
                onPress={() => this.props.navigation.goBack()}
                title="Go back"
            />
        );
    }
}

const MyApp = TabNavigator({
    Home: {
        screen: Home,
    },
    Settings: {
        screen: Settings,
    },
}, {
    ...TabNavigator.Presets.iOSBottomTabs,
    tabBarOptions: {
        activeTintColor: '#e91e63',
    },
});

AppRegistry.registerComponent('ReactNavigation', () => MyApp);

And fails without them. I'm presuming this is how you intended it to work, so please dismiss if I have misunderstood.

I noticed what you are saying...
When doing props.navigate("Page", { index: 1 }) in a TabRouter then I can't access navigation.state.params to get the index.

Actually that is done through merging the params see #134. This issue only resolves calling
this.props.navigation.setParams(...)

We need to get both bugs fixed to get params working properly in TabNavigator

This looks great. Can you add a test for this, or maybe share the SetParams test for StackRouter?

OK I'm not going to lie, I have no idea how the tests work (I really work in embedded programming, where tests are dependent on hardware!). So I've just cut and paste from the StackRouter test and changed it to TabRouter.

To run the tests, it should be as easy as npm install and npm test. Does the new test pass after your changes are added, and fail before?

I have managed to get the test working.

This code doesn't work with current head. It requires
if (action.type === NavigationActions.SET_PARAMS)

not
if (action.type === 'SetParams')

shall I close this and open a new pull request based on the current head?

You can rebase the branch against master or merge master branch to this branch - git rebase master or git merge master

OK this now works with latest master branch, including tests. It would be good if we could get it merged.


get stuck in setallowance

a fresh node compile branch v1.1.2
send 10ksc to this node
try to start rent:
siac renter setallowance 3KS 12

then the command get stuck,nothing would happen then

seeing some contract are forming,
so this is normal that people get stuck at setallowence?

try siac renter setallowance 3KS 6
this is the log of ./renter/contractor.log
2017/03/30 11:55:29.013374 formcontract.go:115: Formed contract with sia.backupfarm.com:9982 for 6 SC
2017/03/30 11:56:41.389082 formcontract.go:115: Formed contract with <IP_ADDRESS>:19982 for 8 SC
2017/03/30 11:57:43.358600 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 6 SC
2017/03/30 11:58:46.142448 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 8 SC
2017/03/30 11:59:47.551589 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 6 SC
2017/03/30 12:00:49.468546 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 3 SC
2017/03/30 12:01:51.177417 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 4 SC
2017/03/30 12:02:52.709806 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 6 SC
2017/03/30 12:03:57.419647 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 8 SC
2017/03/30 12:04:59.722006 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 4 SC
2017/03/30 12:06:32.132205 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 40 SC
2017/03/30 12:07:38.283254 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 3 SC
2017/03/30 12:08:46.928222 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 5 SC
2017/03/30 12:09:56.502633 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 16 SC
2017/03/30 12:10:58.656803 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 6 SC
2017/03/30 12:12:00.170968 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 6 SC
2017/03/30 12:13:12.333984 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 4 SC
2017/03/30 12:14:06.654871 allowance.go:86: INFO: setting allowance to {3000000000000000000000000000 50 12096 6048}
2017/03/30 12:14:07.920890 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 1 SC
2017/03/30 12:14:19.404672 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 8 SC

2017/03/30 12:15:09.998751 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 8 SC
2017/03/30 12:15:22.775711 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 24 SC
2017/03/30 12:16:14.241620 formcontract.go:115: Formed contract with chemsorly.selfhost.eu:9982 for 22 SC
2017/03/30 12:16:25.043814 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 1 SC
2017/03/30 12:17:17.328281 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 11 SC
2017/03/30 12:17:31.050375 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 31 SC
2017/03/30 12:18:21.340339 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 11 SC
2017/03/30 12:18:39.900440 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 4 SC
2017/03/30 12:19:25.427800 formcontract.go:115: Formed contract with sia.backupfarm.com:9982 for 8 SC
2017/03/30 12:20:26.037201 formcontract.go:169: WARN: failed to form desired number of contracts (wanted 50, got 6):
	<IP_ADDRESS>:19982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:19982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:29982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	badgoes.goip.de:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	sia.tlightsky.com:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	jnsrd.ddns.net:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	space.siahub.com:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
2017/03/30 12:20:42.893068 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 28 SC
2017/03/30 12:21:45.928999 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 3 SC
2017/03/30 12:22:05.558801 allowance.go:86: INFO: setting allowance to {3000000000000000000000000000 50 6048 3024}

2017/03/30 12:22:48.196644 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 40 SC
2017/03/30 12:23:50.265706 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 8 SC
2017/03/30 12:24:52.572410 formcontract.go:115: Formed contract with <IP_ADDRESS>:19982 for 9 SC
2017/03/30 12:25:58.413842 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 6 SC
2017/03/30 12:26:59.234627 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 16 SC
2017/03/30 12:27:48.001101 formcontract.go:115: Formed contract with <IP_ADDRESS>:19982 for 16 SC
2017/03/30 12:28:12.409272 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 1 SC
2017/03/30 12:28:50.118900 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 6 SC
2017/03/30 12:29:15.405207 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 8 SC
2017/03/30 12:29:54.789397 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 12 SC
2017/03/30 12:30:21.748719 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 242 SC
2017/03/30 12:30:59.223355 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 8 SC
2017/03/30 12:32:00.112901 formcontract.go:169: WARN: failed to form desired number of contracts (wanted 44, got 4):
	<IP_ADDRESS>:9982: host did not accept our proposed contract: communication error: renter proposed a file contract with a too-long duration
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:19982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	badgoes.goip.de:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:29982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	sia.tlightsky.com:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	jnsrd.ddns.net:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	<IP_ADDRESS>:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
	space.siahub.com:9982: wallet has coins spent in incomplete transactions - not enough remaining coins
2017/03/30 12:32:52.998822 formcontract.go:115: Formed contract with badgoes.goip.de:9982 for 6 SC
2017/03/30 12:33:56.717534 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 15 SC
2017/03/30 12:35:02.271860 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 1 SC
2017/03/30 12:36:09.048524 formcontract.go:115: Formed contract with <IP_ADDRESS>:9982 for 14 SC

upload wouldn't work then
Could not upload file: upload failed: not enough contracts to upload file: got 10, needed 20

It usually takes about an hour to form contracts

if i setallowence again,what will happen?

it will keep the contracts you already have and form any new ones that it needs to. It's recommended that you use the same amount and duration as the first setallowance call.

ok, i might do it three time and now all 8KS being unspent fund.
it's more like add allowence rather than setallowence
can i take back some to my wallet

they will be returned once the allowance period ends.
please open a separate issue for the cumulative allowance if it's still a problem.


Migrate to Java 17

Hi mfvanek , can you provide more description regarding it ? Plus i can help you .

@ishu-thakur
Have to update in pom.xml:

maven-enforcer-plugin config
set java.version to 17

Update build.yml.
Update dependencies if need


Native dropdown doesn't function correctly in chrome device emulator

This is probably more of a chrome bug, as it only started happening in the latest update, but maybe there is something you can do to fix it.
This problem only seems to occur when emulating devices in chrome dev tools and using the native dropdown, and does not appear to affect actual mobile devices.
You can see in this image that the dropdown is misaligned, and options are not selectable.

@wgwine looks like an issue in Chrome. This library does almost nothing when native dropdown option is enabled - it simply applies opacity:0 to the original <select> and synchronizes state of fake element when original select changes it's value. It doesn't control the appearance and behavior of native dropdown.
What Chrome version are you using and what is your OS?

Chrome Version 53.0.2785.143 m (64-bit)
Windows 10 version 1511
It's definitely a chrome thing though. I just reproduced it on a vanilla select.
http://i.imgur.com/J7FbX3E.png
Maybe they will fix it eventually.


Added additional patches for Kubernetes v1.21

Issue #, if available:
Description of changes:

Combined the SDK patches into one patch (after updating it again)
Added two new patches

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/approve


Cache model loading in model card

Follow up to #96 and #205.
The _load_model function
https://github.com/skops-dev/skops/blob/30ddea7015ac67df3f950da88f32fb035f9332d2/skops/card/_model_card.py#L168-L205
is currently called each time when the model of a card is accessed, e.g. when repr is called. When the model is a path, it has to be loaded each time, which can be expensive. Therefore, we would like to add a cache to _load_model.
A simple functools.{lru_cache,cache} is, however, not sufficient. This is because the argument, in this case the model path, could remain the same while the model on the drive is overwritten by a new model. The cache key would need to be something else, like the md5 sum of the file that the path points to.

Hi! I would like to help here. If we were to use the md5 sum of the file that the path points to, then we would have to calculate the md5 sum every time that _load_model is called ?

then we would have to calculate the md5 sum every time that _load_model is called ?

Each time when the function is called with a str or Path argument, yes.
I would assume that calculating the md5 should be really fast, but ideally that could be measured before we change the code.

Actually it's better to use the md5 sum of the model file rather than loading the model file all the time anyways

Actually, it's better to use the md5 sum of the model file rather than loading the model file all the time anyways. I could start a PR on this issue.

Well, if loading the file takes 100 ms and calculating the md5 takes 99 ms, arguably it's better to just always load the file. That's why we should measure, just to be sure.
Instead of md5, we could also consider storing and checking the time the file was last modified using getmtime. Maybe there is some precedence for what the best approach would be.

Okay, I understand. Although, I think that getmtime could make us reload the model file because its modification time changed, but the content of the model file could still be the same, in that case we could compute the hash of file to double check. But again, supposing that hashing with md5 sum is very fast.
Maybe we can use some metadata of the model to check whether it was changed or not.

Thanks for clarifying. I think I could do some testing on the loading times and the md5 hash of a model file, and give some feedback on how they compare?

Sure.

Sorry I haven't posted a response to what I said I would test. I will give a response in the next 2-3 days :)

Hey! I have some results to share with you.
I have tested loading times and the time taken to compute the md5sum of the pickle file of the model with some examples. I have used two models to do that. The first model I have used is from examples/plot_model_card.py which uses sklearn.ensemble.HistGradientBoostingClassifier, and the other model I used is sklearn.ensemble.ExtraTreesClassifier. Here are the results:
Example 1 - sklearn.ensemble.HistGradientBoostingClassifier
Model size = 228K
time md5sum /tmp/skops-_gor4zib/skops-4e68jjra.pkl
3e58bbfade12f97a9bf1e989ed8ab151  /tmp/skops-_gor4zib/skops-4e68jjra.pkl
real	0m0.003s

Time of _load_model()
0.006422758102416992s

Example 2 - sklearn.ensemble.ExtraTreesClassifier with n_estimators=10000 - number of trees in the forest
Model size = 75M
time md5sum /tmp/skops-gdzd4gj2/skops-456h4_5e.pkl
ada4e1ea1fda4a72cfa52ebf6458c557  /tmp/skops-gdzd4gj2/skops-456h4_5e.pkl
real	0m0.097s

Time of _load_model()
0.9678699970245361s

Example 3 - sklearn.ensemble.ExtraTreesClassifier with n_estimators=100000 - number of trees in the forest
Model size = 749M
time md5sum /tmp/skops-8k741m3s/skops-x3d6hy5w.pkl
e693e402475155f07ae13a56dbb82b12  /tmp/skops-8k741m3s/skops-x3d6hy5w.pkl
real	0m0.944s

Time of _load_model()
8.120674848556519s

Thanks a lot for doing the tests. A first conclusion would be that for small models, calling the hashing function is actually as slow as loading the models, only for big models would we notice a difference. But it can still be quite significant, as shown in your last example.
For this test, could you please check what the times would be when calling the hashing functions from Python using hashlib? I would expect that it adds a bit of an overhead. Also, just in case we require a more secure hashing function, could you please check both md5 and, say, sha256? And maybe run the tests a few times using timeit (or %timeit in case you're using ipython/jupyter).

I measured the times with the timeit python module. Here are three sets of results:
Test 1
Model 1 (228K) /tmp/skops-_gor4zib/skops-4e68jjra.pkl md5 time=0.0003169089904986322s
Model 2 (75M) /tmp/skops-gdzd4gj2/skops-456h4_5e.pkl md5 time=0.11238793900702149s
Model 3 (749M) /tmp/skops-8k741m3s/skops-x3d6hy5w.pkl md5 time=1.088716946018394s
Model 1 (228K) /tmp/skops-_gor4zib/skops-4e68jjra.pkl sha256 time=0.00016041501658037305s
Model 2 (75M) /tmp/skops-gdzd4gj2/skops-456h4_5e.pkl sha256 time=0.06882680201670155s
Model 3 (749M) /tmp/skops-8k741m3s/skops-x3d6hy5w.pkl sha256 time=0.6861052309977822s

Test 2
Model 1 (228K) /tmp/skops-_gor4zib/skops-4e68jjra.pkl md5 time=0.0002976770047098398s
Model 2 (75M) /tmp/skops-gdzd4gj2/skops-456h4_5e.pkl md5 time=0.11226405500201508s
Model 3 (749M) /tmp/skops-8k741m3s/skops-x3d6hy5w.pkl md5 time=1.101641189015936s
Model 1 (228K) /tmp/skops-_gor4zib/skops-4e68jjra.pkl sha256 time=0.0003235790063627064s
Model 2 (75M) /tmp/skops-gdzd4gj2/skops-456h4_5e.pkl sha256 time=0.07127582101384178s
Model 3 (749M) /tmp/skops-8k741m3s/skops-x3d6hy5w.pkl sha256 time=0.6806159189436585s

Test 3
Model 1 (228K) /tmp/skops-_gor4zib/skops-4e68jjra.pkl md5 time=0.0009365510195493698s
Model 2 (75M) /tmp/skops-gdzd4gj2/skops-456h4_5e.pkl md5 time=0.1162097500055097s
Model 3 (749M) /tmp/skops-8k741m3s/skops-x3d6hy5w.pkl md5 time=1.1024849910172634s
Model 1 (228K) /tmp/skops-_gor4zib/skops-4e68jjra.pkl sha256 time=0.0003798969555646181s
Model 2 (75M) /tmp/skops-gdzd4gj2/skops-456h4_5e.pkl sha256 time=0.06875280395615846s
Model 3 (749M) /tmp/skops-8k741m3s/skops-x3d6hy5w.pkl sha256 time=0.6962733599939384s

It looks like sha256 is faster than md5 from these tests. Let me know if you want me to share the code snippet that I've used.

So I assume the 3 tested models are the same as in your previous post.
If so, do I interpret the data correctly that calling md5 from Python (2nd comment) on the small model is 10x faster (0.0003 sec) than calling it from the command line (1st comment, 0.003 sec)? That's strange. But for the other models, there is no big difference, so I guess we can ignore this outlier.
Anyway, overall it seems like sha256 is the better choice and is consistently faster than actually loading the model, especially for larger models. Then I think it's safe to say we should go ahead and implement the caching.

Yes, your assumption is correct.
I didn't spot that outlier, I tested again from the command line and it gives me the same result.
Okay, then I will open a PR to implement the caching! :)

I just learned about cached_property, which was introduced in Python 3.8. Since we dropped 3.7, maybe this could be an option to use for us.

I think that we wouldn't be able to use cached_property here because it's only applicable to methods

I opened a PR #299 that implements the functionality discussed. However, there's a small problem. I worked on a previous PR #207 which is supposed to be merged, but I worked on this PR in the main branch of my fork (my mistake). Therefore, I had to branch off from main to implement cache model loading and now all my previous commits are attached to #299. I'm sorry if that's an issue.


Open Source In Business

I added the video script and presentation slide for Open Source In Business course

@peculiaruc Please review, thanks

Thanks a lot for this PR. Review is ongoing


PR: Add an option to run a file in the console's current namespace

Description of Changes

[ ] Wrote at least one-line docstrings (for any new functions)
[ ] Added unit test(s) covering the changes (if testable)

[x] Included a screenshot or animation (if affecting the UI, see Licecap)

This allows running a file in the current namespace of the IPython console. This is necessary to work around the new default of running files in a new namespace and appending the results into the current console. See https://github.com/spyder-ide/spyder-kernels/pull/131

Issue(s) Resolved

Related to #4180
Affirmation
By submitting this Pull Request or typing my (user)name below,
I affirm the Developer Certificate of Origin
with respect to all commits and content included in this PR,
and understand I am releasing the same under Spyder's MIT (Expat) license.

I certify the above statement is true and correct: bcolsen

Hello @bcolsen! Thanks for opening this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file spyder/preferences/runconfig.py:

Line 94:33: E128 continuation line under-indented for visual indent
Line 519:13: E128 continuation line under-indented for visual indent

@bcolsen, please merge with master to get the fix for CircleCI.

Note: The failure in Azure is unrelated to this.


update API schema 10-13-2020

Closes #49

Hmm I was actually looking for a change to this struct:
type Archive struct {
	Checksum  string    `json:"checksum" url:"checksum,key"`     // checksum for the archive
	CreatedAt time.Time `json:"created_at" url:"created_at,key"` // when archive was created
	Month     int       `json:"month" url:"month,key"`           // month of the archive
	Size      int       `json:"size" url:"size,key"`             // size of the archive in bytes
	URL       string    `json:"url" url:"url,key"`               // url where to download the archive
	Year      int       `json:"year" url:"year,key"`             // year of the archive
}

Archive.Month is a string not int in the API response:
{
    "year": 2020,
    "month": "10",
    "created_at": "2020-10-12T00:01:30.014Z",
    "url": "SOME_URL",
    "checksum": "SOME_CHECKSUM",
    "size": 123456
}

@bernerdschaefer It seems the API schema is still incorrect:
                "month": {
                    "description": "month of the archive",
                    "example": 10,
                    "readOnly": true,
                    "minimum": 1,
                    "maximum": 12,
                    "type": [
                        "integer"
                    ]
                },

Should month be a string or integer?


If NODE_PATH is set files#resolveModule might result in wrong module resolution

For the details see: https://github.com/Microsoft/vscode-eslint/issues/13


Support expressing clear_empty as configuration

Currently, clear_empty is used such as:
    let snapshot = Snapshot::builder(world)
        .extract_all()
        // Prevent serialization bloat by removing entities with no saveable components
        .clear_empty()
        .build();

This requires iterating all extracted entities a second time. For large worlds, this can be non-trivial, even if most of the world's entities are not intended to be saved.
It would be preferable to express the desire to filter on empty through configuration prior to callling extract_all. Something similar to how a deserialize applier can have despawn and mapping configured on it prior to calling apply.

Ah, I realize now I can just call extract_entities with a query that selects the ones I want rather than using clear_empty.


Estimate efficiency for each method

Hi all,
How have you calculated the efficiencies ( steps required to give the given accuracy) for each method. I compared the accuracies taking actual integration as a reference but I am confused what exactly mean the given accuracy to estimate the efficiencies of each method? If any one has completed this part, please share how to work on it?

@pratibha77118 have you figured this out?

Closed for inactivity, but feel free to reopen it


AppImage does not run on Xubuntu 16.04

AppImage does not run on Xubuntu 16.04:
me@host:~$ Downloads/pathephone-desktop-2.0.0-x86_64.AppImage
5750
[6895:0706/182543.967250:FATAL:nss_util.cc(632)] NSS_VersionCheck("3.26") failed. NSS >= 3.26 is required. Please upgrade to the latest NSS, and if you still get this error, contact your distribution maintainer.
Aborted

@probonopd seems like you need to (re)install your libnss3 package like this:
sudo apt-get update
sudo apt-get install libnss3

Check out this thread for more info https://github.com/adieuadieu/serverless-chrome/issues/53. Let us know if something helps.

Thank you very much, this works indeed. But ideally one wouldn't need to install things to run an AppImage.
Is there any way to get around this? Bundling libnss3 doesn't seem to be without its own problems unfortunately.

@probonopd there is an issue opened in electron-builder repo that seems to be related. I'll keep my eye on it.
Anyway, could you remove your libnss3 package again and install a deb package? Just to be confident that at least one option works for your scenario.


❇ 39 - Add the Age Calculator.

This PR added an age calculator using vanilla JS and moment.js library.

Fixed the conflicts. But it's really hard to assume the project number :)

@ahamed Thank you for your contribution. Looking forward to more such amazing contributions 🥂


SOLR-10654: Override PrometheusResponseWriter Content Type

https://issues.apache.org/jira/browse/SOLR-10654

Description
The Prometheus Response Writer response content type was JSON which is incorrect.
Solution
Based on Prometheus docs, override content-type to text/plain; version=0.0.4
Checklist
Please review the following and check all that apply:

[ ] I have reviewed the guidelines for How to Contribute and my code conforms to the standards described there to the best of my ability.
[ ] I have created a Jira issue and added the issue ID to my pull request title.
[ ] I have given Solr maintainers access to contribute to my PR branch. (optional but recommended)
[ ] I have developed this patch against the main branch.
[ ] I have run ./gradlew check.
[ ] I have added tests for my changes.
[ ] I have added documentation for the Reference Guide

Did you at least test manually?  (this is totally adequate)

Did you at least test manually? (this is totally adequate)

Yes, here is the before:
curl -I "localhost:8983/solr/admin/metrics?wt=prometheus"
HTTP/1.1 200 OK
Content-Security-Policy: default-src 'none'; base-uri 'none'; connect-src 'self'; form-action 'self'; font-src 'self'; frame-ancestors 'none'; img-src 'self' data:; media-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'self'; worker-src 'self';
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Content-Type: application/json;charset=utf-8
Content-Length: 0

Here is after:
curl -I "localhost:8983/solr/admin/metrics?wt=prometheus"
HTTP/1.1 200 OK
Content-Security-Policy: default-src 'none'; base-uri 'none'; connect-src 'self'; form-action 'self'; font-src 'self'; frame-ancestors 'none'; img-src 'self' data:; media-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'self'; worker-src 'self';
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Content-Type: text/plain; version=0.0.4
Content-Length: 0